diff --git a/golang_learn/data_func/go_to_colly/demo01.go b/golang_learn/data_func/go_to_colly/demo01.go new file mode 100644 index 0000000..de4d507 --- /dev/null +++ b/golang_learn/data_func/go_to_colly/demo01.go @@ -0,0 +1,23 @@ +package main + +import ( + "fmt" + "github.com/gocolly/colly" +) + +func main() { + // 使用默认设置创建收集器: + c := colly.NewCollector() + + // Find and visit all links + c.OnHTML("a[href]", func(e *colly.HTMLElement) { + e.Request.Visit(e.Attr("href")) + }) + + c.OnRequest(func(r *colly.Request) { + fmt.Println("Visiting", r.URL) + fmt.Println("HTML", r.Body) + }) + + c.Visit("https://www.viviman.top/") +} diff --git a/golang_learn/data_func/go_to_colly/demo02.go b/golang_learn/data_func/go_to_colly/demo02.go new file mode 100644 index 0000000..fbac071 --- /dev/null +++ b/golang_learn/data_func/go_to_colly/demo02.go @@ -0,0 +1,33 @@ +package main + +import ( + "fmt" + + "github.com/gocolly/colly" +) + +func main() { + // 实例化默认收集器 + c := colly.NewCollector( + // Visit only domains: hackerspaces.org, wiki.hackerspaces.org + colly.AllowedDomains("hackerspaces.org", "wiki.hackerspaces.org"), + ) + + // On every a element which has href attribute call callback + c.OnHTML("a[href]", func(e *colly.HTMLElement) { + link := e.Attr("href") + // Print link + fmt.Printf("Link found: %q -> %s\n", e.Text, link) + // Visit link found on page + // Only those links are visited which are in AllowedDomains + c.Visit(e.Request.AbsoluteURL(link)) + }) + + // Before making a request print "Visiting ..." + c.OnRequest(func(r *colly.Request) { + fmt.Println("Visiting", r.URL.String()) + }) + + // Start scraping on https://hackerspaces.org + c.Visit("https://hackerspaces.org/") +} diff --git a/golang_learn/data_func/go_to_colly/demo03.go b/golang_learn/data_func/go_to_colly/demo03.go new file mode 100644 index 0000000..7ac9d8f --- /dev/null +++ b/golang_learn/data_func/go_to_colly/demo03.go @@ -0,0 +1,26 @@ +package main + +import ( + "fmt" + + "github.com/gocolly/colly" +) + +func main() { + // Create a collector + c := colly.NewCollector() + + // Set HTML callback + // Won't be called if error occurs + c.OnHTML("*", func(e *colly.HTMLElement) { + fmt.Println(e) + }) + + // Set error handler + c.OnError(func(r *colly.Response, err error) { + fmt.Println("Request URL:", r.Request.URL, "failed with response:", r, "\nError:", err) + }) + + // Start scraping + c.Visit("https://definitely-not-a.website/") +} diff --git a/golang_learn/data_func/go_to_colly/demo04.go b/golang_learn/data_func/go_to_colly/demo04.go new file mode 100644 index 0000000..eeadeba --- /dev/null +++ b/golang_learn/data_func/go_to_colly/demo04.go @@ -0,0 +1,26 @@ +package main + +import ( + "log" + + "github.com/gocolly/colly" +) + +func main() { + // create a new collector + c := colly.NewCollector() + + // authenticate + err := c.Post("http://example.com/login", map[string]string{"username": "admin", "password": "admin"}) + if err != nil { + log.Fatal(err) + } + + // attach callbacks after login + c.OnResponse(func(r *colly.Response) { + log.Println("response received", r.StatusCode) + }) + + // start scraping + c.Visit("https://example.com/") +} diff --git a/golang_learn/data_func/go_to_colly/demo05.go b/golang_learn/data_func/go_to_colly/demo05.go new file mode 100644 index 0000000..cc3941c --- /dev/null +++ b/golang_learn/data_func/go_to_colly/demo05.go @@ -0,0 +1,31 @@ +package main + +import ( + "fmt" + + "github.com/gocolly/colly" +) + +/* +Max depth 最大深度 +*/ +func main() { + // 实例化默认收集器 + c := colly.NewCollector( + // MaxDepth is 1, so only the links on the scraped page + // is visited, and no further links are followed + colly.MaxDepth(1), + ) + + // On every a element which has href attribute call callback + c.OnHTML("a[href]", func(e *colly.HTMLElement) { + link := e.Attr("href") + // Print link + fmt.Println(link) + // Visit link found on page + e.Request.Visit(link) + }) + + // Start scraping on https://en.wikipedia.org + c.Visit("https://en.wikipedia.org/") +} diff --git a/golang_learn/data_likou/三数之和.go b/golang_learn/data_likou/三数之和.go new file mode 100644 index 0000000..47eadef --- /dev/null +++ b/golang_learn/data_likou/三数之和.go @@ -0,0 +1,64 @@ +package main + +import "fmt" + +func main() { + nums := []int{-1, 0, 1, 2, -1, -4} + fmt.Printf("打印结构体指针数组1:%v \n", threeSum(nums)) + /*nums = []int{0,1,1} + fmt.Printf("打印结构体指针数组1:%v \n", threeSum(nums)) + nums = []int{0,0,0} + fmt.Printf("打印结构体指针数组1:%v \n", threeSum(nums)) + nums = []int{3,0,-2,-1,1,2} + fmt.Printf("打印结构体指针数组1:%v \n", threeSum(nums)) + nums = []int{-1,0,1,2,-1,-4,-2,-3,3,0,4} + fmt.Printf("打印结构体指针数组1:%v \n", threeSum(nums))*/ +} + +/** +给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请 + +你返回所有和为 0 且不重复的三元组。 + +注意:答案中不可以包含重复的三元组。 + +*/ + +func threeSum(nums []int) [][]int { + var arr [][]int + l := len(nums) + if l < 3 { + return arr + } + if l == 3 && nums[0]+nums[1]+nums[2] == 0 { + return append(arr, []int{nums[0], nums[1], nums[2]}) + } + +a: + for i := 0; i < l; i++ { + for j := 0; j < l && j != i; j++ { + for k := 0; k < l && k != j; k++ { + if nums[i]+nums[j]+nums[k] == 0 { + for _, ints := range arr { + if (ints[0] == i && ints[1] == j && ints[2] == k) || + (ints[0] == i && ints[2] == j && ints[1] == k) || + (ints[1] == i && ints[2] == j && ints[0] == k) || + (ints[1] == i && ints[0] == j && ints[2] == k) || + (ints[2] == i && ints[0] == j && ints[1] == k) || + (ints[2] == i && ints[1] == j && ints[0] == k) { + continue a + } + } + arr = append(arr, []int{i, j, k, nums[i], nums[j], nums[k]}) + } + } + } + } + + arr2 := arr + for i, ints := range arr2 { + arr2[i] = ints[3:] + } + + return arr2 +} diff --git a/golang_learn/data_likou/商品折扣后的最终价格.go b/golang_learn/data_likou/商品折扣后的最终价格.go new file mode 100644 index 0000000..e13bc86 --- /dev/null +++ b/golang_learn/data_likou/商品折扣后的最终价格.go @@ -0,0 +1,36 @@ +package main + +import ( + "fmt" +) + +func main() { + prices := []int{8, 4, 6, 2, 3} + fmt.Printf("打印结构体指针数组1:%v \n", finalPrices(prices)) + prices = []int{1, 2, 3, 4, 5} + fmt.Printf("打印结构体指针数组2:%v \n", finalPrices(prices)) + prices = []int{10, 1, 1, 6} + fmt.Printf("打印结构体指针数组3:%v ", finalPrices(prices)) +} + +/* +给你一个数组 prices ,其中 prices[i] 是商店里第 i 件商品的价格。 + +商店里正在进行促销活动,如果你要买第 i 件商品,那么你可以得到与 prices[j] 相等的折扣,其中 j 是满足 j > i 且 prices[j] <= prices[i] 的 最小下标 ,如果没有满足条件的 j ,你将没有任何折扣。 + +请你返回一个数组,数组中第 i 个元素是折扣后你购买商品 i 最终需要支付的价格。 +*/ + +func finalPrices(prices []int) []int { + arr := prices +a: + for i, l := 0, len(prices); i < l; i++ { + for j := i + 1; j < l; j++ { + if prices[j] <= prices[i] { + arr[i] = prices[i] - prices[j] + continue a + } + } + } + return arr +} diff --git a/golang_learn/go.mod b/golang_learn/go.mod index 9641064..6bb332a 100644 --- a/golang_learn/go.mod +++ b/golang_learn/go.mod @@ -8,6 +8,8 @@ require ( github.com/360EntSecGroup-Skylar/excelize v1.4.1 github.com/PuerkitoBio/goquery v1.7.1 github.com/andlabs/ui v0.0.0-20200610043537-70a69d6ae31e + github.com/antchfx/htmlquery v1.2.5 // indirect + github.com/antchfx/xmlquery v1.3.12 // indirect github.com/astaxie/beego v1.12.3 github.com/axgle/mahonia v0.0.0-20180208002826-3358181d7394 github.com/bitly/go-simplejson v0.5.0 @@ -15,12 +17,15 @@ require ( github.com/braintree/manners v0.0.0-20160418043613-82a8879fc5fd github.com/go-ini/ini v1.62.0 github.com/go-sql-driver/mysql v1.6.0 + github.com/gobwas/glob v0.2.3 // indirect + github.com/gocolly/colly v1.2.0 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b github.com/google/martian v2.1.0+incompatible github.com/google/uuid v1.1.2 github.com/joho/godotenv v1.3.0 github.com/kardianos/service v1.2.0 github.com/kbinani/screenshot v0.0.0-20210720154843-7d3a670d8329 + github.com/kennygrant/sanitize v1.2.4 // indirect github.com/kr/pretty v0.3.0 // indirect github.com/lxn/walk v0.0.0-20210112085537-c389da54e794 github.com/lxn/win v0.0.0-20210218163916-a377121e959e @@ -33,8 +38,10 @@ require ( github.com/riftbit/go-systray v1.0.2 github.com/robfig/cron/v3 v3.0.1 github.com/russross/blackfriday v1.6.0 + github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca // indirect github.com/shirou/gopsutil v2.20.4+incompatible github.com/spf13/viper v1.8.1 + github.com/temoto/robotstxt v1.1.2 // indirect github.com/tidwall/gjson v1.13.0 github.com/tidwall/sjson v1.2.4 github.com/xuri/excelize/v2 v2.5.0 @@ -43,7 +50,7 @@ require ( golang.org/x/exp/errors v0.0.0-20210715201039-d37aa40e8013 golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e - golang.org/x/text v0.3.6 + golang.org/x/text v0.3.7 gopkg.in/Knetic/govaluate.v3 v3.0.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v2 v2.4.0 diff --git a/golang_learn/go.sum b/golang_learn/go.sum index 801e957..7c80e07 100644 --- a/golang_learn/go.sum +++ b/golang_learn/go.sum @@ -62,6 +62,12 @@ github.com/andlabs/ui v0.0.0-20200610043537-70a69d6ae31e h1:wSQCJiig/QkoUnpvelSP github.com/andlabs/ui v0.0.0-20200610043537-70a69d6ae31e/go.mod h1:5G2EjwzgZUPnnReoKvPWVneT8APYbyKkihDVAHUi0II= github.com/andybalholm/cascadia v1.2.0 h1:vuRCkM5Ozh/BfmsaTm26kbjm0mIOM3yS5Ek/F5h18aE= github.com/andybalholm/cascadia v1.2.0/go.mod h1:YCyR8vOZT9aZ1CHEd8ap0gMVm2aFgxBp0T0eFw1RUQY= +github.com/antchfx/htmlquery v1.2.5 h1:1lXnx46/1wtv1E/kzmH8vrfMuUKYgkdDBA9pIdMJnk4= +github.com/antchfx/htmlquery v1.2.5/go.mod h1:2MCVBzYVafPBmKbrmwB9F5xdd+IEgRY61ci2oOsOQVw= +github.com/antchfx/xmlquery v1.3.12 h1:6TMGpdjpO/P8VhjnaYPXuqT3qyJ/VsqoyNTmJzNBTQ4= +github.com/antchfx/xmlquery v1.3.12/go.mod h1:3w2RvQvTz+DaT5fSgsELkSJcdNgkmg6vuXDEuhdwsPQ= +github.com/antchfx/xpath v1.2.1 h1:qhp4EW6aCOVr5XIkT+l6LJ9ck/JsUH/yyauNgTQkBF8= +github.com/antchfx/xpath v1.2.1/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= @@ -156,6 +162,10 @@ github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LB github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/gocolly/colly v1.2.0 h1:qRz9YAn8FIH0qzgNUw+HT9UN7wm1oF9OBAilwEWpyrI= +github.com/gocolly/colly v1.2.0/go.mod h1:Hof5T3ZswNVsOHYmba1u03W65HDWgpV5HifSuueE0EA= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4 h1:9349emZab16e7zQvpmsbtjc18ykshndd8y2PG3sgJbA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -167,6 +177,7 @@ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekf github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= @@ -279,6 +290,8 @@ github.com/kardianos/service v1.2.0 h1:bGuZ/epo3vrt8IPC7mnKQolqFeYJb7Cs8Rk4PSOBB github.com/kardianos/service v1.2.0/go.mod h1:CIMRFEJVL+0DS1a3Nx06NaMn4Dz63Ng6O7dl0qH0zVM= github.com/kbinani/screenshot v0.0.0-20210720154843-7d3a670d8329 h1:qq2nCpSrXrmvDGRxW0ruW9BVEV1CN2a9YDOExdt+U0o= github.com/kbinani/screenshot v0.0.0-20210720154843-7d3a670d8329/go.mod h1:2VPVQDR4wO7KXHwP+DAypEy67rXf+okUx2zjgpCxZw4= +github.com/kennygrant/sanitize v1.2.4 h1:gN25/otpP5vAsO2djbMhF/LQX6R7+O1TB4yv8NzpJ3o= +github.com/kennygrant/sanitize v1.2.4/go.mod h1:LGsjYYtgxbetdg5owWB2mpgUL6e2nfw2eObZ0u0qvak= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -387,6 +400,8 @@ github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3V github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca h1:NugYot0LIVPxTvN8n+Kvkn6TrbMyxQiuvKdEwFdR9vI= +github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca/go.mod h1:uugorj2VCxiV1x+LzaIdVa9b4S4qGAcH6cbhh4qVxOU= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 h1:X+yvsM2yrEktyI+b2qND5gpH8YhURn0k8OCaeRnkINo= github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644/go.mod h1:nkxAfR/5quYxwPZhyDxgasBMnRtBZd0FCEpawpjMUFg= @@ -433,6 +448,8 @@ github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/syndtr/goleveldb v0.0.0-20160425020131-cfa635847112/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0= github.com/syndtr/goleveldb v0.0.0-20181127023241-353a9fca669c/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0= +github.com/temoto/robotstxt v1.1.2 h1:W2pOjSJ6SWvldyEuiFXNxz3xZ8aiWX5LbfDiOFd7Fxg= +github.com/temoto/robotstxt v1.1.2/go.mod h1:+1AmkuG3IYkh1kv0d2qEB9Le88ehNO0zwOr3ujewlOo= github.com/tidwall/gjson v1.12.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.13.0 h1:3TFY9yxOQShrvmjdM76K+jc66zJeT6D3/VFFYCGQf7M= github.com/tidwall/gjson v1.13.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= @@ -557,6 +574,7 @@ golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= @@ -573,8 +591,9 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985 h1:4CSI6oo7cOjJKajidEljs9h+uP0rRZBPPPhcCbj5mw8= golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd h1:O7DYs+zxREGLKzKoMQrtrEacpb0ZVXA5rIwylE2Xchk= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -656,8 +675,9 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e h1:fLOSk5Q00efkSvAm+4xcoXD+RRmLmmulPn5I3Y9F2EM= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -665,8 +685,9 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -759,6 +780,7 @@ google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=