├── .gitignore ├── go.mod ├── README.md ├── common.go ├── SignIn.go ├── SignIn.py └── go.sum /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | main 3 | main.exe 4 | main.zip 5 | venv 6 | -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module HeCaiYun 2 | 3 | go 1.15 4 | 5 | require ( 6 | github.com/guonaihong/gout v0.1.5 7 | github.com/tencentyun/scf-go-lib v0.0.0-20200624065115-ba679e2ec9c9 8 | github.com/wumansgy/goEncrypt v0.0.0-20201114063050-efa0a0601707 9 | ) 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # HeCaiYun 2 | 3 | > 依赖两个参数. `Cookie` 和 `Referer`. 4 | > 测试抓包数据由群 [824187964](https://shang.qq.com/wpa/qunwpa?idkey=2c22cb324dc36e260043185618cbe8763ed63dd5a985ee5e181e20ba2390e78a) 内 `@请回答` (1525417489) 提供. 5 | > 抓包关键字 `caiYunSignIn.action` 6 | 7 | ## 和彩云自动打卡签到云函数(Python版) 8 | 9 | > 位于 SignIn.py 文件中, 修改13/14/15行参数后,拷贝到SCF中即可 10 | 11 | ## 和彩云自动打卡签到云函数(Go语言版) 12 | 13 | 请修改 `SignIn.go` 文件 17/18/19 行. 14 | 15 | > 构建 本地安装golang环境后执行一下命令进行构建 16 | 17 | ### bash 18 | ```bash 19 | GOPROXY=https://goproxy.cn GOOS=linux GOARCH=amd64 go build -o main . 20 | zip main.zip main 21 | ``` 22 | 23 | ### cmd 24 | ```bash 25 | set GOPROXY=https://goproxy.cn 26 | set GOOS=linux 27 | set GOARCH=amd64 28 | go build -o main . 29 | ``` 30 | ### powershell 31 | ```bash 32 | $env:GOPROXY='https://goproxy.cn' 33 | $env:GOOS='linux' 34 | $env:GOARCH='amd64' 35 | go build -o main . 36 | ``` 37 | 38 | 注: 请打包生成的 main 文件为 zip,上传到函数代码处即可 39 | -------------------------------------------------------------------------------- /common.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | type EncryptForm struct { 4 | SourceId int64 `json:"sourceId"` 5 | Type int64 `json:"type"` 6 | EncryptTime int64 `json:"encryptTime"` 7 | } 8 | 9 | type GetEncryptTime struct { 10 | Code int `json:"code"` 11 | Msg string `json:"msg"` 12 | Result int64 `json:"result"` 13 | } 14 | 15 | type SignInResponse struct { 16 | Code int `json:"code"` 17 | Msg string `json:"msg"` 18 | Result struct { 19 | TodaySignIn bool `json:"todaySignIn"` 20 | MonthDays int `json:"monthDays"` 21 | MissionPoints int `json:"missionPoints"` 22 | RepayPoints int `json:"repayPoints"` 23 | BackPoints int `json:"backPoints"` 24 | TotalPoints int `json:"totalPoints"` 25 | Notice int `json:"notice"` 26 | RemindStatus int `json:"remindStatus"` 27 | GoTone bool `json:"goTone"` 28 | PointsExpire bool `json:"pointsExpire"` 29 | } `json:"result"` 30 | } 31 | 32 | type SendResult struct { 33 | Code int64 `json:"code"` 34 | Message string `json:"message"` 35 | Data interface{} `json:"data"` 36 | } 37 | -------------------------------------------------------------------------------- /SignIn.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "encoding/base64" 5 | "encoding/json" 6 | "errors" 7 | "fmt" 8 | "github.com/guonaihong/gout" 9 | "log" 10 | "time" 11 | 12 | "github.com/tencentyun/scf-go-lib/cloudfunction" 13 | "github.com/wumansgy/goEncrypt" 14 | ) 15 | 16 | const ( 17 | Skey = "" //酷推 skey 18 | Cookie = "" //抓包Cookie 19 | Referer = "" //抓包referer 20 | UA = "Mozilla/5.0 (Linux; Android 10; M2007J3SC Build/QKQ1.191222.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36 MCloudApp/7.6.0" 21 | ) 22 | 23 | func push(content string) error { 24 | var resp SendResult 25 | err := gout.POST(fmt.Sprintf("https://push.xuthus.cc/send/%s", Skey)). 26 | SetBody(content).Debug(true).BindJSON(&resp).Do() 27 | 28 | if err != nil { 29 | log.Printf("push err: %v", err) 30 | return err 31 | } 32 | 33 | if resp.Code != 200 { 34 | return errors.New(resp.Message) 35 | } 36 | 37 | return nil 38 | } 39 | 40 | func getEncryptTime() (int64, error) { 41 | var resp GetEncryptTime 42 | err := gout.POST("http://caiyun.feixin.10086.cn:7070/portal/ajax/tools/opRequest.action"). 43 | SetHeader(gout.H{ 44 | "Host": "caiyun.feixin.10086.cn:7070", 45 | "Accept": "*/*", 46 | "X-Requested-With": "XMLHttpRequest", 47 | "User-Agent": UA, 48 | "Content-Type": "application/x-www-form-urlencoded", 49 | "Origin": "http://caiyun.feixin.10086.cn:7070", 50 | "Referer": Referer, 51 | "Accept-Encoding": "gzip, deflate", 52 | "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", 53 | "Cookie": Cookie, 54 | }).Debug(true).SetWWWForm(gout.H{ 55 | "op": "currentTimeMillis", 56 | }).BindJSON(&resp).Do() 57 | if err != nil { 58 | log.Printf("err: %v\n", err) 59 | return 0, errors.New(err.Error()) 60 | } 61 | 62 | if resp.Code != 10000 { 63 | log.Printf("err: %v\n", resp.Msg) 64 | return 0, errors.New(resp.Msg) 65 | } 66 | 67 | return resp.Result, nil 68 | } 69 | 70 | func encryptForm() string { 71 | t, err := getEncryptTime() 72 | if err != nil { 73 | panic(err) 74 | } 75 | 76 | ef, err := json.Marshal(&EncryptForm{ 77 | SourceId: 1003, 78 | Type: 1, 79 | EncryptTime: t, 80 | }) 81 | if err != nil { 82 | panic(err) 83 | } 84 | 85 | var encode = RSAEncrypt(ef) 86 | 87 | return base64.StdEncoding.EncodeToString(encode) 88 | } 89 | 90 | func signIn() (*SignInResponse, error) { 91 | var resp SignInResponse 92 | err := gout.POST("http://caiyun.feixin.10086.cn:7070/portal/ajax/common/caiYunSignIn.action"). 93 | SetHeader(gout.H{ 94 | "Host": "caiyun.feixin.10086.cn:7070", 95 | "Accept": "*/*", 96 | "X-Requested-With": "XMLHttpRequest", 97 | "User-Agent": UA, 98 | "Content-Type": "application/x-www-form-urlencoded", 99 | "Origin": "http://caiyun.feixin.10086.cn:7070", 100 | "Referer": Referer, 101 | "Accept-Encoding": "gzip, deflate", 102 | "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", 103 | "Cookie": Cookie, 104 | }).Debug(true).SetWWWForm(gout.H{ 105 | "op": "receive", 106 | "data": encryptForm(), 107 | }).BindJSON(&resp).Do() 108 | if err != nil { 109 | log.Printf("err: %v\n", err) 110 | return nil, errors.New(err.Error()) 111 | } 112 | 113 | if resp.Code != 10000 { 114 | log.Printf("err: %v\n", resp.Msg) 115 | return nil, errors.New(resp.Msg) 116 | } 117 | 118 | return &resp, err 119 | } 120 | 121 | func RSAEncrypt(plainText []byte) []byte { 122 | var publicKey = []byte(`-----BEGIN PUBLIC KEY----- 123 | MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCJ6kiv4v8ZcbDiMmyTKvGzxoPR3fTLj/uRuu6dUypy6zDW+EerThAYON172YigluzKslU1PD9+PzPPHLU/cv81q6KYdT+B5w29hlKkk5tNR0PcCAM/aRUQZu9abnl2aAFQow576BRvIS460urnju+Bu1ZtV+oFM+yQu04OSnmOpwIDAQAB 124 | -----END PUBLIC KEY-----`) 125 | //对明文进行加密 126 | cipherText, err := goEncrypt.RsaEncrypt(plainText, publicKey) 127 | if err != nil { 128 | panic(err) 129 | } 130 | //返回密文 131 | return cipherText 132 | } 133 | 134 | func run() (string, error) { 135 | fmt.Println(time.Now().String(), " 任务执行开始!") 136 | 137 | var content string 138 | resp, err := signIn() 139 | 140 | if err != nil { 141 | log.Printf("签到失败: %v", err) 142 | content = "今日和彩云签到情况: " + err.Error() 143 | goto Push 144 | } 145 | 146 | if resp.Result.TodaySignIn { 147 | content = fmt.Sprintf("和彩云签到情况: 成功\n月签到天数: %d\n总积分: %d", 148 | resp.Result.MonthDays, resp.Result.TotalPoints) 149 | } 150 | 151 | Push: 152 | if err = push(content); err != nil { 153 | log.Println("签到结果: ", content) 154 | } else { 155 | log.Println("ok") 156 | } 157 | 158 | return time.Now().String() + "任务处理完毕!", nil 159 | } 160 | 161 | func main() { 162 | cloudfunction.Start(run) 163 | } 164 | -------------------------------------------------------------------------------- /SignIn.py: -------------------------------------------------------------------------------- 1 | # -*- coding: UTF-8 -*- 2 | # Desc: 和彩云自动打卡签到 gen: SCF-GENERATE 3 | # Time: 2020/02/20 12:53:28 4 | # Auth: xuthus 5 | # SIG: QQ Group(824187964) 6 | 7 | import json 8 | from urllib import parse 9 | 10 | import requests 11 | 12 | OpenLuckDraw = False # 是否开启自动幸运抽奖(首次免费, 第二次5积分/次) 不建议开启 否则会导致多次执行时消耗积分 13 | Skey = "" # 酷推 skey 14 | Cookie = "" # 抓包Cookie 存在引号时 请使用 \ 转义 15 | Referer = "" # 抓包referer 16 | UA = "Mozilla/5.0 (Linux; Android 10; M2007J3SC Build/QKQ1.191222.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36 MCloudApp/7.6.0" 17 | 18 | 19 | def push(title, content): 20 | url = "https://push.xuthus.cc/send/" + Skey 21 | data = title + "\n" + content 22 | # 发送请求 23 | res = requests.post(url=url, data=data.encode('utf-8')).text 24 | # 输出发送结果 25 | print(res) 26 | 27 | 28 | def getEncryptTime(): 29 | target = "http://caiyun.feixin.10086.cn:7070/portal/ajax/tools/opRequest.action" 30 | headers = { 31 | "Host": "caiyun.feixin.10086.cn:7070", 32 | "Accept": "*/*", 33 | "X-Requested-With": "XMLHttpRequest", 34 | "User-Agent": UA, 35 | "Content-Type": "application/x-www-form-urlencoded", 36 | "Origin": "http://caiyun.feixin.10086.cn:7070", 37 | "Referer": Referer, 38 | "Accept-Encoding": "gzip, deflate", 39 | "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", 40 | "Cookie": Cookie, 41 | } 42 | payload = parse.urlencode({ 43 | "op": "currentTimeMillis" 44 | }) 45 | resp = json.loads(requests.post(target, headers=headers, data=payload).text) 46 | if resp['code'] != 10000: 47 | print('获取时间戳失败: ', resp['msg']) 48 | return 0 49 | return resp['result'] 50 | 51 | 52 | def getTicket(): 53 | target = "https://hecaiyun.vercel.app/api/10086_calc_sign" 54 | payload = { 55 | "sourceId": 1003, 56 | "type": 1, 57 | "encryptTime": getEncryptTime() 58 | } 59 | resp = json.loads(requests.post(target, data=payload).text) 60 | if resp['code'] != 200: 61 | print('加密失败: ', resp['msg']) 62 | return resp['data'] 63 | 64 | 65 | def luckDraw(): 66 | target = "http://caiyun.feixin.10086.cn:7070/portal/ajax/common/caiYunSignIn.action" 67 | headers = { 68 | "Host": "caiyun.feixin.10086.cn:7070", 69 | "Accept": "*/*", 70 | "X-Requested-With": "XMLHttpRequest", 71 | "User-Agent": UA, 72 | "Content-Type": "application/x-www-form-urlencoded", 73 | "Origin": "http://caiyun.feixin.10086.cn:7070", 74 | "Referer": Referer, 75 | "Accept-Encoding": "gzip, deflate", 76 | "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", 77 | "Cookie": Cookie, 78 | } 79 | payload = parse.urlencode({ 80 | "op": "luckDraw", 81 | "data": getTicket() 82 | }) 83 | 84 | resp = json.loads(requests.post(target, headers=headers, data=payload).text) 85 | 86 | if resp['code'] != 10000: 87 | print('自动抽奖失败: ', resp['msg']) 88 | return '自动抽奖失败: ' + resp['msg'] 89 | else: 90 | if resp['result']['type'] == '40160': 91 | return '自动抽奖成功: 小狗电器小型手持床铺除螨仪' 92 | elif resp['result']['type'] == '40175': 93 | return '自动抽奖成功: 飞科男士剃须刀' 94 | elif resp['result']['type'] == '40120': 95 | return '自动抽奖成功: 京东京造电动牙刷' 96 | elif resp['result']['type'] == '40140': 97 | return '自动抽奖成功: 10-100M随机长期存储空间' 98 | elif resp['result']['type'] == '40165': 99 | return '自动抽奖成功: 夏新蓝牙耳机' 100 | elif resp['result']['type'] == '40170': 101 | return '自动抽奖成功: 欧莱雅葡萄籽护肤套餐' 102 | else: 103 | return '自动抽奖成功: 谢谢参与' 104 | 105 | 106 | def run(): 107 | target = "http://caiyun.feixin.10086.cn:7070/portal/ajax/common/caiYunSignIn.action" 108 | headers = { 109 | "Host": "caiyun.feixin.10086.cn:7070", 110 | "Accept": "*/*", 111 | "X-Requested-With": "XMLHttpRequest", 112 | "User-Agent": UA, 113 | "Content-Type": "application/x-www-form-urlencoded", 114 | "Origin": "http://caiyun.feixin.10086.cn:7070", 115 | "Referer": Referer, 116 | "Accept-Encoding": "gzip, deflate", 117 | "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", 118 | "Cookie": Cookie, 119 | } 120 | 121 | ticket = getTicket() 122 | payload = parse.urlencode({ 123 | "op": "receive", 124 | "data": ticket, 125 | }) 126 | 127 | resp = json.loads(requests.post(target, headers=headers, data=payload).text) 128 | if resp['code'] != 10000: 129 | push('和彩云签到', '失败:' + resp['msg']) 130 | else: 131 | content = '签到成功\n月签到天数:' + str(resp['result']['monthDays']) + '\n总积分:' + str( 132 | resp['result']['totalPoints']) 133 | if OpenLuckDraw: 134 | content += '\n\n' + luckDraw() 135 | push('和彩云签到', content) 136 | 137 | 138 | def main_handler(event, context): 139 | run() 140 | 141 | 142 | # 本地测试 143 | if __name__ == '__main__': 144 | run() 145 | -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- 1 | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 2 | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= 3 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 4 | github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= 5 | github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= 6 | github.com/gin-gonic/gin v1.6.0 h1:Lb3veSYoGaNck69fV2+Vf2juLSsHpMTf3Vk5+X+EDJg= 7 | github.com/gin-gonic/gin v1.6.0/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= 8 | github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= 9 | github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= 10 | github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= 11 | github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= 12 | github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= 13 | github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= 14 | github.com/go-playground/validator/v10 v10.2.0 h1:KgJ0snyC2R9VXYN2rneOtQcw5aHQB1Vv0sFl1UcHBOY= 15 | github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= 16 | github.com/golang/protobuf v1.3.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I= 17 | github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= 18 | github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= 19 | github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= 20 | github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 21 | github.com/guonaihong/gout v0.1.5 h1:1FeFFJWWdWYApBW9d6vzMDB4eR4Zr8T/gaVrjDVcl5U= 22 | github.com/guonaihong/gout v0.1.5/go.mod h1:0rFYAYyzbcxEg11eY2qUbffJs7hHRPeugAnlVYSp8Ic= 23 | github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns= 24 | github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= 25 | github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= 26 | github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= 27 | github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= 28 | github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= 29 | github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= 30 | github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= 31 | github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 h1:Esafd1046DLDQ0W1YjYsBW+p8U2u7vzgW2SQVmlNazg= 32 | github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= 33 | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= 34 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 35 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 36 | github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= 37 | github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= 38 | github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= 39 | github.com/tencentyun/scf-go-lib v0.0.0-20200624065115-ba679e2ec9c9 h1:JdeXp/XPi7lBmpQNSUxElMAvwppMlFSiamTtXYRFuUc= 40 | github.com/tencentyun/scf-go-lib v0.0.0-20200624065115-ba679e2ec9c9/go.mod h1:K3DbqPpP2WE/9MWokWWzgFZcbgtMb9Wd5CYk9AAbEN8= 41 | github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= 42 | github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= 43 | github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= 44 | github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= 45 | github.com/wumansgy/goEncrypt v0.0.0-20201114063050-efa0a0601707 h1:9FS8huksdSckw9evgVXb060kZS2mZ6uwjbbtV6JGZDM= 46 | github.com/wumansgy/goEncrypt v0.0.0-20201114063050-efa0a0601707/go.mod h1:d0Tq90dl4xqZEiphQ7dAVEPxcefmY2hSiATq3BfgsVY= 47 | golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 48 | golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa h1:F+8P+gmewFQYRk6JoLQLwjBCTu3mcIURZfNkVweuRKA= 49 | golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 50 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 51 | golang.org/x/sys v0.0.0-20200116001909-b77594299b42 h1:vEOn+mP2zCOVzKckCZy6YsCtDblrpj/w7B9nxGNELpg= 52 | golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 53 | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 54 | golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= 55 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 56 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= 57 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 58 | gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 59 | gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= 60 | gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 61 | --------------------------------------------------------------------------------