diff --git a/dpc-testing/performance/README.md b/dpc-testing/performance/README.md deleted file mode 100644 index 12bd96b306..0000000000 --- a/dpc-testing/performance/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Performance and Load Tests - -DPC performance and load tests are written in Go, using the [Vegeta](https://github.com/tsenart/vegeta) library. - -## Running the tests - -From this directory: `go run main.go --admin_url [admin URL] --api_url [API URL]` The admin URL is the base URL to the admin tasks endpoints. The API URL is the base URL to the user-facing API endpoints. For example, `go run main.go --admin_url http://localhost:9903/tasks --api_url http://localhost:3002/v1` - -## Build binary - -From this directory: `go build` It can be run using the same cli arguments as above. \ No newline at end of file diff --git a/dpc-testing/performance/data/mbis.csv b/dpc-testing/performance/data/mbis.csv deleted file mode 100644 index 18d9c95252..0000000000 --- a/dpc-testing/performance/data/mbis.csv +++ /dev/null @@ -1 +0,0 @@ -8S79A00AA00,9S79A00AA00,1S89A00AA00,2S89A00AA00,3S89A00AA00,4S89A00AA00,5S89A00AA00,6S89A00AA00,7S89A00AA00,8S89A00AA00,9S89A00AA00,1S99A00AA00,2S99A00AA00,3S99A00AA00,4S99A00AA00,5S99A00AA00,6S99A00AA00,7S99A00AA00,8S99A00AA00,9S99A00AA00,1SA9A00AA00,2SA9A00AA00,3SA9A00AA00,4SA9A00AA00,5SA9A00AA00,6SA9A00AA00,7SA9A00AA00,8SA9A00AA00,9SA9A00AA00,1SC9A00AA00,2SC9A00AA00,3SC9A00AA00,4SC9A00AA00,5SC9A00AA00,6SC9A00AA00,7SC9A00AA00,8SC9A00AA00,9SC9A00AA00,1SD9A00AA00,2SD9A00AA00,3SD9A00AA00,4SD9A00AA00,5SD9A00AA00,6SD9A00AA00,7SD9A00AA00,8SD9A00AA00,9SD9A00AA00,1SE9A00AA00,2SE9A00AA00,3SE9A00AA00,4SE9A00AA00,5SE9A00AA00,6SE9A00AA00,7SE9A00AA00,8SE9A00AA00,9SE9A00AA00,1SF9A00AA00,2SF9A00AA00,3SF9A00AA00,4SF9A00AA00,5SF9A00AA00,6SF9A00AA00,7SF9A00AA00,8SF9A00AA00,9SF9A00AA00,1SG9A00AA00,2SG9A00AA00,3SG9A00AA00,4SG9A00AA00,5SG9A00AA00,6SG9A00AA00,7SG9A00AA00,8SG9A00AA00,9SG9A00AA00,1SH9A00AA00,2SH9A00AA00,3SH9A00AA00,4SH9A00AA00,5SH9A00AA00,6SH9A00AA00,7SH9A00AA00,8SH9A00AA00,9SH9A00AA00,1SJ9A00AA00,2SJ9A00AA00,3SJ9A00AA00,4SJ9A00AA00,5SJ9A00AA00,6SJ9A00AA00,7SJ9A00AA00,8SJ9A00AA00,9SJ9A00AA00,1SK9A00AA00,2SK9A00AA00,3SK9A00AA00,4SK9A00AA00,5SK9A00AA00,6SK9A00AA00,7SK9A00AA00,8SK9A00AA00,9SK9A00AA00,1SM9A00AA00,2SM9A00AA00,3SM9A00AA00,4SM9A00AA00,5SM9A00AA00,6SM9A00AA00,7SM9A00AA00,8SM9A00AA00,9SM9A00AA00,1SN9A00AA00,2SN9A00AA00,3SN9A00AA00,4SN9A00AA00,5SN9A00AA00,6SN9A00AA00,7SN9A00AA00,8SN9A00AA00,9SN9A00AA00,1SP9A00AA00,2SP9A00AA00,3SP9A00AA00,4SP9A00AA00,5SP9A00AA00,6SP9A00AA00,7SP9A00AA00,8SP9A00AA00,9SP9A00AA00,1SQ9A00AA00,2SQ9A00AA00,3SQ9A00AA00,4SQ9A00AA00,5SQ9A00AA00,6SQ9A00AA00,7SQ9A00AA00,8SQ9A00AA00,9SQ9A00AA00,1SR9A00AA00,2SR9A00AA00,3SR9A00AA00,4SR9A00AA00,5SR9A00AA00,6SR9A00AA00,7SR9A00AA00,8SR9A00AA00,9SR9A00AA00,1SS9A00AA00,2SS9A00AA00,3SS9A00AA00,4SS9A00AA00,5SS9A00AA00,6SS9A00AA00,7SS9A00AA00,8SS9A00AA00,9SS9A00AA00,1SU9A00AA00,2SU9A00AA00,3SU9A00AA00,4SU9A00AA00,5SU9A00AA00,6SU9A00AA00,7SU9A00AA00,8SU9A00AA00,9SU9A00AA00,1SV9A00AA00,2SV9A00AA00,3SV9A00AA00,4SV9A00AA00,5SV9A00AA00,6SV9A00AA00,7SV9A00AA00,8SV9A00AA00,9SV9A00AA00,1SW9A00AA00,2SW9A00AA00,3SW9A00AA00,4SW9A00AA00,5SW9A00AA00,6SW9A00AA00,7SW9A00AA00,8SW9A00AA00,9SW9A00AA00,1SX9A00AA00,2SX9A00AA00,3SX9A00AA00,4SX9A00AA00,5SX9A00AA00,6SX9A00AA00,7SX9A00AA00,8SX9A00AA00,9SX9A00AA00,1SY9A00AA00,2SY9A00AA00,3SY9A00AA00,4SY9A00AA00,5SY9A00AA00,6SY9A00AA00,7SY9A00AA00,8SY9A00AA00,9SY9A00AA00,1S00C00AA00,2S00C00AA00,3S00C00AA00,4S00C00AA00,5S00C00AA00,6S00C00AA00,7S00C00AA00,8S00C00AA00,9S00C00AA00,1S10C00AA00,2S10C00AA00,3S10C00AA00,4S10C00AA00,5S10C00AA00,6S10C00AA00,7S10C00AA00,8S10C00AA00,9S10C00AA00,1S20C00AA00,2S20C00AA00,3S20C00AA00,4S20C00AA00,5S20C00AA00,6S20C00AA00,7S20C00AA00,8S20C00AA00,9S20C00AA00,1S30C00AA00,2S30C00AA00,3S30C00AA00,4S30C00AA00,5S30C00AA00,6S30C00AA00,7S30C00AA00,8S30C00AA00,9S30C00AA00,1S40C00AA00,2S40C00AA00,3S40C00AA00,4S40C00AA00,5S40C00AA00,6S40C00AA00,7S40C00AA00,8S40C00AA00,9S40C00AA00,1S50C00AA00,2S50C00AA00,3S50C00AA00,4S50C00AA00,5S50C00AA00,6S50C00AA00,7S50C00AA00,8S50C00AA00,9S50C00AA00,1S60C00AA00,2S60C00AA00,3S60C00AA00,4S60C00AA00,5S60C00AA00,6S60C00AA00,7S60C00AA00,8S60C00AA00,9S60C00AA00,1S70C00AA00,2S70C00AA00,3S70C00AA00,4S70C00AA00,5S70C00AA00,6S70C00AA00,7S70C00AA00,8S70C00AA00,9S70C00AA00,1S80C00AA00,2S80C00AA00,3S80C00AA00,4S80C00AA00,5S80C00AA00,6S80C00AA00,7S80C00AA00,8S80C00AA00,9S80C00AA00,1S90C00AA00,2S90C00AA00,3S90C00AA00,4S90C00AA00,5S90C00AA00,6S90C00AA00,7S90C00AA00,8S90C00AA00,9S90C00AA00,1SA0C00AA00,2SA0C00AA00,3SA0C00AA00,4SA0C00AA00,5SA0C00AA00,6SA0C00AA00,7SA0C00AA00,8SA0C00AA00,9SA0C00AA00,1SC0C00AA00,2SC0C00AA00,3SC0C00AA00,4SC0C00AA00,5SC0C00AA00,6SC0C00AA00,7SC0C00AA00,8SC0C00AA00,9SC0C00AA00,1SD0C00AA00,2SD0C00AA00,3SD0C00AA00,4SD0C00AA00,5SD0C00AA00,6SD0C00AA00,7SD0C00AA00,8SD0C00AA00,9SD0C00AA00,1SE0C00AA00,2SE0C00AA00,3SE0C00AA00,4SE0C00AA00,5SE0C00AA00,6SE0C00AA00,7SE0C00AA00,8SE0C00AA00,9SE0C00AA00,1SF0C00AA00,2SF0C00AA00,3SF0C00AA00,4SF0C00AA00,5SF0C00AA00,6SF0C00AA00,7SF0C00AA00,8SF0C00AA00,9SF0C00AA00,1SG0C00AA00,2SG0C00AA00,3SG0C00AA00,4SG0C00AA00,5SG0C00AA00,6SG0C00AA00,7SG0C00AA00,8SG0C00AA00,9SG0C00AA00,1SH0C00AA00,2SH0C00AA00,3SH0C00AA00,4SH0C00AA00,5SH0C00AA00,6SH0C00AA00,7SH0C00AA00,8SH0C00AA00,9SH0C00AA00,1SJ0C00AA00,2SJ0C00AA00,3SJ0C00AA00,4SJ0C00AA00,5SJ0C00AA00,6SJ0C00AA00,7SJ0C00AA00,8SJ0C00AA00,9SJ0C00AA00,1SK0C00AA00,2SK0C00AA00,3SK0C00AA00,4SK0C00AA00,5SK0C00AA00,6SK0C00AA00,7SK0C00AA00,8SK0C00AA00,9SK0C00AA00,1SM0C00AA00,2SM0C00AA00,3SM0C00AA00,4SM0C00AA00,5SM0C00AA00,6SM0C00AA00,7SM0C00AA00,8SM0C00AA00,9SM0C00AA00,1SN0C00AA00,2SN0C00AA00,3SN0C00AA00,4SN0C00AA00,5SN0C00AA00,6SN0C00AA00,7SN0C00AA00,8SN0C00AA00,9SN0C00AA00,1SP0C00AA00,2SP0C00AA00,3SP0C00AA00,4SP0C00AA00,5SP0C00AA00,6SP0C00AA00,7SP0C00AA00,8SP0C00AA00,9SP0C00AA00,1SQ0C00AA00,2SQ0C00AA00,3SQ0C00AA00,4SQ0C00AA00,5SQ0C00AA00,6SQ0C00AA00,7SQ0C00AA00,8SQ0C00AA00,9SQ0C00AA00,1SR0C00AA00,2SR0C00AA00,3SR0C00AA00,4SR0C00AA00,5SR0C00AA00,6SR0C00AA00,7SR0C00AA00,8SR0C00AA00,9SR0C00AA00,1SS0C00AA00,2SS0C00AA00,3SS0C00AA00,4SS0C00AA00,5SS0C00AA00,6SS0C00AA00,7SS0C00AA00,8SS0C00AA00,9SS0C00AA00,1SU0C00AA00,2SU0C00AA00,3SU0C00AA00,4SU0C00AA00,5SU0C00AA00,6SU0C00AA00,7SU0C00AA00,8SU0C00AA00,9SU0C00AA00,1SV0C00AA00,2SV0C00AA00,3SV0C00AA00,4SV0C00AA00,5SV0C00AA00,6SV0C00AA00,7SV0C00AA00,8SV0C00AA00,9SV0C00AA00,1SW0C00AA00,2SW0C00AA00,3SW0C00AA00,4SW0C00AA00,5SW0C00AA00,6SW0C00AA00,7SW0C00AA00,8SW0C00AA00,9SW0C00AA00,1SX0C00AA00,2SX0C00AA00,3SX0C00AA00,4SX0C00AA00,5SX0C00AA00,6SX0C00AA00,7SX0C00AA00,8SX0C00AA00,9SX0C00AA00,1SY0C00AA00,2SY0C00AA00,3SY0C00AA00,4SY0C00AA00,5SY0C00AA00,6SY0C00AA00,7SY0C00AA00,8SY0C00AA00,9SY0C00AA00,1S01C00AA00,2S01C00AA00,3S01C00AA00,4S01C00AA00,5S01C00AA00,6S01C00AA00,7S01C00AA00,8S01C00AA00,9S01C00AA00,1S11C00AA00,2S11C00AA00,3S11C00AA00,4S11C00AA00,5S11C00AA00,6S11C00AA00,7S11C00AA00,8S11C00AA00,9S11C00AA00,1S21C00AA00,2S21C00AA00,3S21C00AA00,4S21C00AA00,5S21C00AA00,6S21C00AA00,7S21C00AA00,8S21C00AA00,9S21C00AA00,1S31C00AA00,2S31C00AA00,3S31C00AA00,4S31C00AA00,5S31C00AA00,6S31C00AA00,7S31C00AA00,8S31C00AA00,9S31C00AA00,1S41C00AA00,2S41C00AA00,3S41C00AA00,4S41C00AA00,5S41C00AA00,6S41C00AA00,7S41C00AA00,8S41C00AA00,9S41C00AA00,1S51C00AA00,2S51C00AA00,3S51C00AA00,4S51C00AA00,5S51C00AA00,6S51C00AA00,7S51C00AA00,8S51C00AA00,9S51C00AA00,1S61C00AA00,2S61C00AA00,3S61C00AA00,4S61C00AA00,5S61C00AA00,6S61C00AA00,7S61C00AA00,8S61C00AA00,9S61C00AA00,1S71C00AA00,2S71C00AA00,3S71C00AA00,4S71C00AA00,5S71C00AA00,6S71C00AA00,7S71C00AA00,8S71C00AA00,9S71C00AA00,1S81C00AA00,2S81C00AA00,3S81C00AA00,4S81C00AA00,5S81C00AA00,6S81C00AA00,7S81C00AA00,8S81C00AA00,9S81C00AA00,1S91C00AA00,2S91C00AA00,3S91C00AA00,4S91C00AA00,5S91C00AA00,6S91C00AA00,7S91C00AA00,8S91C00AA00,9S91C00AA00,1SA1C00AA00,2SA1C00AA00,3SA1C00AA00,4SA1C00AA00,5SA1C00AA00,6SA1C00AA00,7SA1C00AA00,8SA1C00AA00,9SA1C00AA00,1SC1C00AA00,2SC1C00AA00,3SC1C00AA00,4SC1C00AA00,5SC1C00AA00,6SC1C00AA00,7SC1C00AA00,8SC1C00AA00,9SC1C00AA00,1SD1C00AA00,2SD1C00AA00,3SD1C00AA00,4SD1C00AA00,5SD1C00AA00,6SD1C00AA00,7SD1C00AA00,8SD1C00AA00,9SD1C00AA00,1SE1C00AA00,2SE1C00AA00,3SE1C00AA00,4SE1C00AA00,5SE1C00AA00,6SE1C00AA00,7SE1C00AA00,8SE1C00AA00,9SE1C00AA00,1SF1C00AA00,2SF1C00AA00,3SF1C00AA00,4SF1C00AA00,5SF1C00AA00,6SF1C00AA00,7SF1C00AA00,8SF1C00AA00,9SF1C00AA00,1SG1C00AA00,2SG1C00AA00,3SG1C00AA00,4SG1C00AA00,5SG1C00AA00,6SG1C00AA00,7SG1C00AA00,8SG1C00AA00,9SG1C00AA00,1SH1C00AA00,2SH1C00AA00,3SH1C00AA00,4SH1C00AA00,5SH1C00AA00,6SH1C00AA00,7SH1C00AA00,8SH1C00AA00,9SH1C00AA00,1SJ1C00AA00,2SJ1C00AA00,3SJ1C00AA00,4SJ1C00AA00,5SJ1C00AA00,6SJ1C00AA00,7SJ1C00AA00,8SJ1C00AA00,9SJ1C00AA00,1SK1C00AA00,2SK1C00AA00,3SK1C00AA00,4SK1C00AA00,5SK1C00AA00,6SK1C00AA00,7SK1C00AA00,8SK1C00AA00,9SK1C00AA00,1SM1C00AA00,2SM1C00AA00,3SM1C00AA00,4SM1C00AA00,5SM1C00AA00,6SM1C00AA00,7SM1C00AA00,8SM1C00AA00,9SM1C00AA00,1SN1C00AA00,2SN1C00AA00,3SN1C00AA00,4SN1C00AA00,5SN1C00AA00,6SN1C00AA00,7SN1C00AA00,8SN1C00AA00,9SN1C00AA00,1SP1C00AA00,2SP1C00AA00,3SP1C00AA00,4SP1C00AA00,5SP1C00AA00,6SP1C00AA00,7SP1C00AA00,8SP1C00AA00,9SP1C00AA00,1SQ1C00AA00,2SQ1C00AA00,3SQ1C00AA00,4SQ1C00AA00,5SQ1C00AA00,6SQ1C00AA00,7SQ1C00AA00,8SQ1C00AA00,9SQ1C00AA00,1SR1C00AA00,2SR1C00AA00,3SR1C00AA00,4SR1C00AA00,5SR1C00AA00,6SR1C00AA00,7SR1C00AA00,8SR1C00AA00,9SR1C00AA00,1SS1C00AA00,2SS1C00AA00,3SS1C00AA00,4SS1C00AA00,5SS1C00AA00,6SS1C00AA00,7SS1C00AA00,8SS1C00AA00,9SS1C00AA00,1SU1C00AA00,2SU1C00AA00,3SU1C00AA00,4SU1C00AA00,5SU1C00AA00,6SU1C00AA00,7SU1C00AA00,8SU1C00AA00,9SU1C00AA00,1SV1C00AA00,2SV1C00AA00,3SV1C00AA00,4SV1C00AA00,5SV1C00AA00,6SV1C00AA00,7SV1C00AA00,8SV1C00AA00,9SV1C00AA00,1SW1C00AA00,2SW1C00AA00,3SW1C00AA00,4SW1C00AA00,5SW1C00AA00,6SW1C00AA00,7SW1C00AA00,8SW1C00AA00,9SW1C00AA00,1SX1C00AA00,2SX1C00AA00,3SX1C00AA00,4SX1C00AA00,5SX1C00AA00,6SX1C00AA00,7SX1C00AA00,8SX1C00AA00,9SX1C00AA00,1SY1C00AA00,2SY1C00AA00,3SY1C00AA00,4SY1C00AA00,5SY1C00AA00,6SY1C00AA00,7SY1C00AA00,8SY1C00AA00,9SY1C00AA00,1S02C00AA00,2S02C00AA00,3S02C00AA00,4S02C00AA00,5S02C00AA00,6S02C00AA00,7S02C00AA00,8S02C00AA00,9S02C00AA00,1S12C00AA00,2S12C00AA00,3S12C00AA00,4S12C00AA00,5S12C00AA00,6S12C00AA00,7S12C00AA00,8S12C00AA00,9S12C00AA00,1S22C00AA00,2S22C00AA00,3S22C00AA00,4S22C00AA00,5S22C00AA00,6S22C00AA00,7S22C00AA00,8S22C00AA00,9S22C00AA00,1S32C00AA00,2S32C00AA00,3S32C00AA00,4S32C00AA00,5S32C00AA00,6S32C00AA00,7S32C00AA00,8S32C00AA00,9S32C00AA00,1S42C00AA00,2S42C00AA00,3S42C00AA00,4S42C00AA00,5S42C00AA00,6S42C00AA00,7S42C00AA00,8S42C00AA00,9S42C00AA00,1S52C00AA00,2S52C00AA00,3S52C00AA00,4S52C00AA00,5S52C00AA00,6S52C00AA00,7S52C00AA00,8S52C00AA00,9S52C00AA00,1S62C00AA00,2S62C00AA00,3S62C00AA00,4S62C00AA00,5S62C00AA00,6S62C00AA00,7S62C00AA00,8S62C00AA00,9S62C00AA00,1S72C00AA00,2S72C00AA00,3S72C00AA00,4S72C00AA00,5S72C00AA00,6S72C00AA00,7S72C00AA00,8S72C00AA00,9S72C00AA00,1S82C00AA00,2S82C00AA00,3S82C00AA00,4S82C00AA00,5S82C00AA00,6S82C00AA00,7S82C00AA00,8S82C00AA00,9S82C00AA00,1S92C00AA00,2S92C00AA00,3S92C00AA00,4S92C00AA00,5S92C00AA00,6S92C00AA00,7S92C00AA00,8S92C00AA00,9S92C00AA00,1SA2C00AA00,2SA2C00AA00,3SA2C00AA00,4SA2C00AA00,5SA2C00AA00,6SA2C00AA00,7SA2C00AA00,8SA2C00AA00,9SA2C00AA00,1SC2C00AA00,2SC2C00AA00,3SC2C00AA00,4SC2C00AA00,5SC2C00AA00,6SC2C00AA00,7SC2C00AA00,8SC2C00AA00,9SC2C00AA00,1SD2C00AA00,2SD2C00AA00,3SD2C00AA00,4SD2C00AA00,5SD2C00AA00,6SD2C00AA00,7SD2C00AA00,8SD2C00AA00,9SD2C00AA00,1SE2C00AA00,2SE2C00AA00,3SE2C00AA00,4SE2C00AA00,5SE2C00AA00,6SE2C00AA00,7SE2C00AA00,8SE2C00AA00,9SE2C00AA00,1SF2C00AA00,2SF2C00AA00,3SF2C00AA00,4SF2C00AA00,5SF2C00AA00,6SF2C00AA00,7SF2C00AA00,8SF2C00AA00,9SF2C00AA00,1SG2C00AA00,2SG2C00AA00,3SG2C00AA00,4SG2C00AA00,5SG2C00AA00,6SG2C00AA00,7SG2C00AA00,8SG2C00AA00,9SG2C00AA00,1SH2C00AA00,2SH2C00AA00,3SH2C00AA00,4SH2C00AA00,5SH2C00AA00,6SH2C00AA00,7SH2C00AA00,8SH2C00AA00,9SH2C00AA00,1SJ2C00AA00,2SJ2C00AA00,3SJ2C00AA00,4SJ2C00AA00,5SJ2C00AA00,6SJ2C00AA00,7SJ2C00AA00,8SJ2C00AA00,9SJ2C00AA00,1SK2C00AA00,2SK2C00AA00,3SK2C00AA00,4SK2C00AA00,5SK2C00AA00,6SK2C00AA00,7SK2C00AA00,8SK2C00AA00,9SK2C00AA00,1SM2C00AA00,2SM2C00AA00,3SM2C00AA00,4SM2C00AA00,5SM2C00AA00,6SM2C00AA00,7SM2C00AA00,8SM2C00AA00,9SM2C00AA00,1SN2C00AA00,2SN2C00AA00,3SN2C00AA00,4SN2C00AA00,5SN2C00AA00,6SN2C00AA00,7SN2C00AA00,8SN2C00AA00,9SN2C00AA00,1SP2C00AA00,2SP2C00AA00,3SP2C00AA00,4SP2C00AA00,5SP2C00AA00,6SP2C00AA00,7SP2C00AA00,8SP2C00AA00,9SP2C00AA00,1SQ2C00AA00,2SQ2C00AA00,3SQ2C00AA00,4SQ2C00AA00,5SQ2C00AA00,6SQ2C00AA00,7SQ2C00AA00,8SQ2C00AA00,9SQ2C00AA00,1SR2C00AA00,2SR2C00AA00,3SR2C00AA00,4SR2C00AA00,5SR2C00AA00,6SR2C00AA00,7SR2C00AA00,8SR2C00AA00,9SR2C00AA00,1SS2C00AA00,2SS2C00AA00,3SS2C00AA00,4SS2C00AA00,5SS2C00AA00,6SS2C00AA00,7SS2C00AA00,8SS2C00AA00,9SS2C00AA00,1SU2C00AA00,2SU2C00AA00,3SU2C00AA00,4SU2C00AA00,5SU2C00AA00,6SU2C00AA00,7SU2C00AA00,8SU2C00AA00,9SU2C00AA00,1SV2C00AA00,2SV2C00AA00,3SV2C00AA00,4SV2C00AA00,5SV2C00AA00,6SV2C00AA00,7SV2C00AA00,8SV2C00AA00,9SV2C00AA00,1SW2C00AA00,2SW2C00AA00,3SW2C00AA00,4SW2C00AA00,5SW2C00AA00,6SW2C00AA00,7SW2C00AA00,8SW2C00AA00,9SW2C00AA00,1SX2C00AA00,2SX2C00AA00,3SX2C00AA00,4SX2C00AA00,5SX2C00AA00,6SX2C00AA00,7SX2C00AA00,8SX2C00AA00,9SX2C00AA00,1SY2C00AA00,2SY2C00AA00,3SY2C00AA00,4SY2C00AA00,5SY2C00AA00,6SY2C00AA00,7SY2C00AA00,8SY2C00AA00,9SY2C00AA00,1S03C00AA00,2S03C00AA00,3S03C00AA00,4S03C00AA00,5S03C00AA00,6S03C00AA00,7S03C00AA00,8S03C00AA00,9S03C00AA00,1S13C00AA00,2S13C00AA00,3S13C00AA00,4S13C00AA00,5S13C00AA00,6S13C00AA00,7S13C00AA00,8S13C00AA00,9S13C00AA00,1S23C00AA00,2S23C00AA00,3S23C00AA00,4S23C00AA00,5S23C00AA00,6S23C00AA00,7S23C00AA00,8S23C00AA00,9S23C00AA00,1S33C00AA00,2S33C00AA00,3S33C00AA00,4S33C00AA00,5S33C00AA00,6S33C00AA00,7S33C00AA00,8S33C00AA00,9S33C00AA00,1S43C00AA00,2S43C00AA00,3S43C00AA00,4S43C00AA00,5S43C00AA00,6S43C00AA00,7S43C00AA00,8S43C00AA00,9S43C00AA00,1S53C00AA00,2S53C00AA00,3S53C00AA00,4S53C00AA00,5S53C00AA00,6S53C00AA00,7S53C00AA00,8S53C00AA00,9S53C00AA00,1S63C00AA00,2S63C00AA00,3S63C00AA00,4S63C00AA00,5S63C00AA00,6S63C00AA00,7S63C00AA00,8S63C00AA00,9S63C00AA00,1S73C00AA00,2S73C00AA00,3S73C00AA00,4S73C00AA00,5S73C00AA00,6S73C00AA00,7S73C00AA00,8S73C00AA00,9S73C00AA00,1S83C00AA00,2S83C00AA00,3S83C00AA00,4S83C00AA00,5S83C00AA00,6S83C00AA00,7S83C00AA00,8S83C00AA00,9S83C00AA00,1S93C00AA00,2S93C00AA00,3S93C00AA00,4S93C00AA00,5S93C00AA00,6S93C00AA00,7S93C00AA00,8S93C00AA00,9S93C00AA00,1SA3C00AA00,2SA3C00AA00,3SA3C00AA00,4SA3C00AA00,5SA3C00AA00,6SA3C00AA00,7SA3C00AA00,8SA3C00AA00,9SA3C00AA00,1SC3C00AA00,2SC3C00AA00,3SC3C00AA00,4SC3C00AA00,5SC3C00AA00,6SC3C00AA00,7SC3C00AA00,8SC3C00AA00,9SC3C00AA00,1SD3C00AA00,2SD3C00AA00,3SD3C00AA00,4SD3C00AA00,5SD3C00AA00,6SD3C00AA00,7SD3C00AA00,8SD3C00AA00,9SD3C00AA00,1SE3C00AA00,2SE3C00AA00,3SE3C00AA00,4SE3C00AA00,5SE3C00AA00,6SE3C00AA00,7SE3C00AA00,8SE3C00AA00,9SE3C00AA00,1SF3C00AA00,2SF3C00AA00,3SF3C00AA00,4SF3C00AA00,5SF3C00AA00,6SF3C00AA00,7SF3C00AA00,8SF3C00AA00,9SF3C00AA00,1SG3C00AA00,2SG3C00AA00,3SG3C00AA00,4SG3C00AA00,5SG3C00AA00,6SG3C00AA00,7SG3C00AA00,8SG3C00AA00,9SG3C00AA00,1SH3C00AA00,2SH3C00AA00,3SH3C00AA00,4SH3C00AA00,5SH3C00AA00,6SH3C00AA00,7SH3C00AA00,8SH3C00AA00,9SH3C00AA00,1SJ3C00AA00,2SJ3C00AA00,3SJ3C00AA00,4SJ3C00AA00,5SJ3C00AA00,6SJ3C00AA00,7SJ3C00AA00,8SJ3C00AA00,9SJ3C00AA00,1SK3C00AA00,2SK3C00AA00,3SK3C00AA00,4SK3C00AA00,5SK3C00AA00,6SK3C00AA00,7SK3C00AA00,8SK3C00AA00,9SK3C00AA00,1SM3C00AA00,2SM3C00AA00,3SM3C00AA00,4SM3C00AA00,5SM3C00AA00,6SM3C00AA00,7SM3C00AA00,8SM3C00AA00,9SM3C00AA00,1SN3C00AA00,2SN3C00AA00,3SN3C00AA00,4SN3C00AA00,5SN3C00AA00,6SN3C00AA00,7SN3C00AA00,8SN3C00AA00,9SN3C00AA00,1SP3C00AA00,2SP3C00AA00,3SP3C00AA00,4SP3C00AA00,5SP3C00AA00,6SP3C00AA00,7SP3C00AA00,8SP3C00AA00,9SP3C00AA00,1SQ3C00AA00,2SQ3C00AA00,3SQ3C00AA00,4SQ3C00AA00,5SQ3C00AA00,6SQ3C00AA00,7SQ3C00AA00,8SQ3C00AA00,9SQ3C00AA00,1SR3C00AA00,2SR3C00AA00,3SR3C00AA00,4SR3C00AA00,5SR3C00AA00,6SR3C00AA00,7SR3C00AA00,8SR3C00AA00,9SR3C00AA00,1SS3C00AA00,2SS3C00AA00,3SS3C00AA00,4SS3C00AA00,5SS3C00AA00,6SS3C00AA00,7SS3C00AA00,8SS3C00AA00,9SS3C00AA00,1SU3C00AA00,2SU3C00AA00,3SU3C00AA00,4SU3C00AA00,5SU3C00AA00,6SU3C00AA00,7SU3C00AA00,8SU3C00AA00,9SU3C00AA00,1SV3C00AA00,2SV3C00AA00,3SV3C00AA00,4SV3C00AA00,5SV3C00AA00,6SV3C00AA00,7SV3C00AA00,8SV3C00AA00,9SV3C00AA00,1SW3C00AA00,2SW3C00AA00,3SW3C00AA00,4SW3C00AA00,5SW3C00AA00,6SW3C00AA00,7SW3C00AA00,8SW3C00AA00,9SW3C00AA00,1SX3C00AA00,2SX3C00AA00,3SX3C00AA00,4SX3C00AA00,5SX3C00AA00,6SX3C00AA00,7SX3C00AA00,8SX3C00AA00,9SX3C00AA00,1SY3C00AA00,2SY3C00AA00,3SY3C00AA00,4SY3C00AA00,5SY3C00AA00,6SY3C00AA00,7SY3C00AA00,8SY3C00AA00,9SY3C00AA00,1S04C00AA00,2S04C00AA00,3S04C00AA00,4S04C00AA00,5S04C00AA00,6S04C00AA00,7S04C00AA00,8S04C00AA00,9S04C00AA00,1S14C00AA00,2S14C00AA00,3S14C00AA00,4S14C00AA00,5S14C00AA00,6S14C00AA00,7S14C00AA00,8S14C00AA00,9S14C00AA00,1S24C00AA00,2S24C00AA00,3S24C00AA00,4S24C00AA00,5S24C00AA00,6S24C00AA00,7S24C00AA00,8S24C00AA00,9S24C00AA00,1S34C00AA00,2S34C00AA00,3S34C00AA00,4S34C00AA00,5S34C00AA00,6S34C00AA00,7S34C00AA00,8S34C00AA00,9S34C00AA00,1S44C00AA00,2S44C00AA00,3S44C00AA00,4S44C00AA00,5S44C00AA00,6S44C00AA00,7S44C00AA00,8S44C00AA00,9S44C00AA00,1S54C00AA00,2S54C00AA00,3S54C00AA00,4S54C00AA00,5S54C00AA00,6S54C00AA00,7S54C00AA00,8S54C00AA00,9S54C00AA00,1S64C00AA00,2S64C00AA00,3S64C00AA00,4S64C00AA00,5S64C00AA00,6S64C00AA00,7S64C00AA00,8S64C00AA00,9S64C00AA00,1S74C00AA00,2S74C00AA00,3S74C00AA00,4S74C00AA00,5S74C00AA00,6S74C00AA00,7S74C00AA00,8S74C00AA00,9S74C00AA00,1S84C00AA00,2S84C00AA00,3S84C00AA00,4S84C00AA00,5S84C00AA00,6S84C00AA00,7S84C00AA00,8S84C00AA00,9S84C00AA00,1S94C00AA00,2S94C00AA00,3S94C00AA00,4S94C00AA00,5S94C00AA00,6S94C00AA00,7S94C00AA00,8S94C00AA00,9S94C00AA00,1SA4C00AA00,2SA4C00AA00,3SA4C00AA00,4SA4C00AA00,5SA4C00AA00,6SA4C00AA00,7SA4C00AA00,8SA4C00AA00,9SA4C00AA00,1SC4C00AA00,2SC4C00AA00,3SC4C00AA00,4SC4C00AA00,5SC4C00AA00,6SC4C00AA00,7SC4C00AA00,8SC4C00AA00,9SC4C00AA00,1SD4C00AA00,2SD4C00AA00,3SD4C00AA00,4SD4C00AA00,5SD4C00AA00,6SD4C00AA00,7SD4C00AA00,8SD4C00AA00,9SD4C00AA00,1SE4C00AA00,2SE4C00AA00,3SE4C00AA00,4SE4C00AA00,5SE4C00AA00,6SE4C00AA00,7SE4C00AA00,8SE4C00AA00,9SE4C00AA00,1SF4C00AA00,2SF4C00AA00,3SF4C00AA00,4SF4C00AA00,5SF4C00AA00,6SF4C00AA00,7SF4C00AA00,8SF4C00AA00,9SF4C00AA00,1SG4C00AA00,2SG4C00AA00,3SG4C00AA00,4SG4C00AA00,5SG4C00AA00,6SG4C00AA00,7SG4C00AA00,8SG4C00AA00,9SG4C00AA00,1SH4C00AA00,2SH4C00AA00,3SH4C00AA00,4SH4C00AA00,5SH4C00AA00,6SH4C00AA00,7SH4C00AA00,8SH4C00AA00,9SH4C00AA00,1SJ4C00AA00,2SJ4C00AA00,3SJ4C00AA00,4SJ4C00AA00,5SJ4C00AA00,6SJ4C00AA00,7SJ4C00AA00,8SJ4C00AA00,9SJ4C00AA00,1SK4C00AA00,2SK4C00AA00,3SK4C00AA00,4SK4C00AA00,5SK4C00AA00,6SK4C00AA00,7SK4C00AA00,8SK4C00AA00,9SK4C00AA00,1SM4C00AA00,2SM4C00AA00,3SM4C00AA00,4SM4C00AA00,5SM4C00AA00,6SM4C00AA00,7SM4C00AA00,8SM4C00AA00,9SM4C00AA00,1SN4C00AA00,2SN4C00AA00,3SN4C00AA00,4SN4C00AA00,5SN4C00AA00,6SN4C00AA00,7SN4C00AA00,8SN4C00AA00,9SN4C00AA00,1SP4C00AA00,2SP4C00AA00,3SP4C00AA00,4SP4C00AA00,5SP4C00AA00,6SP4C00AA00,7SP4C00AA00,8SP4C00AA00,9SP4C00AA00,1SQ4C00AA00,2SQ4C00AA00,3SQ4C00AA00,4SQ4C00AA00,5SQ4C00AA00,6SQ4C00AA00,7SQ4C00AA00,8SQ4C00AA00,9SQ4C00AA00,1SR4C00AA00,2SR4C00AA00,3SR4C00AA00,4SR4C00AA00,5SR4C00AA00,6SR4C00AA00,7SR4C00AA00,8SR4C00AA00,9SR4C00AA00,1SS4C00AA00,2SS4C00AA00,3SS4C00AA00,4SS4C00AA00,5SS4C00AA00,6SS4C00AA00,7SS4C00AA00,8SS4C00AA00,9SS4C00AA00,1SU4C00AA00,2SU4C00AA00,3SU4C00AA00,4SU4C00AA00,5SU4C00AA00,6SU4C00AA00,7SU4C00AA00,8SU4C00AA00,9SU4C00AA00,1SV4C00AA00,2SV4C00AA00,3SV4C00AA00,4SV4C00AA00,5SV4C00AA00,6SV4C00AA00,7SV4C00AA00,8SV4C00AA00,9SV4C00AA00,1SW4C00AA00,2SW4C00AA00,3SW4C00AA00,4SW4C00AA00,5SW4C00AA00,6SW4C00AA00,7SW4C00AA00,8SW4C00AA00,9SW4C00AA00,1SX4C00AA00,2SX4C00AA00,3SX4C00AA00,4SX4C00AA00,5SX4C00AA00,6SX4C00AA00,7SX4C00AA00,8SX4C00AA00,9SX4C00AA00,1SY4C00AA00,2SY4C00AA00,3SY4C00AA00,4SY4C00AA00,5SY4C00AA00,6SY4C00AA00,7SY4C00AA00,8SY4C00AA00,9SY4C00AA00,1S05C00AA00,2S05C00AA00,3S05C00AA00,4S05C00AA00,5S05C00AA00,6S05C00AA00,7S05C00AA00,8S05C00AA00,9S05C00AA00,1S15C00AA00,2S15C00AA00,3S15C00AA00,4S15C00AA00,5S15C00AA00,6S15C00AA00,7S15C00AA00,8S15C00AA00,9S15C00AA00,1S25C00AA00,2S25C00AA00,3S25C00AA00,4S25C00AA00,5S25C00AA00,6S25C00AA00,7S25C00AA00,8S25C00AA00,9S25C00AA00,1S35C00AA00,2S35C00AA00,3S35C00AA00,4S35C00AA00,5S35C00AA00,6S35C00AA00,7S35C00AA00,8S35C00AA00,9S35C00AA00,1S45C00AA00,2S45C00AA00,3S45C00AA00,4S45C00AA00,5S45C00AA00,6S45C00AA00,7S45C00AA00,8S45C00AA00,9S45C00AA00,1S55C00AA00,2S55C00AA00,3S55C00AA00,4S55C00AA00,5S55C00AA00,6S55C00AA00,7S55C00AA00,8S55C00AA00,9S55C00AA00,1S65C00AA00,2S65C00AA00,3S65C00AA00,4S65C00AA00,5S65C00AA00,6S65C00AA00,7S65C00AA00,8S65C00AA00,9S65C00AA00,1S75C00AA00,2S75C00AA00,3S75C00AA00,4S75C00AA00,5S75C00AA00,6S75C00AA00,7S75C00AA00,8S75C00AA00,9S75C00AA00,1S85C00AA00,2S85C00AA00,3S85C00AA00,4S85C00AA00,5S85C00AA00,6S85C00AA00,7S85C00AA00,8S85C00AA00,9S85C00AA00,1S95C00AA00,2S95C00AA00,3S95C00AA00,4S95C00AA00,5S95C00AA00,6S95C00AA00,7S95C00AA00,8S95C00AA00,9S95C00AA00,1SA5C00AA00,2SA5C00AA00,3SA5C00AA00,4SA5C00AA00,5SA5C00AA00,6SA5C00AA00,7SA5C00AA00,8SA5C00AA00,9SA5C00AA00,1SC5C00AA00,2SC5C00AA00,3SC5C00AA00,4SC5C00AA00,5SC5C00AA00,6SC5C00AA00,7SC5C00AA00,8SC5C00AA00,9SC5C00AA00,1SD5C00AA00,2SD5C00AA00,3SD5C00AA00,4SD5C00AA00,5SD5C00AA00,6SD5C00AA00,7SD5C00AA00,8SD5C00AA00,9SD5C00AA00,1SE5C00AA00,2SE5C00AA00,3SE5C00AA00,4SE5C00AA00,5SE5C00AA00,6SE5C00AA00,7SE5C00AA00,8SE5C00AA00,9SE5C00AA00,1SF5C00AA00,2SF5C00AA00,3SF5C00AA00,4SF5C00AA00,5SF5C00AA00,6SF5C00AA00,7SF5C00AA00,8SF5C00AA00,9SF5C00AA00,1SG5C00AA00,2SG5C00AA00,3SG5C00AA00,4SG5C00AA00,5SG5C00AA00,6SG5C00AA00,7SG5C00AA00,8SG5C00AA00,9SG5C00AA00,1SH5C00AA00,2SH5C00AA00,3SH5C00AA00,4SH5C00AA00,5SH5C00AA00,6SH5C00AA00,7SH5C00AA00,8SH5C00AA00,9SH5C00AA00,1SJ5C00AA00,2SJ5C00AA00,3SJ5C00AA00,4SJ5C00AA00,5SJ5C00AA00,6SJ5C00AA00,7SJ5C00AA00,8SJ5C00AA00,9SJ5C00AA00,1SK5C00AA00,2SK5C00AA00,3SK5C00AA00,4SK5C00AA00,5SK5C00AA00,6SK5C00AA00,7SK5C00AA00,8SK5C00AA00,9SK5C00AA00,1SM5C00AA00,2SM5C00AA00,3SM5C00AA00,4SM5C00AA00,5SM5C00AA00,6SM5C00AA00,7SM5C00AA00,8SM5C00AA00,9SM5C00AA00,1SN5C00AA00,2SN5C00AA00,3SN5C00AA00,4SN5C00AA00,5SN5C00AA00,6SN5C00AA00,7SN5C00AA00,8SN5C00AA00,9SN5C00AA00,1SP5C00AA00,2SP5C00AA00,3SP5C00AA00,4SP5C00AA00,5SP5C00AA00,6SP5C00AA00,7SP5C00AA00,8SP5C00AA00,9SP5C00AA00,1SQ5C00AA00,2SQ5C00AA00,3SQ5C00AA00,4SQ5C00AA00,5SQ5C00AA00,6SQ5C00AA00,7SQ5C00AA00,8SQ5C00AA00,9SQ5C00AA00,1SR5C00AA00,2SR5C00AA00,3SR5C00AA00,4SR5C00AA00,5SR5C00AA00,6SR5C00AA00,7SR5C00AA00,8SR5C00AA00,9SR5C00AA00,1SS5C00AA00,2SS5C00AA00,3SS5C00AA00,4SS5C00AA00,5SS5C00AA00,6SS5C00AA00,7SS5C00AA00,8SS5C00AA00,9SS5C00AA00,1SU5C00AA00,2SU5C00AA00,3SU5C00AA00,4SU5C00AA00,5SU5C00AA00,6SU5C00AA00,7SU5C00AA00,8SU5C00AA00,9SU5C00AA00,1SV5C00AA00,2SV5C00AA00,3SV5C00AA00,4SV5C00AA00,5SV5C00AA00,6SV5C00AA00,7SV5C00AA00,8SV5C00AA00,9SV5C00AA00,1SW5C00AA00,2SW5C00AA00,3SW5C00AA00,4SW5C00AA00,5SW5C00AA00,6SW5C00AA00,7SW5C00AA00,8SW5C00AA00,9SW5C00AA00,1SX5C00AA00,2SX5C00AA00,3SX5C00AA00,4SX5C00AA00,5SX5C00AA00,6SX5C00AA00,7SX5C00AA00,8SX5C00AA00,9SX5C00AA00,1SY5C00AA00,2SY5C00AA00,3SY5C00AA00,4SY5C00AA00,5SY5C00AA00,6SY5C00AA00,7SY5C00AA00,8SY5C00AA00,9SY5C00AA00,1S06C00AA00,2S06C00AA00,3S06C00AA00,4S06C00AA00,5S06C00AA00,6S06C00AA00,7S06C00AA00,8S06C00AA00,9S06C00AA00,1S16C00AA00,2S16C00AA00,3S16C00AA00,4S16C00AA00,5S16C00AA00,6S16C00AA00,7S16C00AA00,8S16C00AA00,9S16C00AA00,1S26C00AA00,2S26C00AA00,3S26C00AA00,4S26C00AA00,5S26C00AA00,6S26C00AA00,7S26C00AA00,8S26C00AA00,9S26C00AA00,1S36C00AA00,2S36C00AA00,3S36C00AA00,4S36C00AA00,5S36C00AA00,6S36C00AA00,7S36C00AA00,8S36C00AA00,9S36C00AA00,1S46C00AA00,2S46C00AA00,3S46C00AA00,4S46C00AA00,5S46C00AA00,6S46C00AA00,7S46C00AA00,8S46C00AA00,9S46C00AA00,1S56C00AA00,2S56C00AA00,3S56C00AA00,4S56C00AA00,5S56C00AA00,6S56C00AA00,7S56C00AA00,8S56C00AA00,9S56C00AA00,1S66C00AA00,2S66C00AA00,3S66C00AA00,4S66C00AA00,5S66C00AA00,6S66C00AA00,7S66C00AA00,8S66C00AA00,9S66C00AA00,1S76C00AA00,2S76C00AA00,3S76C00AA00,4S76C00AA00,5S76C00AA00,6S76C00AA00,7S76C00AA00,8S76C00AA00,9S76C00AA00,1S86C00AA00,2S86C00AA00,3S86C00AA00,4S86C00AA00,5S86C00AA00,6S86C00AA00,7S86C00AA00,8S86C00AA00,9S86C00AA00,1S96C00AA00,2S96C00AA00,3S96C00AA00,4S96C00AA00,5S96C00AA00,6S96C00AA00,7S96C00AA00,8S96C00AA00,9S96C00AA00,1SA6C00AA00,2SA6C00AA00,3SA6C00AA00,4SA6C00AA00,5SA6C00AA00,6SA6C00AA00,7SA6C00AA00,8SA6C00AA00,9SA6C00AA00,1SC6C00AA00,2SC6C00AA00,3SC6C00AA00,4SC6C00AA00,5SC6C00AA00,6SC6C00AA00,7SC6C00AA00,8SC6C00AA00,9SC6C00AA00,1SD6C00AA00,2SD6C00AA00,3SD6C00AA00,4SD6C00AA00,5SD6C00AA00,6SD6C00AA00,7SD6C00AA00,8SD6C00AA00,9SD6C00AA00,1SE6C00AA00,2SE6C00AA00,3SE6C00AA00,4SE6C00AA00,5SE6C00AA00,6SE6C00AA00,7SE6C00AA00,8SE6C00AA00,9SE6C00AA00,1SF6C00AA00,2SF6C00AA00,3SF6C00AA00,4SF6C00AA00,5SF6C00AA00,6SF6C00AA00,7SF6C00AA00,8SF6C00AA00,9SF6C00AA00,1SG6C00AA00,2SG6C00AA00,3SG6C00AA00,4SG6C00AA00,5SG6C00AA00,6SG6C00AA00,7SG6C00AA00,8SG6C00AA00,9SG6C00AA00,1SH6C00AA00,2SH6C00AA00,3SH6C00AA00,4SH6C00AA00,5SH6C00AA00,6SH6C00AA00,7SH6C00AA00,8SH6C00AA00,9SH6C00AA00,1SJ6C00AA00,2SJ6C00AA00,3SJ6C00AA00,4SJ6C00AA00,5SJ6C00AA00,6SJ6C00AA00,7SJ6C00AA00,8SJ6C00AA00,9SJ6C00AA00,1SK6C00AA00,2SK6C00AA00,3SK6C00AA00,4SK6C00AA00,5SK6C00AA00,6SK6C00AA00,7SK6C00AA00,8SK6C00AA00,9SK6C00AA00,1SM6C00AA00,2SM6C00AA00,3SM6C00AA00,4SM6C00AA00,5SM6C00AA00,6SM6C00AA00,7SM6C00AA00,8SM6C00AA00,9SM6C00AA00,1SN6C00AA00,2SN6C00AA00,3SN6C00AA00,4SN6C00AA00,5SN6C00AA00,6SN6C00AA00,7SN6C00AA00,8SN6C00AA00,9SN6C00AA00,1SP6C00AA00,2SP6C00AA00,3SP6C00AA00,4SP6C00AA00,5SP6C00AA00,6SP6C00AA00,7SP6C00AA00,8SP6C00AA00,9SP6C00AA00,1SQ6C00AA00,2SQ6C00AA00,3SQ6C00AA00,4SQ6C00AA00,5SQ6C00AA00,6SQ6C00AA00,7SQ6C00AA00,8SQ6C00AA00,9SQ6C00AA00,1SR6C00AA00,2SR6C00AA00,3SR6C00AA00,4SR6C00AA00,5SR6C00AA00,6SR6C00AA00,7SR6C00AA00,8SR6C00AA00,9SR6C00AA00,1SS6C00AA00,2SS6C00AA00,3SS6C00AA00,4SS6C00AA00,5SS6C00AA00,6SS6C00AA00,7SS6C00AA00,8SS6C00AA00,9SS6C00AA00,1SU6C00AA00,2SU6C00AA00,3SU6C00AA00,4SU6C00AA00,5SU6C00AA00,6SU6C00AA00,7SU6C00AA00,8SU6C00AA00,9SU6C00AA00,1SV6C00AA00,2SV6C00AA00,3SV6C00AA00,4SV6C00AA00,5SV6C00AA00,6SV6C00AA00,7SV6C00AA00,8SV6C00AA00,9SV6C00AA00,1SW6C00AA00,2SW6C00AA00,3SW6C00AA00,4SW6C00AA00,5SW6C00AA00,6SW6C00AA00,7SW6C00AA00,8SW6C00AA00,9SW6C00AA00,1SX6C00AA00,2SX6C00AA00,3SX6C00AA00,4SX6C00AA00,5SX6C00AA00,6SX6C00AA00,7SX6C00AA00,8SX6C00AA00,9SX6C00AA00,1SY6C00AA00,2SY6C00AA00,3SY6C00AA00,4SY6C00AA00,5SY6C00AA00,6SY6C00AA00,7SY6C00AA00,8SY6C00AA00,9SY6C00AA00,1S07C00AA00,2S07C00AA00,3S07C00AA00,4S07C00AA00,5S07C00AA00,6S07C00AA00,7S07C00AA00,8S07C00AA00,9S07C00AA00,1S17C00AA00,2S17C00AA00,3S17C00AA00,4S17C00AA00,5S17C00AA00,6S17C00AA00,7S17C00AA00,8S17C00AA00,9S17C00AA00,1S27C00AA00,2S27C00AA00,3S27C00AA00,4S27C00AA00,5S27C00AA00,6S27C00AA00,7S27C00AA00,8S27C00AA00,9S27C00AA00,1S37C00AA00,2S37C00AA00,3S37C00AA00,4S37C00AA00,5S37C00AA00,6S37C00AA00,7S37C00AA00,8S37C00AA00,9S37C00AA00,1S47C00AA00,2S47C00AA00,3S47C00AA00,4S47C00AA00,5S47C00AA00,6S47C00AA00,7S47C00AA00,8S47C00AA00,9S47C00AA00,1S57C00AA00,2S57C00AA00,3S57C00AA00,4S57C00AA00,5S57C00AA00,6S57C00AA00,7S57C00AA00,8S57C00AA00,9S57C00AA00,1S67C00AA00,2S67C00AA00,3S67C00AA00,4S67C00AA00,5S67C00AA00,6S67C00AA00,7S67C00AA00,8S67C00AA00,9S67C00AA00,1S77C00AA00,2S77C00AA00,3S77C00AA00,4S77C00AA00,5S77C00AA00,6S77C00AA00,7S77C00AA00,8S77C00AA00,9S77C00AA00,1S87C00AA00,2S87C00AA00,3S87C00AA00,4S87C00AA00,5S87C00AA00,6S87C00AA00,7S87C00AA00,8S87C00AA00,9S87C00AA00,1S97C00AA00,2S97C00AA00,3S97C00AA00,4S97C00AA00,5S97C00AA00,6S97C00AA00,7S97C00AA00,8S97C00AA00,9S97C00AA00,1SA7C00AA00,2SA7C00AA00,3SA7C00AA00,4SA7C00AA00,5SA7C00AA00,6SA7C00AA00,7SA7C00AA00,8SA7C00AA00,9SA7C00AA00,1SC7C00AA00,2SC7C00AA00,3SC7C00AA00,4SC7C00AA00,5SC7C00AA00,6SC7C00AA00,7SC7C00AA00,8SC7C00AA00,9SC7C00AA00,1SD7C00AA00,2SD7C00AA00,3SD7C00AA00,4SD7C00AA00,5SD7C00AA00,6SD7C00AA00,7SD7C00AA00,8SD7C00AA00,9SD7C00AA00,1SE7C00AA00,2SE7C00AA00,3SE7C00AA00,4SE7C00AA00,5SE7C00AA00,6SE7C00AA00,7SE7C00AA00,8SE7C00AA00,9SE7C00AA00,1SF7C00AA00,2SF7C00AA00,3SF7C00AA00,4SF7C00AA00,5SF7C00AA00,6SF7C00AA00,7SF7C00AA00,8SF7C00AA00,9SF7C00AA00,1SG7C00AA00,2SG7C00AA00,3SG7C00AA00,4SG7C00AA00,5SG7C00AA00,6SG7C00AA00,7SG7C00AA00,8SG7C00AA00,9SG7C00AA00,1SH7C00AA00,2SH7C00AA00,3SH7C00AA00,4SH7C00AA00,5SH7C00AA00,6SH7C00AA00,7SH7C00AA00,8SH7C00AA00,9SH7C00AA00,1SJ7C00AA00,2SJ7C00AA00,3SJ7C00AA00,4SJ7C00AA00,5SJ7C00AA00,6SJ7C00AA00,7SJ7C00AA00,8SJ7C00AA00,9SJ7C00AA00,1SK7C00AA00,2SK7C00AA00,3SK7C00AA00,4SK7C00AA00,5SK7C00AA00,6SK7C00AA00,7SK7C00AA00,8SK7C00AA00,9SK7C00AA00,1SM7C00AA00,2SM7C00AA00,3SM7C00AA00,4SM7C00AA00,5SM7C00AA00,6SM7C00AA00,7SM7C00AA00,8SM7C00AA00,9SM7C00AA00,1SN7C00AA00,2SN7C00AA00,3SN7C00AA00,4SN7C00AA00,5SN7C00AA00,6SN7C00AA00,7SN7C00AA00,8SN7C00AA00,9SN7C00AA00,1SP7C00AA00,2SP7C00AA00,3SP7C00AA00,4SP7C00AA00,5SP7C00AA00,6SP7C00AA00,7SP7C00AA00,8SP7C00AA00,9SP7C00AA00,1SQ7C00AA00,2SQ7C00AA00,3SQ7C00AA00,4SQ7C00AA00,5SQ7C00AA00,6SQ7C00AA00,7SQ7C00AA00,8SQ7C00AA00,9SQ7C00AA00,1SR7C00AA00,2SR7C00AA00,3SR7C00AA00,4SR7C00AA00,5SR7C00AA00,6SR7C00AA00,7SR7C00AA00,8SR7C00AA00,9SR7C00AA00,1SS7C00AA00,2SS7C00AA00,3SS7C00AA00,4SS7C00AA00,5SS7C00AA00,6SS7C00AA00,7SS7C00AA00,8SS7C00AA00,9SS7C00AA00,1SU7C00AA00,2SU7C00AA00,3SU7C00AA00,4SU7C00AA00,5SU7C00AA00,6SU7C00AA00,7SU7C00AA00,8SU7C00AA00,9SU7C00AA00,1SV7C00AA00,2SV7C00AA00,3SV7C00AA00,4SV7C00AA00,5SV7C00AA00,6SV7C00AA00,7SV7C00AA00,8SV7C00AA00,9SV7C00AA00,1SW7C00AA00,2SW7C00AA00,3SW7C00AA00,4SW7C00AA00,5SW7C00AA00,6SW7C00AA00,7SW7C00AA00,8SW7C00AA00,9SW7C00AA00,1SX7C00AA00,2SX7C00AA00,3SX7C00AA00,4SX7C00AA00,5SX7C00AA00,6SX7C00AA00,7SX7C00AA00,8SX7C00AA00,9SX7C00AA00,1SY7C00AA00,2SY7C00AA00,3SY7C00AA00,4SY7C00AA00,5SY7C00AA00,6SY7C00AA00,7SY7C00AA00,8SY7C00AA00,9SY7C00AA00,1S08C00AA00,2S08C00AA00,3S08C00AA00,4S08C00AA00,5S08C00AA00,6S08C00AA00,7S08C00AA00,8S08C00AA00,9S08C00AA00,1S18C00AA00,2S18C00AA00,3S18C00AA00,4S18C00AA00,5S18C00AA00,6S18C00AA00,7S18C00AA00,8S18C00AA00,9S18C00AA00,1S28C00AA00,2S28C00AA00,3S28C00AA00,4S28C00AA00,5S28C00AA00,6S28C00AA00,7S28C00AA00,8S28C00AA00,9S28C00AA00,1S38C00AA00,2S38C00AA00,3S38C00AA00,4S38C00AA00,5S38C00AA00,6S38C00AA00,7S38C00AA00,8S38C00AA00,9S38C00AA00,1S48C00AA00,2S48C00AA00,3S48C00AA00,4S48C00AA00,5S48C00AA00,6S48C00AA00,7S48C00AA00,8S48C00AA00,9S48C00AA00,1S58C00AA00,2S58C00AA00,3S58C00AA00,4S58C00AA00,5S58C00AA00,6S58C00AA00,7S58C00AA00,8S58C00AA00,9S58C00AA00,1S68C00AA00,2S68C00AA00,3S68C00AA00,4S68C00AA00,5S68C00AA00,6S68C00AA00,7S68C00AA00,8S68C00AA00,9S68C00AA00,1S78C00AA00,2S78C00AA00,3S78C00AA00,4S78C00AA00,5S78C00AA00,6S78C00AA00,7S78C00AA00,8S78C00AA00,9S78C00AA00,1S88C00AA00,2S88C00AA00,3S88C00AA00,4S88C00AA00,5S88C00AA00,6S88C00AA00,7S88C00AA00,8S88C00AA00,9S88C00AA00,1S98C00AA00,2S98C00AA00,3S98C00AA00,4S98C00AA00,5S98C00AA00,6S98C00AA00,7S98C00AA00,8S98C00AA00,9S98C00AA00,1SA8C00AA00,2SA8C00AA00,3SA8C00AA00,4SA8C00AA00,5SA8C00AA00,6SA8C00AA00,7SA8C00AA00,8SA8C00AA00,9SA8C00AA00,1SC8C00AA00,2SC8C00AA00,3SC8C00AA00,4SC8C00AA00,5SC8C00AA00,6SC8C00AA00,7SC8C00AA00,8SC8C00AA00,9SC8C00AA00,1SD8C00AA00,2SD8C00AA00,3SD8C00AA00,4SD8C00AA00,5SD8C00AA00,6SD8C00AA00,7SD8C00AA00,8SD8C00AA00,9SD8C00AA00,1SE8C00AA00,2SE8C00AA00,3SE8C00AA00,4SE8C00AA00,5SE8C00AA00,6SE8C00AA00,7SE8C00AA00,8SE8C00AA00,9SE8C00AA00,1SF8C00AA00,2SF8C00AA00,3SF8C00AA00,4SF8C00AA00,5SF8C00AA00,6SF8C00AA00,7SF8C00AA00,8SF8C00AA00,9SF8C00AA00,1SG8C00AA00,2SG8C00AA00,3SG8C00AA00,4SG8C00AA00,5SG8C00AA00,6SG8C00AA00,7SG8C00AA00,8SG8C00AA00,9SG8C00AA00,1SH8C00AA00,2SH8C00AA00,3SH8C00AA00,4SH8C00AA00,5SH8C00AA00,6SH8C00AA00,7SH8C00AA00,8SH8C00AA00,9SH8C00AA00,1SJ8C00AA00,2SJ8C00AA00,3SJ8C00AA00,4SJ8C00AA00,5SJ8C00AA00,6SJ8C00AA00,7SJ8C00AA00,8SJ8C00AA00,9SJ8C00AA00,1SK8C00AA00,2SK8C00AA00,3SK8C00AA00,4SK8C00AA00,5SK8C00AA00,6SK8C00AA00,7SK8C00AA00,8SK8C00AA00,9SK8C00AA00,1SM8C00AA00,2SM8C00AA00,3SM8C00AA00,4SM8C00AA00,5SM8C00AA00,6SM8C00AA00,7SM8C00AA00,8SM8C00AA00,9SM8C00AA00,1SN8C00AA00,2SN8C00AA00,3SN8C00AA00,4SN8C00AA00,5SN8C00AA00,6SN8C00AA00,7SN8C00AA00,8SN8C00AA00,9SN8C00AA00,1SP8C00AA00,2SP8C00AA00,3SP8C00AA00,4SP8C00AA00,5SP8C00AA00,6SP8C00AA00,7SP8C00AA00,8SP8C00AA00,9SP8C00AA00,1SQ8C00AA00,2SQ8C00AA00,3SQ8C00AA00,4SQ8C00AA00,5SQ8C00AA00,6SQ8C00AA00,7SQ8C00AA00,8SQ8C00AA00,9SQ8C00AA00,1SR8C00AA00,2SR8C00AA00,3SR8C00AA00,4SR8C00AA00,5SR8C00AA00,6SR8C00AA00,7SR8C00AA00,8SR8C00AA00,9SR8C00AA00,1SS8C00AA00,2SS8C00AA00,3SS8C00AA00,4SS8C00AA00,5SS8C00AA00,6SS8C00AA00,7SS8C00AA00,8SS8C00AA00,9SS8C00AA00,1SU8C00AA00,2SU8C00AA00,3SU8C00AA00,4SU8C00AA00,5SU8C00AA00,6SU8C00AA00,7SU8C00AA00,8SU8C00AA00,9SU8C00AA00,1SV8C00AA00,2SV8C00AA00,3SV8C00AA00,4SV8C00AA00,5SV8C00AA00,6SV8C00AA00,7SV8C00AA00,8SV8C00AA00,9SV8C00AA00,1SW8C00AA00,2SW8C00AA00,3SW8C00AA00,4SW8C00AA00,5SW8C00AA00,6SW8C00AA00,7SW8C00AA00,8SW8C00AA00,9SW8C00AA00,1SX8C00AA00,2SX8C00AA00,3SX8C00AA00,4SX8C00AA00,5SX8C00AA00,6SX8C00AA00,7SX8C00AA00,8SX8C00AA00,9SX8C00AA00,1SY8C00AA00,2SY8C00AA00,3SY8C00AA00,4SY8C00AA00,5SY8C00AA00,6SY8C00AA00,7SY8C00AA00,8SY8C00AA00,9SY8C00AA00,1S09C00AA00,2S09C00AA00,3S09C00AA00,4S09C00AA00,5S09C00AA00,6S09C00AA00,7S09C00AA00,8S09C00AA00,9S09C00AA00,1S19C00AA00,2S19C00AA00,3S19C00AA00,4S19C00AA00,5S19C00AA00,6S19C00AA00,7S19C00AA00,8S19C00AA00,9S19C00AA00,1S29C00AA00,2S29C00AA00,3S29C00AA00,4S29C00AA00,5S29C00AA00,6S29C00AA00,7S29C00AA00,8S29C00AA00,9S29C00AA00,1S39C00AA00,2S39C00AA00,3S39C00AA00,4S39C00AA00,5S39C00AA00,6S39C00AA00,7S39C00AA00,8S39C00AA00,9S39C00AA00,1S49C00AA00,2S49C00AA00,3S49C00AA00,4S49C00AA00,5S49C00AA00,6S49C00AA00,7S49C00AA00,8S49C00AA00,9S49C00AA00,1S59C00AA00,2S59C00AA00,3S59C00AA00,4S59C00AA00,5S59C00AA00,6S59C00AA00,7S59C00AA00,8S59C00AA00,9S59C00AA00,1S69C00AA00,2S69C00AA00,3S69C00AA00,4S69C00AA00,5S69C00AA00,6S69C00AA00,7S69C00AA00,8S69C00AA00,9S69C00AA00,1S79C00AA00,2S79C00AA00,3S79C00AA00,4S79C00AA00,5S79C00AA00,6S79C00AA00,7S79C00AA00,8S79C00AA00,9S79C00AA00,1S89C00AA00,2S89C00AA00,3S89C00AA00,4S89C00AA00,5S89C00AA00,6S89C00AA00,7S89C00AA00,8S89C00AA00,9S89C00AA00,1S99C00AA00,2S99C00AA00,3S99C00AA00,4S99C00AA00,5S99C00AA00,6S99C00AA00,7S99C00AA00,8S99C00AA00,9S99C00AA00,1SA9C00AA00,2SA9C00AA00,3SA9C00AA00,4SA9C00AA00,5SA9C00AA00,6SA9C00AA00,7SA9C00AA00,8SA9C00AA00,9SA9C00AA00,1SC9C00AA00,2SC9C00AA00,3SC9C00AA00,4SC9C00AA00,5SC9C00AA00,6SC9C00AA00,7SC9C00AA00,8SC9C00AA00,9SC9C00AA00,1SD9C00AA00,2SD9C00AA00,3SD9C00AA00,4SD9C00AA00,5SD9C00AA00,6SD9C00AA00,7SD9C00AA00,8SD9C00AA00,9SD9C00AA00,1SE9C00AA00,2SE9C00AA00,3SE9C00AA00,4SE9C00AA00,5SE9C00AA00,6SE9C00AA00,7SE9C00AA00,8SE9C00AA00,9SE9C00AA00,1SF9C00AA00,2SF9C00AA00,3SF9C00AA00,4SF9C00AA00,5SF9C00AA00,6SF9C00AA00,7SF9C00AA00,8SF9C00AA00,9SF9C00AA00,1SG9C00AA00,2SG9C00AA00,3SG9C00AA00,4SG9C00AA00,5SG9C00AA00,6SG9C00AA00,7SG9C00AA00,8SG9C00AA00,9SG9C00AA00,1SH9C00AA00,2SH9C00AA00,3SH9C00AA00,4SH9C00AA00,5SH9C00AA00,6SH9C00AA00,7SH9C00AA00,8SH9C00AA00,9SH9C00AA00,1SJ9C00AA00,2SJ9C00AA00,3SJ9C00AA00,4SJ9C00AA00,5SJ9C00AA00,6SJ9C00AA00,7SJ9C00AA00,8SJ9C00AA00,9SJ9C00AA00,1SK9C00AA00,2SK9C00AA00,3SK9C00AA00,4SK9C00AA00,5SK9C00AA00,6SK9C00AA00,7SK9C00AA00,8SK9C00AA00,9SK9C00AA00,1SM9C00AA00,2SM9C00AA00,3SM9C00AA00,4SM9C00AA00,5SM9C00AA00,6SM9C00AA00,7SM9C00AA00,8SM9C00AA00,9SM9C00AA00,1SN9C00AA00,2SN9C00AA00,3SN9C00AA00,4SN9C00AA00,5SN9C00AA00,6SN9C00AA00,7SN9C00AA00,8SN9C00AA00,9SN9C00AA00,1SP9C00AA00,2SP9C00AA00,3SP9C00AA00,4SP9C00AA00,5SP9C00AA00,6SP9C00AA00,7SP9C00AA00,8SP9C00AA00,9SP9C00AA00,1SQ9C00AA00,2SQ9C00AA00,3SQ9C00AA00,4SQ9C00AA00,5SQ9C00AA00,6SQ9C00AA00,7SQ9C00AA00,8SQ9C00AA00,9SQ9C00AA00,1SR9C00AA00,2SR9C00AA00,3SR9C00AA00,4SR9C00AA00,5SR9C00AA00,6SR9C00AA00,7SR9C00AA00,8SR9C00AA00,9SR9C00AA00,1SS9C00AA00,2SS9C00AA00,3SS9C00AA00,4SS9C00AA00,5SS9C00AA00,6SS9C00AA00,7SS9C00AA00,8SS9C00AA00,9SS9C00AA00,1SU9C00AA00,2SU9C00AA00,3SU9C00AA00,4SU9C00AA00,5SU9C00AA00,6SU9C00AA00,7SU9C00AA00,8SU9C00AA00,9SU9C00AA00,1SV9C00AA00,2SV9C00AA00,3SV9C00AA00,4SV9C00AA00,5SV9C00AA00,6SV9C00AA00,7SV9C00AA00,8SV9C00AA00,9SV9C00AA00,1SW9C00AA00,2SW9C00AA00,3SW9C00AA00,4SW9C00AA00,5SW9C00AA00,6SW9C00AA00,7SW9C00AA00,8SW9C00AA00,9SW9C00AA00,1SX9C00AA00,2SX9C00AA00,3SX9C00AA00,4SX9C00AA00,5SX9C00AA00,6SX9C00AA00,7SX9C00AA00,8SX9C00AA00,9SX9C00AA00,1SY9C00AA00,2SY9C00AA00,3SY9C00AA00,4SY9C00AA00,5SY9C00AA00,6SY9C00AA00,7SY9C00AA00,8SY9C00AA00,9SY9C00AA00,1S00D00AA00,2S00D00AA00,3S00D00AA00,4S00D00AA00,5S00D00AA00,6S00D00AA00,7S00D00AA00,8S00D00AA00,9S00D00AA00,1S10D00AA00,2S10D00AA00,3S10D00AA00,4S10D00AA00,5S10D00AA00,6S10D00AA00,7S10D00AA00,8S10D00AA00,9S10D00AA00,1S20D00AA00,2S20D00AA00,3S20D00AA00,4S20D00AA00,5S20D00AA00,6S20D00AA00,7S20D00AA00,8S20D00AA00,9S20D00AA00,1S30D00AA00,2S30D00AA00,3S30D00AA00,4S30D00AA00,5S30D00AA00,6S30D00AA00,7S30D00AA00,8S30D00AA00,9S30D00AA00,1S40D00AA00,2S40D00AA00,3S40D00AA00,4S40D00AA00,5S40D00AA00,6S40D00AA00,7S40D00AA00,8S40D00AA00,9S40D00AA00,1S50D00AA00,2S50D00AA00,3S50D00AA00,4S50D00AA00,5S50D00AA00,6S50D00AA00,7S50D00AA00,8S50D00AA00,9S50D00AA00,1S60D00AA00,2S60D00AA00,3S60D00AA00,4S60D00AA00,5S60D00AA00,6S60D00AA00,7S60D00AA00,8S60D00AA00,9S60D00AA00,1S70D00AA00,2S70D00AA00,3S70D00AA00,4S70D00AA00,5S70D00AA00,6S70D00AA00,7S70D00AA00,8S70D00AA00,9S70D00AA00,1S80D00AA00,2S80D00AA00,3S80D00AA00,4S80D00AA00,5S80D00AA00,6S80D00AA00,7S80D00AA00,8S80D00AA00,9S80D00AA00,1S90D00AA00,2S90D00AA00,3S90D00AA00,4S90D00AA00,5S90D00AA00,6S90D00AA00,7S90D00AA00,8S90D00AA00,9S90D00AA00,1SA0D00AA00,2SA0D00AA00,3SA0D00AA00,4SA0D00AA00,5SA0D00AA00,6SA0D00AA00,7SA0D00AA00,8SA0D00AA00,9SA0D00AA00,1SC0D00AA00,2SC0D00AA00,3SC0D00AA00,4SC0D00AA00,5SC0D00AA00,6SC0D00AA00,7SC0D00AA00,8SC0D00AA00,9SC0D00AA00,1SD0D00AA00,2SD0D00AA00,3SD0D00AA00,4SD0D00AA00,5SD0D00AA00,6SD0D00AA00,7SD0D00AA00,8SD0D00AA00,9SD0D00AA00,1SE0D00AA00,2SE0D00AA00,3SE0D00AA00,4SE0D00AA00,5SE0D00AA00,6SE0D00AA00,7SE0D00AA00,8SE0D00AA00,9SE0D00AA00,1SF0D00AA00,2SF0D00AA00,3SF0D00AA00,4SF0D00AA00,5SF0D00AA00,6SF0D00AA00,7SF0D00AA00,8SF0D00AA00,9SF0D00AA00,1SG0D00AA00,2SG0D00AA00,3SG0D00AA00,4SG0D00AA00,5SG0D00AA00,6SG0D00AA00,7SG0D00AA00,8SG0D00AA00,9SG0D00AA00,1SH0D00AA00,2SH0D00AA00,3SH0D00AA00,4SH0D00AA00,5SH0D00AA00,6SH0D00AA00,7SH0D00AA00,8SH0D00AA00,9SH0D00AA00,1SJ0D00AA00,2SJ0D00AA00,3SJ0D00AA00,4SJ0D00AA00,5SJ0D00AA00,6SJ0D00AA00,7SJ0D00AA00,8SJ0D00AA00,9SJ0D00AA00,1SK0D00AA00,2SK0D00AA00,3SK0D00AA00,4SK0D00AA00,5SK0D00AA00,6SK0D00AA00,7SK0D00AA00,8SK0D00AA00,9SK0D00AA00,1SM0D00AA00,2SM0D00AA00,3SM0D00AA00,4SM0D00AA00,5SM0D00AA00,6SM0D00AA00,7SM0D00AA00,8SM0D00AA00,9SM0D00AA00,1SN0D00AA00,2SN0D00AA00,3SN0D00AA00,4SN0D00AA00,5SN0D00AA00,6SN0D00AA00,7SN0D00AA00,8SN0D00AA00,9SN0D00AA00,1SP0D00AA00,2SP0D00AA00,3SP0D00AA00,4SP0D00AA00,5SP0D00AA00,6SP0D00AA00,7SP0D00AA00,8SP0D00AA00,9SP0D00AA00,1SQ0D00AA00,2SQ0D00AA00,3SQ0D00AA00,4SQ0D00AA00,5SQ0D00AA00,6SQ0D00AA00,7SQ0D00AA00,8SQ0D00AA00,9SQ0D00AA00,1SR0D00AA00,2SR0D00AA00,3SR0D00AA00,4SR0D00AA00,5SR0D00AA00,6SR0D00AA00,7SR0D00AA00,8SR0D00AA00,9SR0D00AA00,1SS0D00AA00,2SS0D00AA00,3SS0D00AA00,4SS0D00AA00,5SS0D00AA00,6SS0D00AA00,7SS0D00AA00,8SS0D00AA00,9SS0D00AA00,1SU0D00AA00,2SU0D00AA00,3SU0D00AA00,4SU0D00AA00,5SU0D00AA00,6SU0D00AA00,7SU0D00AA00,8SU0D00AA00,9SU0D00AA00,1SV0D00AA00,2SV0D00AA00,3SV0D00AA00,4SV0D00AA00,5SV0D00AA00,6SV0D00AA00,7SV0D00AA00,8SV0D00AA00,9SV0D00AA00,1SW0D00AA00,2SW0D00AA00,3SW0D00AA00,4SW0D00AA00,5SW0D00AA00,6SW0D00AA00,7SW0D00AA00,8SW0D00AA00,9SW0D00AA00,1SX0D00AA00,2SX0D00AA00,3SX0D00AA00,4SX0D00AA00,5SX0D00AA00,6SX0D00AA00,7SX0D00AA00,8SX0D00AA00,9SX0D00AA00,1SY0D00AA00,2SY0D00AA00,3SY0D00AA00,4SY0D00AA00,5SY0D00AA00,6SY0D00AA00,7SY0D00AA00,8SY0D00AA00,9SY0D00AA00,1S01D00AA00,2S01D00AA00,3S01D00AA00,4S01D00AA00,5S01D00AA00,6S01D00AA00,7S01D00AA00,8S01D00AA00,9S01D00AA00,1S11D00AA00,2S11D00AA00,3S11D00AA00,4S11D00AA00,5S11D00AA00,6S11D00AA00,7S11D00AA00,8S11D00AA00,9S11D00AA00,1S21D00AA00,2S21D00AA00,3S21D00AA00,4S21D00AA00,5S21D00AA00,6S21D00AA00,7S21D00AA00,8S21D00AA00,9S21D00AA00,1S31D00AA00,2S31D00AA00,3S31D00AA00,4S31D00AA00,5S31D00AA00,6S31D00AA00,7S31D00AA00,8S31D00AA00,9S31D00AA00,1S41D00AA00,2S41D00AA00,3S41D00AA00,4S41D00AA00,5S41D00AA00,6S41D00AA00,7S41D00AA00,8S41D00AA00,9S41D00AA00,1S51D00AA00,2S51D00AA00,3S51D00AA00,4S51D00AA00,5S51D00AA00,6S51D00AA00,7S51D00AA00,8S51D00AA00,9S51D00AA00,1S61D00AA00,2S61D00AA00,3S61D00AA00,4S61D00AA00,5S61D00AA00,6S61D00AA00,7S61D00AA00,8S61D00AA00,9S61D00AA00,1S71D00AA00,2S71D00AA00,3S71D00AA00,4S71D00AA00,5S71D00AA00,6S71D00AA00,7S71D00AA00,8S71D00AA00,9S71D00AA00,1S81D00AA00,2S81D00AA00,3S81D00AA00,4S81D00AA00,5S81D00AA00,6S81D00AA00,7S81D00AA00,8S81D00AA00,9S81D00AA00,1S91D00AA00,2S91D00AA00,3S91D00AA00,4S91D00AA00,5S91D00AA00,6S91D00AA00,7S91D00AA00,8S91D00AA00,9S91D00AA00,1SA1D00AA00,2SA1D00AA00,3SA1D00AA00,4SA1D00AA00,5SA1D00AA00,6SA1D00AA00,7SA1D00AA00,8SA1D00AA00,9SA1D00AA00,1SC1D00AA00,2SC1D00AA00,3SC1D00AA00,4SC1D00AA00,5SC1D00AA00,6SC1D00AA00,7SC1D00AA00,8SC1D00AA00,9SC1D00AA00,1SD1D00AA00,2SD1D00AA00,3SD1D00AA00,4SD1D00AA00,5SD1D00AA00,6SD1D00AA00,7SD1D00AA00,8SD1D00AA00,9SD1D00AA00,1SE1D00AA00,2SE1D00AA00,3SE1D00AA00,4SE1D00AA00,5SE1D00AA00,6SE1D00AA00,7SE1D00AA00,8SE1D00AA00,9SE1D00AA00,1SF1D00AA00,2SF1D00AA00,3SF1D00AA00,4SF1D00AA00,5SF1D00AA00,6SF1D00AA00,7SF1D00AA00,8SF1D00AA00,9SF1D00AA00,1SG1D00AA00,2SG1D00AA00,3SG1D00AA00,4SG1D00AA00,5SG1D00AA00,6SG1D00AA00,7SG1D00AA00,8SG1D00AA00,9SG1D00AA00,1SH1D00AA00,2SH1D00AA00,3SH1D00AA00,4SH1D00AA00,5SH1D00AA00,6SH1D00AA00,7SH1D00AA00,8SH1D00AA00,9SH1D00AA00,1SJ1D00AA00,2SJ1D00AA00,3SJ1D00AA00,4SJ1D00AA00,5SJ1D00AA00,6SJ1D00AA00,7SJ1D00AA00,8SJ1D00AA00,9SJ1D00AA00,1SK1D00AA00,2SK1D00AA00,3SK1D00AA00,4SK1D00AA00,5SK1D00AA00,6SK1D00AA00,7SK1D00AA00,8SK1D00AA00,9SK1D00AA00,1SM1D00AA00,2SM1D00AA00,3SM1D00AA00,4SM1D00AA00,5SM1D00AA00,6SM1D00AA00,7SM1D00AA00,8SM1D00AA00,9SM1D00AA00,1SN1D00AA00,2SN1D00AA00,3SN1D00AA00,4SN1D00AA00,5SN1D00AA00,6SN1D00AA00,7SN1D00AA00,8SN1D00AA00,9SN1D00AA00,1SP1D00AA00,2SP1D00AA00,3SP1D00AA00,4SP1D00AA00,5SP1D00AA00,6SP1D00AA00,7SP1D00AA00,8SP1D00AA00,9SP1D00AA00,1SQ1D00AA00,2SQ1D00AA00,3SQ1D00AA00,4SQ1D00AA00,5SQ1D00AA00,6SQ1D00AA00,7SQ1D00AA00,8SQ1D00AA00,9SQ1D00AA00,1SR1D00AA00,2SR1D00AA00,3SR1D00AA00,4SR1D00AA00,5SR1D00AA00,6SR1D00AA00,7SR1D00AA00,8SR1D00AA00,9SR1D00AA00,1SS1D00AA00,2SS1D00AA00,3SS1D00AA00,4SS1D00AA00,5SS1D00AA00,6SS1D00AA00,7SS1D00AA00,8SS1D00AA00,9SS1D00AA00,1SU1D00AA00,2SU1D00AA00,3SU1D00AA00,4SU1D00AA00,5SU1D00AA00,6SU1D00AA00,7SU1D00AA00,8SU1D00AA00,9SU1D00AA00,1SV1D00AA00,2SV1D00AA00,3SV1D00AA00,4SV1D00AA00,5SV1D00AA00,6SV1D00AA00,7SV1D00AA00,8SV1D00AA00,9SV1D00AA00,1SW1D00AA00,2SW1D00AA00,3SW1D00AA00,4SW1D00AA00,5SW1D00AA00,6SW1D00AA00,7SW1D00AA00,8SW1D00AA00,9SW1D00AA00,1SX1D00AA00,2SX1D00AA00,3SX1D00AA00,4SX1D00AA00,5SX1D00AA00,6SX1D00AA00,7SX1D00AA00,8SX1D00AA00,9SX1D00AA00,1SY1D00AA00,2SY1D00AA00,3SY1D00AA00,4SY1D00AA00,5SY1D00AA00,6SY1D00AA00,7SY1D00AA00,8SY1D00AA00,9SY1D00AA00,1S02D00AA00,2S02D00AA00,3S02D00AA00,4S02D00AA00,5S02D00AA00,6S02D00AA00,7S02D00AA00,8S02D00AA00,9S02D00AA00,1S12D00AA00,2S12D00AA00,3S12D00AA00,4S12D00AA00,5S12D00AA00,6S12D00AA00,7S12D00AA00,8S12D00AA00,9S12D00AA00,1S22D00AA00,2S22D00AA00,3S22D00AA00,4S22D00AA00,5S22D00AA00,6S22D00AA00,7S22D00AA00,8S22D00AA00,9S22D00AA00,1S32D00AA00,2S32D00AA00,3S32D00AA00,4S32D00AA00,5S32D00AA00,6S32D00AA00,7S32D00AA00,8S32D00AA00,9S32D00AA00,1S42D00AA00,2S42D00AA00,3S42D00AA00,4S42D00AA00,5S42D00AA00,6S42D00AA00,7S42D00AA00,8S42D00AA00,9S42D00AA00,1S52D00AA00,2S52D00AA00,3S52D00AA00,4S52D00AA00,5S52D00AA00,6S52D00AA00,7S52D00AA00,8S52D00AA00,9S52D00AA00,1S62D00AA00,2S62D00AA00,3S62D00AA00,4S62D00AA00,5S62D00AA00,6S62D00AA00,7S62D00AA00,8S62D00AA00,9S62D00AA00,1S72D00AA00,2S72D00AA00,3S72D00AA00,4S72D00AA00,5S72D00AA00,6S72D00AA00,7S72D00AA00,8S72D00AA00,9S72D00AA00,1S82D00AA00,2S82D00AA00,3S82D00AA00,4S82D00AA00,5S82D00AA00,6S82D00AA00,7S82D00AA00,8S82D00AA00,9S82D00AA00,1S92D00AA00,2S92D00AA00,3S92D00AA00,4S92D00AA00,5S92D00AA00,6S92D00AA00,7S92D00AA00,8S92D00AA00,9S92D00AA00,1SA2D00AA00,2SA2D00AA00,3SA2D00AA00,4SA2D00AA00,5SA2D00AA00,6SA2D00AA00,7SA2D00AA00,8SA2D00AA00,9SA2D00AA00,1SC2D00AA00,2SC2D00AA00,3SC2D00AA00,4SC2D00AA00,5SC2D00AA00,6SC2D00AA00,7SC2D00AA00,8SC2D00AA00,9SC2D00AA00,1SD2D00AA00,2SD2D00AA00,3SD2D00AA00,4SD2D00AA00,5SD2D00AA00,6SD2D00AA00,7SD2D00AA00,8SD2D00AA00,9SD2D00AA00,1SE2D00AA00,2SE2D00AA00,3SE2D00AA00,4SE2D00AA00,5SE2D00AA00,6SE2D00AA00,7SE2D00AA00,8SE2D00AA00,9SE2D00AA00,1SF2D00AA00,2SF2D00AA00,3SF2D00AA00,4SF2D00AA00,5SF2D00AA00,6SF2D00AA00,7SF2D00AA00,8SF2D00AA00,9SF2D00AA00,1SG2D00AA00,2SG2D00AA00,3SG2D00AA00,4SG2D00AA00,5SG2D00AA00,6SG2D00AA00,7SG2D00AA00,8SG2D00AA00,9SG2D00AA00,1SH2D00AA00,2SH2D00AA00,3SH2D00AA00,4SH2D00AA00,5SH2D00AA00,6SH2D00AA00,7SH2D00AA00,8SH2D00AA00,9SH2D00AA00,1SJ2D00AA00,2SJ2D00AA00,3SJ2D00AA00,4SJ2D00AA00,5SJ2D00AA00,6SJ2D00AA00,7SJ2D00AA00,8SJ2D00AA00,9SJ2D00AA00,1SK2D00AA00,2SK2D00AA00,3SK2D00AA00,4SK2D00AA00,5SK2D00AA00,6SK2D00AA00,7SK2D00AA00,8SK2D00AA00,9SK2D00AA00,1SM2D00AA00,2SM2D00AA00,3SM2D00AA00,4SM2D00AA00,5SM2D00AA00,6SM2D00AA00,7SM2D00AA00,8SM2D00AA00,9SM2D00AA00,1SN2D00AA00,2SN2D00AA00,3SN2D00AA00,4SN2D00AA00,5SN2D00AA00,6SN2D00AA00,7SN2D00AA00,8SN2D00AA00,9SN2D00AA00,1SP2D00AA00,2SP2D00AA00,3SP2D00AA00,4SP2D00AA00,5SP2D00AA00,6SP2D00AA00,7SP2D00AA00,8SP2D00AA00,9SP2D00AA00,1SQ2D00AA00,2SQ2D00AA00,3SQ2D00AA00,4SQ2D00AA00,5SQ2D00AA00,6SQ2D00AA00,7SQ2D00AA00,8SQ2D00AA00,9SQ2D00AA00,1SR2D00AA00,2SR2D00AA00,3SR2D00AA00,4SR2D00AA00,5SR2D00AA00,6SR2D00AA00,7SR2D00AA00,8SR2D00AA00,9SR2D00AA00,1SS2D00AA00,2SS2D00AA00,3SS2D00AA00,4SS2D00AA00,5SS2D00AA00,6SS2D00AA00,7SS2D00AA00,8SS2D00AA00,9SS2D00AA00,1SU2D00AA00,2SU2D00AA00,3SU2D00AA00,4SU2D00AA00,5SU2D00AA00,6SU2D00AA00,7SU2D00AA00,8SU2D00AA00,9SU2D00AA00,1SV2D00AA00,2SV2D00AA00,3SV2D00AA00,4SV2D00AA00,5SV2D00AA00,6SV2D00AA00,7SV2D00AA00,8SV2D00AA00,9SV2D00AA00,1SW2D00AA00,2SW2D00AA00,3SW2D00AA00,4SW2D00AA00,5SW2D00AA00,6SW2D00AA00,7SW2D00AA00,8SW2D00AA00,9SW2D00AA00,1SX2D00AA00,2SX2D00AA00,3SX2D00AA00,4SX2D00AA00,5SX2D00AA00,6SX2D00AA00,7SX2D00AA00,8SX2D00AA00,9SX2D00AA00,1SY2D00AA00,2SY2D00AA00,3SY2D00AA00,4SY2D00AA00,5SY2D00AA00,6SY2D00AA00,7SY2D00AA00,8SY2D00AA00,9SY2D00AA00,1S03D00AA00,2S03D00AA00,3S03D00AA00,4S03D00AA00,5S03D00AA00,6S03D00AA00,7S03D00AA00,8S03D00AA00,9S03D00AA00,1S13D00AA00,2S13D00AA00,3S13D00AA00,4S13D00AA00,5S13D00AA00,6S13D00AA00,7S13D00AA00,8S13D00AA00,9S13D00AA00,1S23D00AA00,2S23D00AA00,3S23D00AA00,4S23D00AA00,5S23D00AA00,6S23D00AA00,7S23D00AA00,8S23D00AA00,9S23D00AA00,1S33D00AA00,2S33D00AA00,3S33D00AA00,4S33D00AA00,5S33D00AA00,6S33D00AA00,7S33D00AA00,8S33D00AA00,9S33D00AA00,1S43D00AA00,2S43D00AA00,3S43D00AA00,4S43D00AA00,5S43D00AA00,6S43D00AA00,7S43D00AA00,8S43D00AA00,9S43D00AA00,1S53D00AA00,2S53D00AA00,3S53D00AA00,4S53D00AA00,5S53D00AA00,6S53D00AA00,7S53D00AA00,8S53D00AA00,9S53D00AA00,1S63D00AA00,2S63D00AA00,3S63D00AA00,4S63D00AA00,5S63D00AA00,6S63D00AA00,7S63D00AA00,8S63D00AA00,9S63D00AA00,1S73D00AA00,2S73D00AA00,3S73D00AA00,4S73D00AA00,5S73D00AA00,6S73D00AA00,7S73D00AA00,8S73D00AA00,9S73D00AA00,1S83D00AA00,2S83D00AA00,3S83D00AA00,4S83D00AA00,5S83D00AA00,6S83D00AA00,7S83D00AA00,8S83D00AA00,9S83D00AA00,1S93D00AA00,2S93D00AA00,3S93D00AA00,4S93D00AA00,5S93D00AA00,6S93D00AA00,7S93D00AA00,8S93D00AA00,9S93D00AA00,1SA3D00AA00,2SA3D00AA00,3SA3D00AA00,4SA3D00AA00,5SA3D00AA00,6SA3D00AA00,7SA3D00AA00,8SA3D00AA00,9SA3D00AA00,1SC3D00AA00,2SC3D00AA00,3SC3D00AA00,4SC3D00AA00,5SC3D00AA00,6SC3D00AA00,7SC3D00AA00,8SC3D00AA00,9SC3D00AA00,1SD3D00AA00,2SD3D00AA00,3SD3D00AA00,4SD3D00AA00,5SD3D00AA00,6SD3D00AA00,7SD3D00AA00,8SD3D00AA00,9SD3D00AA00,1SE3D00AA00,2SE3D00AA00,3SE3D00AA00,4SE3D00AA00,5SE3D00AA00,6SE3D00AA00,7SE3D00AA00,8SE3D00AA00,9SE3D00AA00,1SF3D00AA00,2SF3D00AA00,3SF3D00AA00,4SF3D00AA00,5SF3D00AA00,6SF3D00AA00,7SF3D00AA00,8SF3D00AA00,9SF3D00AA00,1SG3D00AA00,2SG3D00AA00,3SG3D00AA00,4SG3D00AA00,5SG3D00AA00,6SG3D00AA00,7SG3D00AA00,8SG3D00AA00,9SG3D00AA00,1SH3D00AA00,2SH3D00AA00,3SH3D00AA00,4SH3D00AA00,5SH3D00AA00,6SH3D00AA00,7SH3D00AA00,8SH3D00AA00,9SH3D00AA00,1SJ3D00AA00,2SJ3D00AA00,3SJ3D00AA00,4SJ3D00AA00,5SJ3D00AA00,6SJ3D00AA00,7SJ3D00AA00,8SJ3D00AA00,9SJ3D00AA00,1SK3D00AA00,2SK3D00AA00,3SK3D00AA00,4SK3D00AA00,5SK3D00AA00,6SK3D00AA00,7SK3D00AA00,8SK3D00AA00,9SK3D00AA00,1SM3D00AA00,2SM3D00AA00,3SM3D00AA00,4SM3D00AA00,5SM3D00AA00,6SM3D00AA00,7SM3D00AA00,8SM3D00AA00,9SM3D00AA00,1SN3D00AA00,2SN3D00AA00,3SN3D00AA00,4SN3D00AA00,5SN3D00AA00,6SN3D00AA00,7SN3D00AA00,8SN3D00AA00,9SN3D00AA00,1SP3D00AA00,2SP3D00AA00,3SP3D00AA00,4SP3D00AA00,5SP3D00AA00,6SP3D00AA00,7SP3D00AA00,8SP3D00AA00,9SP3D00AA00,1SQ3D00AA00,2SQ3D00AA00,3SQ3D00AA00,4SQ3D00AA00,5SQ3D00AA00,6SQ3D00AA00,7SQ3D00AA00,8SQ3D00AA00,9SQ3D00AA00,1SR3D00AA00,2SR3D00AA00,3SR3D00AA00,4SR3D00AA00,5SR3D00AA00,6SR3D00AA00,7SR3D00AA00,8SR3D00AA00,9SR3D00AA00,1SS3D00AA00,2SS3D00AA00,3SS3D00AA00,4SS3D00AA00,5SS3D00AA00,6SS3D00AA00,7SS3D00AA00,8SS3D00AA00,9SS3D00AA00,1SU3D00AA00,2SU3D00AA00,3SU3D00AA00,4SU3D00AA00,5SU3D00AA00,6SU3D00AA00,7SU3D00AA00,8SU3D00AA00,9SU3D00AA00,1SV3D00AA00,2SV3D00AA00,3SV3D00AA00,4SV3D00AA00,5SV3D00AA00,6SV3D00AA00,7SV3D00AA00,8SV3D00AA00,9SV3D00AA00,1SW3D00AA00,2SW3D00AA00,3SW3D00AA00,4SW3D00AA00,5SW3D00AA00,6SW3D00AA00,7SW3D00AA00,8SW3D00AA00,9SW3D00AA00,1SX3D00AA00,2SX3D00AA00,3SX3D00AA00,4SX3D00AA00,5SX3D00AA00,6SX3D00AA00,7SX3D00AA00,8SX3D00AA00,9SX3D00AA00,1SY3D00AA00,2SY3D00AA00,3SY3D00AA00,4SY3D00AA00,5SY3D00AA00,6SY3D00AA00,7SY3D00AA00,8SY3D00AA00,9SY3D00AA00,1S04D00AA00,2S04D00AA00,3S04D00AA00,4S04D00AA00,5S04D00AA00,6S04D00AA00,7S04D00AA00,8S04D00AA00,9S04D00AA00,1S14D00AA00,2S14D00AA00,3S14D00AA00,4S14D00AA00,5S14D00AA00,6S14D00AA00,7S14D00AA00,8S14D00AA00,9S14D00AA00,1S24D00AA00,2S24D00AA00,3S24D00AA00,4S24D00AA00,5S24D00AA00,6S24D00AA00,7S24D00AA00,8S24D00AA00,9S24D00AA00,1S34D00AA00,2S34D00AA00,3S34D00AA00,4S34D00AA00,5S34D00AA00,6S34D00AA00,7S34D00AA00,8S34D00AA00,9S34D00AA00,1S44D00AA00,2S44D00AA00,3S44D00AA00,4S44D00AA00,5S44D00AA00,6S44D00AA00,7S44D00AA00,8S44D00AA00,9S44D00AA00,1S54D00AA00,2S54D00AA00,3S54D00AA00,4S54D00AA00,5S54D00AA00,6S54D00AA00,7S54D00AA00,8S54D00AA00,9S54D00AA00,1S64D00AA00,2S64D00AA00,3S64D00AA00,4S64D00AA00,5S64D00AA00,6S64D00AA00,7S64D00AA00,8S64D00AA00,9S64D00AA00,1S74D00AA00,2S74D00AA00,3S74D00AA00,4S74D00AA00,5S74D00AA00,6S74D00AA00,7S74D00AA00,8S74D00AA00,9S74D00AA00,1S84D00AA00,2S84D00AA00,3S84D00AA00,4S84D00AA00,5S84D00AA00,6S84D00AA00,7S84D00AA00,8S84D00AA00,9S84D00AA00,1S94D00AA00,2S94D00AA00,3S94D00AA00,4S94D00AA00,5S94D00AA00,6S94D00AA00,7S94D00AA00,8S94D00AA00,9S94D00AA00,1SA4D00AA00,2SA4D00AA00,3SA4D00AA00,4SA4D00AA00,5SA4D00AA00,6SA4D00AA00,7SA4D00AA00,8SA4D00AA00,9SA4D00AA00,1SC4D00AA00,2SC4D00AA00,3SC4D00AA00,4SC4D00AA00,5SC4D00AA00,6SC4D00AA00,7SC4D00AA00,8SC4D00AA00,9SC4D00AA00,1SD4D00AA00,2SD4D00AA00,3SD4D00AA00,4SD4D00AA00,5SD4D00AA00,6SD4D00AA00,7SD4D00AA00,8SD4D00AA00,9SD4D00AA00,1SE4D00AA00,2SE4D00AA00,3SE4D00AA00,4SE4D00AA00,5SE4D00AA00,6SE4D00AA00,7SE4D00AA00,8SE4D00AA00,9SE4D00AA00,1SF4D00AA00,2SF4D00AA00,3SF4D00AA00,4SF4D00AA00,5SF4D00AA00,6SF4D00AA00,7SF4D00AA00,8SF4D00AA00,9SF4D00AA00,1SG4D00AA00,2SG4D00AA00,3SG4D00AA00,4SG4D00AA00,5SG4D00AA00,6SG4D00AA00,7SG4D00AA00,8SG4D00AA00,9SG4D00AA00,1SH4D00AA00,2SH4D00AA00,3SH4D00AA00,4SH4D00AA00,5SH4D00AA00,6SH4D00AA00,7SH4D00AA00,8SH4D00AA00,9SH4D00AA00,1SJ4D00AA00,2SJ4D00AA00,3SJ4D00AA00,4SJ4D00AA00,5SJ4D00AA00,6SJ4D00AA00,7SJ4D00AA00,8SJ4D00AA00,9SJ4D00AA00,1SK4D00AA00,2SK4D00AA00,3SK4D00AA00,4SK4D00AA00,5SK4D00AA00,6SK4D00AA00,7SK4D00AA00,8SK4D00AA00,9SK4D00AA00,1SM4D00AA00,2SM4D00AA00,3SM4D00AA00,4SM4D00AA00,5SM4D00AA00,6SM4D00AA00,7SM4D00AA00,8SM4D00AA00,9SM4D00AA00,1SN4D00AA00,2SN4D00AA00,3SN4D00AA00,4SN4D00AA00,5SN4D00AA00,6SN4D00AA00,7SN4D00AA00,8SN4D00AA00,9SN4D00AA00,1SP4D00AA00,2SP4D00AA00,3SP4D00AA00,4SP4D00AA00,5SP4D00AA00,6SP4D00AA00,7SP4D00AA00,8SP4D00AA00,9SP4D00AA00,1SQ4D00AA00,2SQ4D00AA00,3SQ4D00AA00,4SQ4D00AA00,5SQ4D00AA00,6SQ4D00AA00,7SQ4D00AA00,8SQ4D00AA00,9SQ4D00AA00,1SR4D00AA00,2SR4D00AA00,3SR4D00AA00,4SR4D00AA00,5SR4D00AA00,6SR4D00AA00,7SR4D00AA00,8SR4D00AA00,9SR4D00AA00,1SS4D00AA00,2SS4D00AA00,3SS4D00AA00,4SS4D00AA00,5SS4D00AA00,6SS4D00AA00,7SS4D00AA00,8SS4D00AA00,9SS4D00AA00,1SU4D00AA00,2SU4D00AA00,3SU4D00AA00,4SU4D00AA00,5SU4D00AA00,6SU4D00AA00,7SU4D00AA00,8SU4D00AA00,9SU4D00AA00,1SV4D00AA00,2SV4D00AA00,3SV4D00AA00,4SV4D00AA00,5SV4D00AA00,6SV4D00AA00,7SV4D00AA00,8SV4D00AA00,9SV4D00AA00,1SW4D00AA00,2SW4D00AA00,3SW4D00AA00,4SW4D00AA00,5SW4D00AA00,6SW4D00AA00,7SW4D00AA00,8SW4D00AA00,9SW4D00AA00,1SX4D00AA00,2SX4D00AA00,3SX4D00AA00,4SX4D00AA00,5SX4D00AA00,6SX4D00AA00,7SX4D00AA00,8SX4D00AA00,9SX4D00AA00,1SY4D00AA00,2SY4D00AA00,3SY4D00AA00,4SY4D00AA00,5SY4D00AA00,6SY4D00AA00,7SY4D00AA00,8SY4D00AA00,9SY4D00AA00,1S05D00AA00,2S05D00AA00,3S05D00AA00,4S05D00AA00,5S05D00AA00,6S05D00AA00,7S05D00AA00,8S05D00AA00,9S05D00AA00,1S15D00AA00,2S15D00AA00,3S15D00AA00,4S15D00AA00,5S15D00AA00,6S15D00AA00,7S15D00AA00,8S15D00AA00,9S15D00AA00,1S25D00AA00,2S25D00AA00,3S25D00AA00,4S25D00AA00,5S25D00AA00,6S25D00AA00,7S25D00AA00,8S25D00AA00,9S25D00AA00,1S35D00AA00,2S35D00AA00,3S35D00AA00,4S35D00AA00,5S35D00AA00,6S35D00AA00,7S35D00AA00,8S35D00AA00,9S35D00AA00,1S45D00AA00,2S45D00AA00,3S45D00AA00,4S45D00AA00,5S45D00AA00,6S45D00AA00,7S45D00AA00,8S45D00AA00,9S45D00AA00,1S55D00AA00,2S55D00AA00,3S55D00AA00,4S55D00AA00,5S55D00AA00,6S55D00AA00,7S55D00AA00,8S55D00AA00,9S55D00AA00,1S65D00AA00,2S65D00AA00,3S65D00AA00,4S65D00AA00,5S65D00AA00,6S65D00AA00,7S65D00AA00,8S65D00AA00,9S65D00AA00,1S75D00AA00,2S75D00AA00,3S75D00AA00,4S75D00AA00,5S75D00AA00,6S75D00AA00,7S75D00AA00,8S75D00AA00,9S75D00AA00,1S85D00AA00,2S85D00AA00,3S85D00AA00,4S85D00AA00,5S85D00AA00,6S85D00AA00,7S85D00AA00,8S85D00AA00,9S85D00AA00,1S95D00AA00,2S95D00AA00,3S95D00AA00,4S95D00AA00,5S95D00AA00,6S95D00AA00,7S95D00AA00,8S95D00AA00,9S95D00AA00,1SA5D00AA00,2SA5D00AA00,3SA5D00AA00,4SA5D00AA00,5SA5D00AA00,6SA5D00AA00,7SA5D00AA00,8SA5D00AA00,9SA5D00AA00,1SC5D00AA00,2SC5D00AA00,3SC5D00AA00,4SC5D00AA00,5SC5D00AA00,6SC5D00AA00,7SC5D00AA00,8SC5D00AA00,9SC5D00AA00,1SD5D00AA00,2SD5D00AA00,3SD5D00AA00,4SD5D00AA00,5SD5D00AA00,6SD5D00AA00,7SD5D00AA00,8SD5D00AA00,9SD5D00AA00,1SE5D00AA00,2SE5D00AA00,3SE5D00AA00,4SE5D00AA00,5SE5D00AA00,6SE5D00AA00,7SE5D00AA00,8SE5D00AA00,9SE5D00AA00,1SF5D00AA00,2SF5D00AA00,3SF5D00AA00,4SF5D00AA00,5SF5D00AA00,6SF5D00AA00,7SF5D00AA00,8SF5D00AA00,9SF5D00AA00,1SG5D00AA00,2SG5D00AA00,3SG5D00AA00,4SG5D00AA00,5SG5D00AA00,6SG5D00AA00,7SG5D00AA00,8SG5D00AA00,9SG5D00AA00,1SH5D00AA00,2SH5D00AA00,3SH5D00AA00,4SH5D00AA00,5SH5D00AA00,6SH5D00AA00,7SH5D00AA00,8SH5D00AA00,9SH5D00AA00,1SJ5D00AA00,2SJ5D00AA00,3SJ5D00AA00,4SJ5D00AA00,5SJ5D00AA00,6SJ5D00AA00,7SJ5D00AA00,8SJ5D00AA00,9SJ5D00AA00,1SK5D00AA00,2SK5D00AA00,3SK5D00AA00,4SK5D00AA00,5SK5D00AA00,6SK5D00AA00,7SK5D00AA00,8SK5D00AA00,9SK5D00AA00,1SM5D00AA00,2SM5D00AA00,3SM5D00AA00,4SM5D00AA00,5SM5D00AA00,6SM5D00AA00,7SM5D00AA00,8SM5D00AA00,9SM5D00AA00,1SN5D00AA00,2SN5D00AA00,3SN5D00AA00,4SN5D00AA00,5SN5D00AA00,6SN5D00AA00,7SN5D00AA00,8SN5D00AA00,9SN5D00AA00,1SP5D00AA00,2SP5D00AA00,3SP5D00AA00,4SP5D00AA00,5SP5D00AA00,6SP5D00AA00,7SP5D00AA00,8SP5D00AA00,9SP5D00AA00,1SQ5D00AA00,2SQ5D00AA00,3SQ5D00AA00,4SQ5D00AA00,5SQ5D00AA00,6SQ5D00AA00,7SQ5D00AA00,8SQ5D00AA00,9SQ5D00AA00,1SR5D00AA00,2SR5D00AA00,3SR5D00AA00,4SR5D00AA00,5SR5D00AA00,6SR5D00AA00,7SR5D00AA00,8SR5D00AA00,9SR5D00AA00,1SS5D00AA00,2SS5D00AA00,3SS5D00AA00,4SS5D00AA00,5SS5D00AA00,6SS5D00AA00,7SS5D00AA00,8SS5D00AA00,9SS5D00AA00,1SU5D00AA00,2SU5D00AA00,3SU5D00AA00,4SU5D00AA00,5SU5D00AA00,6SU5D00AA00,7SU5D00AA00,8SU5D00AA00,9SU5D00AA00,1SV5D00AA00,2SV5D00AA00,3SV5D00AA00,4SV5D00AA00,5SV5D00AA00,6SV5D00AA00,7SV5D00AA00,8SV5D00AA00,9SV5D00AA00,1SW5D00AA00,2SW5D00AA00,3SW5D00AA00,4SW5D00AA00,5SW5D00AA00,6SW5D00AA00,7SW5D00AA00,8SW5D00AA00,9SW5D00AA00,1SX5D00AA00,2SX5D00AA00,3SX5D00AA00,4SX5D00AA00,5SX5D00AA00,6SX5D00AA00,7SX5D00AA00,8SX5D00AA00,9SX5D00AA00,1SY5D00AA00,2SY5D00AA00,3SY5D00AA00,4SY5D00AA00,5SY5D00AA00,6SY5D00AA00,7SY5D00AA00,8SY5D00AA00,9SY5D00AA00,1S06D00AA00,2S06D00AA00,3S06D00AA00,4S06D00AA00,5S06D00AA00,6S06D00AA00,7S06D00AA00,8S06D00AA00,9S06D00AA00,1S16D00AA00,2S16D00AA00,3S16D00AA00,4S16D00AA00,5S16D00AA00,6S16D00AA00,7S16D00AA00,8S16D00AA00,9S16D00AA00,1S26D00AA00,2S26D00AA00,3S26D00AA00,4S26D00AA00,5S26D00AA00,6S26D00AA00,7S26D00AA00,8S26D00AA00,9S26D00AA00,1S36D00AA00,2S36D00AA00,3S36D00AA00,4S36D00AA00,5S36D00AA00,6S36D00AA00,7S36D00AA00,8S36D00AA00,9S36D00AA00,1S46D00AA00,2S46D00AA00,3S46D00AA00,4S46D00AA00,5S46D00AA00,6S46D00AA00,7S46D00AA00,8S46D00AA00,9S46D00AA00,1S56D00AA00,2S56D00AA00,3S56D00AA00,4S56D00AA00,5S56D00AA00,6S56D00AA00,7S56D00AA00,8S56D00AA00,9S56D00AA00,1S66D00AA00,2S66D00AA00,3S66D00AA00,4S66D00AA00,5S66D00AA00,6S66D00AA00,7S66D00AA00,8S66D00AA00,9S66D00AA00,1S76D00AA00,2S76D00AA00,3S76D00AA00,4S76D00AA00,5S76D00AA00,6S76D00AA00,7S76D00AA00,8S76D00AA00,9S76D00AA00,1S86D00AA00,2S86D00AA00,3S86D00AA00,4S86D00AA00,5S86D00AA00,6S86D00AA00,7S86D00AA00,8S86D00AA00,9S86D00AA00,1S96D00AA00,2S96D00AA00,3S96D00AA00,4S96D00AA00,5S96D00AA00,6S96D00AA00,7S96D00AA00,8S96D00AA00,9S96D00AA00,1SA6D00AA00,2SA6D00AA00,3SA6D00AA00,4SA6D00AA00,5SA6D00AA00,6SA6D00AA00,7SA6D00AA00,8SA6D00AA00,9SA6D00AA00,1SC6D00AA00,2SC6D00AA00,3SC6D00AA00,4SC6D00AA00,5SC6D00AA00,6SC6D00AA00,7SC6D00AA00,8SC6D00AA00,9SC6D00AA00,1SD6D00AA00,2SD6D00AA00,3SD6D00AA00,4SD6D00AA00,5SD6D00AA00,6SD6D00AA00,7SD6D00AA00,8SD6D00AA00,9SD6D00AA00,1SE6D00AA00,2SE6D00AA00,3SE6D00AA00,4SE6D00AA00,5SE6D00AA00,6SE6D00AA00,7SE6D00AA00,8SE6D00AA00,9SE6D00AA00,1SF6D00AA00,2SF6D00AA00,3SF6D00AA00,4SF6D00AA00,5SF6D00AA00,6SF6D00AA00,7SF6D00AA00,8SF6D00AA00,9SF6D00AA00,1SG6D00AA00,2SG6D00AA00,3SG6D00AA00,4SG6D00AA00,5SG6D00AA00,6SG6D00AA00,7SG6D00AA00,8SG6D00AA00,9SG6D00AA00,1SH6D00AA00,2SH6D00AA00,3SH6D00AA00,4SH6D00AA00,5SH6D00AA00,6SH6D00AA00,7SH6D00AA00,8SH6D00AA00,9SH6D00AA00,1SJ6D00AA00,2SJ6D00AA00,3SJ6D00AA00,4SJ6D00AA00,5SJ6D00AA00,6SJ6D00AA00,7SJ6D00AA00,8SJ6D00AA00,9SJ6D00AA00,1SK6D00AA00,2SK6D00AA00,3SK6D00AA00,4SK6D00AA00,5SK6D00AA00,6SK6D00AA00,7SK6D00AA00,8SK6D00AA00,9SK6D00AA00,1SM6D00AA00,2SM6D00AA00,3SM6D00AA00,4SM6D00AA00,5SM6D00AA00,6SM6D00AA00,7SM6D00AA00,8SM6D00AA00,9SM6D00AA00,1SN6D00AA00,2SN6D00AA00,3SN6D00AA00,4SN6D00AA00,5SN6D00AA00,6SN6D00AA00,7SN6D00AA00,8SN6D00AA00,9SN6D00AA00,1SP6D00AA00,2SP6D00AA00,3SP6D00AA00,4SP6D00AA00,5SP6D00AA00,6SP6D00AA00,7SP6D00AA00,8SP6D00AA00,9SP6D00AA00,1SQ6D00AA00,2SQ6D00AA00,3SQ6D00AA00,4SQ6D00AA00,5SQ6D00AA00,6SQ6D00AA00,7SQ6D00AA00,8SQ6D00AA00,9SQ6D00AA00,1SR6D00AA00,2SR6D00AA00,3SR6D00AA00,4SR6D00AA00,5SR6D00AA00,6SR6D00AA00,7SR6D00AA00,8SR6D00AA00,9SR6D00AA00,1SS6D00AA00,2SS6D00AA00,3SS6D00AA00,4SS6D00AA00,5SS6D00AA00,6SS6D00AA00,7SS6D00AA00,8SS6D00AA00,9SS6D00AA00,1SU6D00AA00,2SU6D00AA00,3SU6D00AA00,4SU6D00AA00,5SU6D00AA00,6SU6D00AA00,7SU6D00AA00,8SU6D00AA00,9SU6D00AA00,1SV6D00AA00,2SV6D00AA00,3SV6D00AA00,4SV6D00AA00,5SV6D00AA00,6SV6D00AA00,7SV6D00AA00,8SV6D00AA00,9SV6D00AA00,1SW6D00AA00,2SW6D00AA00,3SW6D00AA00,4SW6D00AA00,5SW6D00AA00,6SW6D00AA00,7SW6D00AA00,8SW6D00AA00,9SW6D00AA00,1SX6D00AA00,2SX6D00AA00,3SX6D00AA00,4SX6D00AA00,5SX6D00AA00,6SX6D00AA00,7SX6D00AA00,8SX6D00AA00,9SX6D00AA00,1SY6D00AA00,2SY6D00AA00,3SY6D00AA00,4SY6D00AA00,5SY6D00AA00,6SY6D00AA00,7SY6D00AA00,8SY6D00AA00,9SY6D00AA00,1S07D00AA00,2S07D00AA00,3S07D00AA00,4S07D00AA00,5S07D00AA00,6S07D00AA00,7S07D00AA00,8S07D00AA00,9S07D00AA00,1S17D00AA00,2S17D00AA00,3S17D00AA00,4S17D00AA00,5S17D00AA00,6S17D00AA00,7S17D00AA00,8S17D00AA00,9S17D00AA00,1S27D00AA00,2S27D00AA00,3S27D00AA00,4S27D00AA00,5S27D00AA00,6S27D00AA00,7S27D00AA00,8S27D00AA00,9S27D00AA00,1S37D00AA00,2S37D00AA00,3S37D00AA00,4S37D00AA00,5S37D00AA00,6S37D00AA00,7S37D00AA00,8S37D00AA00,9S37D00AA00,1S47D00AA00,2S47D00AA00,3S47D00AA00,4S47D00AA00,5S47D00AA00,6S47D00AA00,7S47D00AA00,8S47D00AA00,9S47D00AA00,1S57D00AA00,2S57D00AA00,3S57D00AA00,4S57D00AA00,5S57D00AA00,6S57D00AA00,7S57D00AA00,8S57D00AA00,9S57D00AA00,1S67D00AA00,2S67D00AA00,3S67D00AA00,4S67D00AA00,5S67D00AA00,6S67D00AA00,7S67D00AA00,8S67D00AA00,9S67D00AA00,1S77D00AA00,2S77D00AA00,3S77D00AA00,4S77D00AA00,5S77D00AA00,6S77D00AA00,7S77D00AA00,8S77D00AA00,9S77D00AA00,1S87D00AA00,2S87D00AA00,3S87D00AA00,4S87D00AA00,5S87D00AA00,6S87D00AA00,7S87D00AA00,8S87D00AA00,9S87D00AA00,1S97D00AA00,2S97D00AA00,3S97D00AA00,4S97D00AA00,5S97D00AA00,6S97D00AA00,7S97D00AA00,8S97D00AA00,9S97D00AA00,1SA7D00AA00,2SA7D00AA00,3SA7D00AA00,4SA7D00AA00,5SA7D00AA00,6SA7D00AA00,7SA7D00AA00,8SA7D00AA00,9SA7D00AA00,1SC7D00AA00,2SC7D00AA00,3SC7D00AA00,4SC7D00AA00,5SC7D00AA00,6SC7D00AA00,7SC7D00AA00,8SC7D00AA00,9SC7D00AA00,1SD7D00AA00,2SD7D00AA00,3SD7D00AA00,4SD7D00AA00,5SD7D00AA00,6SD7D00AA00,7SD7D00AA00,8SD7D00AA00,9SD7D00AA00,1SE7D00AA00,2SE7D00AA00,3SE7D00AA00,4SE7D00AA00,5SE7D00AA00,6SE7D00AA00,7SE7D00AA00,8SE7D00AA00,9SE7D00AA00,1SF7D00AA00,2SF7D00AA00,3SF7D00AA00,4SF7D00AA00,5SF7D00AA00,6SF7D00AA00,7SF7D00AA00,8SF7D00AA00,9SF7D00AA00,1SG7D00AA00,2SG7D00AA00,3SG7D00AA00,4SG7D00AA00,5SG7D00AA00,6SG7D00AA00,7SG7D00AA00,8SG7D00AA00,9SG7D00AA00,1SH7D00AA00,2SH7D00AA00,3SH7D00AA00,4SH7D00AA00,5SH7D00AA00,6SH7D00AA00,7SH7D00AA00,8SH7D00AA00,9SH7D00AA00,1SJ7D00AA00,2SJ7D00AA00,3SJ7D00AA00,4SJ7D00AA00,5SJ7D00AA00,6SJ7D00AA00,7SJ7D00AA00,8SJ7D00AA00,9SJ7D00AA00,1SK7D00AA00,2SK7D00AA00,3SK7D00AA00,4SK7D00AA00,5SK7D00AA00,6SK7D00AA00,7SK7D00AA00,8SK7D00AA00,9SK7D00AA00,1SM7D00AA00,2SM7D00AA00,3SM7D00AA00,4SM7D00AA00,5SM7D00AA00,6SM7D00AA00,7SM7D00AA00,8SM7D00AA00,9SM7D00AA00,1SN7D00AA00,2SN7D00AA00,3SN7D00AA00,4SN7D00AA00,5SN7D00AA00,6SN7D00AA00,7SN7D00AA00,8SN7D00AA00,9SN7D00AA00,1SP7D00AA00,2SP7D00AA00,3SP7D00AA00,4SP7D00AA00,5SP7D00AA00,6SP7D00AA00,7SP7D00AA00,8SP7D00AA00,9SP7D00AA00,1SQ7D00AA00,2SQ7D00AA00,3SQ7D00AA00,4SQ7D00AA00,5SQ7D00AA00,6SQ7D00AA00,7SQ7D00AA00,8SQ7D00AA00,9SQ7D00AA00,1SR7D00AA00,2SR7D00AA00,3SR7D00AA00,4SR7D00AA00,5SR7D00AA00,6SR7D00AA00,7SR7D00AA00,8SR7D00AA00,9SR7D00AA00,1SS7D00AA00,2SS7D00AA00,3SS7D00AA00,4SS7D00AA00,5SS7D00AA00,6SS7D00AA00,7SS7D00AA00,8SS7D00AA00,9SS7D00AA00,1SU7D00AA00,2SU7D00AA00,3SU7D00AA00,4SU7D00AA00,5SU7D00AA00,6SU7D00AA00,7SU7D00AA00,8SU7D00AA00,9SU7D00AA00,1SV7D00AA00,2SV7D00AA00,3SV7D00AA00,4SV7D00AA00,5SV7D00AA00,6SV7D00AA00,7SV7D00AA00,8SV7D00AA00,9SV7D00AA00,1SW7D00AA00,2SW7D00AA00,3SW7D00AA00,4SW7D00AA00,5SW7D00AA00,6SW7D00AA00,7SW7D00AA00,8SW7D00AA00,9SW7D00AA00,1SX7D00AA00,2SX7D00AA00,3SX7D00AA00,4SX7D00AA00,5SX7D00AA00,6SX7D00AA00,7SX7D00AA00,8SX7D00AA00,9SX7D00AA00,1SY7D00AA00,2SY7D00AA00,3SY7D00AA00,4SY7D00AA00,5SY7D00AA00,6SY7D00AA00,7SY7D00AA00,8SY7D00AA00,9SY7D00AA00,1S08D00AA00,2S08D00AA00,3S08D00AA00,4S08D00AA00,5S08D00AA00,6S08D00AA00,7S08D00AA00,8S08D00AA00,9S08D00AA00,1S18D00AA00,2S18D00AA00,3S18D00AA00,4S18D00AA00,5S18D00AA00,6S18D00AA00,7S18D00AA00,8S18D00AA00,9S18D00AA00,1S28D00AA00,2S28D00AA00,3S28D00AA00,4S28D00AA00,5S28D00AA00,6S28D00AA00,7S28D00AA00,8S28D00AA00,9S28D00AA00,1S38D00AA00,2S38D00AA00,3S38D00AA00,4S38D00AA00,5S38D00AA00,6S38D00AA00,7S38D00AA00,8S38D00AA00,9S38D00AA00,1S48D00AA00,2S48D00AA00,3S48D00AA00,4S48D00AA00,5S48D00AA00,6S48D00AA00,7S48D00AA00,8S48D00AA00,9S48D00AA00,1S58D00AA00,2S58D00AA00,3S58D00AA00,4S58D00AA00,5S58D00AA00,6S58D00AA00,7S58D00AA00,8S58D00AA00,9S58D00AA00,1S68D00AA00,2S68D00AA00,3S68D00AA00,4S68D00AA00,5S68D00AA00,6S68D00AA00,7S68D00AA00,8S68D00AA00,9S68D00AA00,1S78D00AA00,2S78D00AA00,3S78D00AA00,4S78D00AA00,5S78D00AA00,6S78D00AA00,7S78D00AA00,8S78D00AA00,9S78D00AA00,1S88D00AA00,2S88D00AA00,3S88D00AA00,4S88D00AA00,5S88D00AA00,6S88D00AA00,7S88D00AA00,8S88D00AA00,9S88D00AA00,1S98D00AA00,2S98D00AA00,3S98D00AA00,4S98D00AA00,5S98D00AA00,6S98D00AA00,7S98D00AA00,8S98D00AA00,9S98D00AA00,1SA8D00AA00,2SA8D00AA00,3SA8D00AA00,4SA8D00AA00,5SA8D00AA00,6SA8D00AA00,7SA8D00AA00,8SA8D00AA00,9SA8D00AA00,1SC8D00AA00,2SC8D00AA00,3SC8D00AA00,4SC8D00AA00,5SC8D00AA00,6SC8D00AA00,7SC8D00AA00,8SC8D00AA00,9SC8D00AA00,1SD8D00AA00,2SD8D00AA00,3SD8D00AA00,4SD8D00AA00,5SD8D00AA00,6SD8D00AA00,7SD8D00AA00,8SD8D00AA00,9SD8D00AA00,1SE8D00AA00,2SE8D00AA00,3SE8D00AA00,4SE8D00AA00,5SE8D00AA00,6SE8D00AA00,7SE8D00AA00,8SE8D00AA00,9SE8D00AA00,1SF8D00AA00,2SF8D00AA00,3SF8D00AA00,4SF8D00AA00,5SF8D00AA00,6SF8D00AA00,7SF8D00AA00,8SF8D00AA00,9SF8D00AA00,1SG8D00AA00,2SG8D00AA00,3SG8D00AA00,4SG8D00AA00,5SG8D00AA00,6SG8D00AA00,7SG8D00AA00,8SG8D00AA00,9SG8D00AA00,1SH8D00AA00,2SH8D00AA00,3SH8D00AA00,4SH8D00AA00,5SH8D00AA00,6SH8D00AA00,7SH8D00AA00,8SH8D00AA00,9SH8D00AA00,1SJ8D00AA00,2SJ8D00AA00,3SJ8D00AA00,4SJ8D00AA00,5SJ8D00AA00,6SJ8D00AA00,7SJ8D00AA00,8SJ8D00AA00,9SJ8D00AA00,1SK8D00AA00,2SK8D00AA00,3SK8D00AA00,4SK8D00AA00,5SK8D00AA00,6SK8D00AA00,7SK8D00AA00,8SK8D00AA00,9SK8D00AA00,1SM8D00AA00,2SM8D00AA00,3SM8D00AA00,4SM8D00AA00,5SM8D00AA00,6SM8D00AA00,7SM8D00AA00,8SM8D00AA00,9SM8D00AA00,1SN8D00AA00,2SN8D00AA00,3SN8D00AA00,4SN8D00AA00,5SN8D00AA00,6SN8D00AA00,7SN8D00AA00,8SN8D00AA00,9SN8D00AA00,1SP8D00AA00,2SP8D00AA00,3SP8D00AA00,4SP8D00AA00,5SP8D00AA00,6SP8D00AA00,7SP8D00AA00,8SP8D00AA00,9SP8D00AA00,1SQ8D00AA00,2SQ8D00AA00,3SQ8D00AA00,4SQ8D00AA00,5SQ8D00AA00,6SQ8D00AA00,7SQ8D00AA00,8SQ8D00AA00,9SQ8D00AA00,1SR8D00AA00,2SR8D00AA00,3SR8D00AA00,4SR8D00AA00,5SR8D00AA00,6SR8D00AA00,7SR8D00AA00,8SR8D00AA00,9SR8D00AA00,1SS8D00AA00,2SS8D00AA00,3SS8D00AA00,4SS8D00AA00,5SS8D00AA00,6SS8D00AA00,7SS8D00AA00,8SS8D00AA00,9SS8D00AA00,1SU8D00AA00,2SU8D00AA00,3SU8D00AA00,4SU8D00AA00,5SU8D00AA00,6SU8D00AA00,7SU8D00AA00,8SU8D00AA00,9SU8D00AA00,1SV8D00AA00,2SV8D00AA00,3SV8D00AA00,4SV8D00AA00,5SV8D00AA00,6SV8D00AA00,7SV8D00AA00,8SV8D00AA00,9SV8D00AA00,1SW8D00AA00,2SW8D00AA00,3SW8D00AA00,4SW8D00AA00,5SW8D00AA00,6SW8D00AA00,7SW8D00AA00,8SW8D00AA00,9SW8D00AA00,1SX8D00AA00,2SX8D00AA00,3SX8D00AA00,4SX8D00AA00,5SX8D00AA00,6SX8D00AA00,7SX8D00AA00,8SX8D00AA00,9SX8D00AA00,1SY8D00AA00,2SY8D00AA00,3SY8D00AA00,4SY8D00AA00,5SY8D00AA00,6SY8D00AA00,7SY8D00AA00,8SY8D00AA00,9SY8D00AA00,1S09D00AA00,2S09D00AA00,3S09D00AA00,4S09D00AA00,5S09D00AA00,6S09D00AA00,7S09D00AA00,8S09D00AA00,9S09D00AA00,1S19D00AA00,2S19D00AA00,3S19D00AA00,4S19D00AA00,5S19D00AA00,6S19D00AA00,7S19D00AA00,8S19D00AA00,9S19D00AA00,1S29D00AA00,2S29D00AA00,3S29D00AA00,4S29D00AA00,5S29D00AA00,6S29D00AA00,7S29D00AA00,8S29D00AA00,9S29D00AA00,1S39D00AA00,2S39D00AA00,3S39D00AA00,4S39D00AA00,5S39D00AA00,6S39D00AA00,7S39D00AA00,8S39D00AA00,9S39D00AA00,1S49D00AA00,2S49D00AA00,3S49D00AA00,4S49D00AA00,5S49D00AA00,6S49D00AA00,7S49D00AA00,8S49D00AA00,9S49D00AA00,1S59D00AA00,2S59D00AA00,3S59D00AA00,4S59D00AA00,5S59D00AA00,6S59D00AA00,7S59D00AA00,8S59D00AA00,9S59D00AA00,1S69D00AA00,2S69D00AA00,3S69D00AA00,4S69D00AA00,5S69D00AA00,6S69D00AA00,7S69D00AA00,8S69D00AA00,9S69D00AA00,1S79D00AA00,2S79D00AA00,3S79D00AA00,4S79D00AA00,5S79D00AA00,6S79D00AA00,7S79D00AA00,8S79D00AA00,9S79D00AA00,1S89D00AA00,2S89D00AA00,3S89D00AA00,4S89D00AA00,5S89D00AA00,6S89D00AA00,7S89D00AA00,8S89D00AA00,9S89D00AA00,1S99D00AA00,2S99D00AA00,3S99D00AA00,4S99D00AA00,5S99D00AA00,6S99D00AA00,7S99D00AA00,8S99D00AA00,9S99D00AA00,1SA9D00AA00,2SA9D00AA00,3SA9D00AA00,4SA9D00AA00,5SA9D00AA00,6SA9D00AA00,7SA9D00AA00,8SA9D00AA00,9SA9D00AA00,1SC9D00AA00,2SC9D00AA00,3SC9D00AA00,4SC9D00AA00,5SC9D00AA00,6SC9D00AA00,7SC9D00AA00,8SC9D00AA00,9SC9D00AA00,1SD9D00AA00,2SD9D00AA00,3SD9D00AA00,4SD9D00AA00,5SD9D00AA00,6SD9D00AA00,7SD9D00AA00,8SD9D00AA00,9SD9D00AA00,1SE9D00AA00,2SE9D00AA00,3SE9D00AA00,4SE9D00AA00,5SE9D00AA00,6SE9D00AA00,7SE9D00AA00,8SE9D00AA00,9SE9D00AA00,1SF9D00AA00,2SF9D00AA00,3SF9D00AA00,4SF9D00AA00,5SF9D00AA00,6SF9D00AA00,7SF9D00AA00,8SF9D00AA00,9SF9D00AA00,1SG9D00AA00,2SG9D00AA00,3SG9D00AA00,4SG9D00AA00,5SG9D00AA00,6SG9D00AA00,7SG9D00AA00,8SG9D00AA00,9SG9D00AA00,1SH9D00AA00,2SH9D00AA00,3SH9D00AA00,4SH9D00AA00,5SH9D00AA00,6SH9D00AA00,7SH9D00AA00,8SH9D00AA00,9SH9D00AA00,1SJ9D00AA00,2SJ9D00AA00,3SJ9D00AA00,4SJ9D00AA00,5SJ9D00AA00,6SJ9D00AA00,7SJ9D00AA00,8SJ9D00AA00,9SJ9D00AA00,1SK9D00AA00,2SK9D00AA00,3SK9D00AA00,4SK9D00AA00,5SK9D00AA00,6SK9D00AA00,7SK9D00AA00,8SK9D00AA00,9SK9D00AA00,1SM9D00AA00,2SM9D00AA00,3SM9D00AA00,4SM9D00AA00,5SM9D00AA00,6SM9D00AA00,7SM9D00AA00,8SM9D00AA00,9SM9D00AA00,1SN9D00AA00,2SN9D00AA00,3SN9D00AA00,4SN9D00AA00,5SN9D00AA00,6SN9D00AA00,7SN9D00AA00,8SN9D00AA00,9SN9D00AA00,1SP9D00AA00,2SP9D00AA00,3SP9D00AA00,4SP9D00AA00,5SP9D00AA00,6SP9D00AA00,7SP9D00AA00,8SP9D00AA00,9SP9D00AA00,1SQ9D00AA00,2SQ9D00AA00,3SQ9D00AA00,4SQ9D00AA00,5SQ9D00AA00,6SQ9D00AA00,7SQ9D00AA00,8SQ9D00AA00,9SQ9D00AA00,1SR9D00AA00,2SR9D00AA00,3SR9D00AA00,4SR9D00AA00,5SR9D00AA00,6SR9D00AA00,7SR9D00AA00,8SR9D00AA00,9SR9D00AA00,1SS9D00AA00,2SS9D00AA00,3SS9D00AA00,4SS9D00AA00,5SS9D00AA00,6SS9D00AA00,7SS9D00AA00,8SS9D00AA00,9SS9D00AA00,1SU9D00AA00,2SU9D00AA00,3SU9D00AA00,4SU9D00AA00,5SU9D00AA00,6SU9D00AA00,7SU9D00AA00,8SU9D00AA00,9SU9D00AA00,1SV9D00AA00,2SV9D00AA00,3SV9D00AA00,4SV9D00AA00,5SV9D00AA00,6SV9D00AA00,7SV9D00AA00,8SV9D00AA00,9SV9D00AA00,1SW9D00AA00,2SW9D00AA00,3SW9D00AA00,4SW9D00AA00,5SW9D00AA00,6SW9D00AA00,7SW9D00AA00,8SW9D00AA00,9SW9D00AA00,1SX9D00AA00,2SX9D00AA00,3SX9D00AA00,4SX9D00AA00,5SX9D00AA00,6SX9D00AA00,7SX9D00AA00,8SX9D00AA00,9SX9D00AA00,1SY9D00AA00,2SY9D00AA00,3SY9D00AA00,4SY9D00AA00,5SY9D00AA00,6SY9D00AA00,7SY9D00AA00,8SY9D00AA00,9SY9D00AA00,1S00E00AA00,2S00E00AA00,3S00E00AA00,4S00E00AA00,5S00E00AA00,6S00E00AA00,7S00E00AA00,8S00E00AA00,9S00E00AA00,1S10E00AA00,2S10E00AA00,3S10E00AA00,4S10E00AA00,5S10E00AA00,6S10E00AA00,7S10E00AA00,8S10E00AA00,9S10E00AA00,1S20E00AA00,2S20E00AA00,3S20E00AA00,4S20E00AA00,5S20E00AA00,6S20E00AA00,7S20E00AA00,8S20E00AA00,9S20E00AA00,1S30E00AA00,2S30E00AA00,3S30E00AA00,4S30E00AA00,5S30E00AA00,6S30E00AA00,7S30E00AA00,8S30E00AA00,9S30E00AA00,1S40E00AA00,2S40E00AA00,3S40E00AA00,4S40E00AA00,5S40E00AA00,6S40E00AA00,7S40E00AA00,8S40E00AA00,9S40E00AA00,1S50E00AA00,2S50E00AA00,3S50E00AA00,4S50E00AA00,5S50E00AA00,6S50E00AA00,7S50E00AA00,8S50E00AA00,9S50E00AA00,1S60E00AA00,2S60E00AA00,3S60E00AA00,4S60E00AA00,5S60E00AA00,6S60E00AA00,7S60E00AA00,8S60E00AA00,9S60E00AA00,1S70E00AA00,2S70E00AA00,3S70E00AA00,4S70E00AA00,5S70E00AA00,6S70E00AA00,7S70E00AA00,8S70E00AA00,9S70E00AA00,1S80E00AA00,2S80E00AA00,3S80E00AA00,4S80E00AA00,5S80E00AA00,6S80E00AA00,7S80E00AA00,8S80E00AA00,9S80E00AA00,1S90E00AA00,2S90E00AA00,3S90E00AA00,4S90E00AA00,5S90E00AA00,6S90E00AA00,7S90E00AA00,8S90E00AA00,9S90E00AA00,1SA0E00AA00,2SA0E00AA00,3SA0E00AA00,4SA0E00AA00,5SA0E00AA00,6SA0E00AA00,7SA0E00AA00,8SA0E00AA00,9SA0E00AA00,1SC0E00AA00,2SC0E00AA00,3SC0E00AA00,4SC0E00AA00,5SC0E00AA00,6SC0E00AA00,7SC0E00AA00,8SC0E00AA00,9SC0E00AA00,1SD0E00AA00,2SD0E00AA00,3SD0E00AA00,4SD0E00AA00,5SD0E00AA00,6SD0E00AA00,7SD0E00AA00,8SD0E00AA00,9SD0E00AA00,1SE0E00AA00,2SE0E00AA00,3SE0E00AA00,4SE0E00AA00,5SE0E00AA00,6SE0E00AA00,7SE0E00AA00,8SE0E00AA00,9SE0E00AA00,1SF0E00AA00,2SF0E00AA00,3SF0E00AA00,4SF0E00AA00,5SF0E00AA00,6SF0E00AA00,7SF0E00AA00,8SF0E00AA00,9SF0E00AA00,1SG0E00AA00,2SG0E00AA00,3SG0E00AA00,4SG0E00AA00,5SG0E00AA00,6SG0E00AA00,7SG0E00AA00,8SG0E00AA00,9SG0E00AA00,1SH0E00AA00,2SH0E00AA00,3SH0E00AA00,4SH0E00AA00,5SH0E00AA00,6SH0E00AA00,7SH0E00AA00,8SH0E00AA00,9SH0E00AA00,1SJ0E00AA00,2SJ0E00AA00,3SJ0E00AA00,4SJ0E00AA00,5SJ0E00AA00,6SJ0E00AA00,7SJ0E00AA00,8SJ0E00AA00,9SJ0E00AA00,1SK0E00AA00,2SK0E00AA00,3SK0E00AA00,4SK0E00AA00,5SK0E00AA00,6SK0E00AA00,7SK0E00AA00,8SK0E00AA00,9SK0E00AA00,1SM0E00AA00,2SM0E00AA00,3SM0E00AA00,4SM0E00AA00,5SM0E00AA00,6SM0E00AA00,7SM0E00AA00,8SM0E00AA00,9SM0E00AA00,1SN0E00AA00,2SN0E00AA00,3SN0E00AA00,4SN0E00AA00,5SN0E00AA00,6SN0E00AA00,7SN0E00AA00,8SN0E00AA00,9SN0E00AA00,1SP0E00AA00,2SP0E00AA00,3SP0E00AA00,4SP0E00AA00,5SP0E00AA00,6SP0E00AA00,7SP0E00AA00,8SP0E00AA00,9SP0E00AA00,1SQ0E00AA00,2SQ0E00AA00,3SQ0E00AA00,4SQ0E00AA00,5SQ0E00AA00,6SQ0E00AA00,7SQ0E00AA00,8SQ0E00AA00,9SQ0E00AA00,1SR0E00AA00,2SR0E00AA00,3SR0E00AA00,4SR0E00AA00,5SR0E00AA00,6SR0E00AA00,7SR0E00AA00,8SR0E00AA00,9SR0E00AA00,1SS0E00AA00,2SS0E00AA00,3SS0E00AA00,4SS0E00AA00,5SS0E00AA00,6SS0E00AA00,7SS0E00AA00,8SS0E00AA00,9SS0E00AA00,1SU0E00AA00,2SU0E00AA00,3SU0E00AA00,4SU0E00AA00,5SU0E00AA00,6SU0E00AA00,7SU0E00AA00,8SU0E00AA00,9SU0E00AA00,1SV0E00AA00,2SV0E00AA00,3SV0E00AA00,4SV0E00AA00,5SV0E00AA00,6SV0E00AA00,7SV0E00AA00,8SV0E00AA00,9SV0E00AA00,1SW0E00AA00,2SW0E00AA00,3SW0E00AA00,4SW0E00AA00,5SW0E00AA00,6SW0E00AA00,7SW0E00AA00,8SW0E00AA00,9SW0E00AA00,1SX0E00AA00,2SX0E00AA00,3SX0E00AA00,4SX0E00AA00,5SX0E00AA00,6SX0E00AA00,7SX0E00AA00,8SX0E00AA00,9SX0E00AA00,1SY0E00AA00,2SY0E00AA00,3SY0E00AA00,4SY0E00AA00,5SY0E00AA00,6SY0E00AA00,7SY0E00AA00,8SY0E00AA00,9SY0E00AA00,1S01E00AA00,2S01E00AA00,3S01E00AA00,4S01E00AA00,5S01E00AA00,6S01E00AA00,7S01E00AA00,8S01E00AA00,9S01E00AA00,1S11E00AA00,2S11E00AA00,3S11E00AA00,4S11E00AA00,5S11E00AA00,6S11E00AA00,7S11E00AA00,8S11E00AA00,9S11E00AA00,1S21E00AA00,2S21E00AA00,3S21E00AA00,4S21E00AA00,5S21E00AA00,6S21E00AA00,7S21E00AA00,8S21E00AA00,9S21E00AA00,1S31E00AA00,2S31E00AA00,3S31E00AA00,4S31E00AA00,5S31E00AA00,6S31E00AA00,7S31E00AA00,8S31E00AA00,9S31E00AA00,1S41E00AA00,2S41E00AA00,3S41E00AA00,4S41E00AA00,5S41E00AA00,6S41E00AA00,7S41E00AA00,8S41E00AA00,9S41E00AA00,1S51E00AA00,2S51E00AA00,3S51E00AA00,4S51E00AA00,5S51E00AA00,6S51E00AA00,7S51E00AA00,8S51E00AA00,9S51E00AA00,1S61E00AA00,2S61E00AA00,3S61E00AA00,4S61E00AA00,5S61E00AA00,6S61E00AA00,7S61E00AA00,8S61E00AA00,9S61E00AA00,1S71E00AA00,2S71E00AA00,3S71E00AA00,4S71E00AA00,5S71E00AA00,6S71E00AA00,7S71E00AA00,8S71E00AA00,9S71E00AA00,1S81E00AA00,2S81E00AA00,3S81E00AA00,4S81E00AA00,5S81E00AA00,6S81E00AA00,7S81E00AA00,8S81E00AA00,9S81E00AA00,1S91E00AA00,2S91E00AA00,3S91E00AA00,4S91E00AA00,5S91E00AA00,6S91E00AA00,7S91E00AA00,8S91E00AA00,9S91E00AA00,1SA1E00AA00,2SA1E00AA00,3SA1E00AA00,4SA1E00AA00,5SA1E00AA00,6SA1E00AA00,7SA1E00AA00,8SA1E00AA00,9SA1E00AA00,1SC1E00AA00,2SC1E00AA00,3SC1E00AA00,4SC1E00AA00,5SC1E00AA00,6SC1E00AA00,7SC1E00AA00,8SC1E00AA00,9SC1E00AA00,1SD1E00AA00,2SD1E00AA00,3SD1E00AA00,4SD1E00AA00,5SD1E00AA00,6SD1E00AA00,7SD1E00AA00,8SD1E00AA00,9SD1E00AA00,1SE1E00AA00,2SE1E00AA00,3SE1E00AA00,4SE1E00AA00,5SE1E00AA00,6SE1E00AA00,7SE1E00AA00,8SE1E00AA00,9SE1E00AA00,1SF1E00AA00,2SF1E00AA00,3SF1E00AA00,4SF1E00AA00,5SF1E00AA00,6SF1E00AA00,7SF1E00AA00,8SF1E00AA00,9SF1E00AA00,1SG1E00AA00,2SG1E00AA00,3SG1E00AA00,4SG1E00AA00,5SG1E00AA00,6SG1E00AA00,7SG1E00AA00,8SG1E00AA00,9SG1E00AA00,1SH1E00AA00,2SH1E00AA00,3SH1E00AA00,4SH1E00AA00,5SH1E00AA00,6SH1E00AA00,7SH1E00AA00,8SH1E00AA00,9SH1E00AA00,1SJ1E00AA00,2SJ1E00AA00,3SJ1E00AA00,4SJ1E00AA00,5SJ1E00AA00,6SJ1E00AA00,7SJ1E00AA00,8SJ1E00AA00,9SJ1E00AA00,1SK1E00AA00,2SK1E00AA00,3SK1E00AA00,4SK1E00AA00,5SK1E00AA00,6SK1E00AA00,7SK1E00AA00,8SK1E00AA00,9SK1E00AA00,1SM1E00AA00,2SM1E00AA00,3SM1E00AA00,4SM1E00AA00,5SM1E00AA00,6SM1E00AA00,7SM1E00AA00,8SM1E00AA00,9SM1E00AA00,1SN1E00AA00,2SN1E00AA00,3SN1E00AA00,4SN1E00AA00,5SN1E00AA00,6SN1E00AA00,7SN1E00AA00,8SN1E00AA00,9SN1E00AA00,1SP1E00AA00,2SP1E00AA00,3SP1E00AA00,4SP1E00AA00,5SP1E00AA00,6SP1E00AA00,7SP1E00AA00,8SP1E00AA00,9SP1E00AA00,1SQ1E00AA00,2SQ1E00AA00,3SQ1E00AA00,4SQ1E00AA00,5SQ1E00AA00,6SQ1E00AA00,7SQ1E00AA00,8SQ1E00AA00,9SQ1E00AA00,1SR1E00AA00,2SR1E00AA00,3SR1E00AA00,4SR1E00AA00,5SR1E00AA00,6SR1E00AA00,7SR1E00AA00,8SR1E00AA00,9SR1E00AA00,1SS1E00AA00,2SS1E00AA00,3SS1E00AA00,4SS1E00AA00,5SS1E00AA00,6SS1E00AA00,7SS1E00AA00,8SS1E00AA00,9SS1E00AA00,1SU1E00AA00,2SU1E00AA00,3SU1E00AA00,4SU1E00AA00,5SU1E00AA00,6SU1E00AA00,7SU1E00AA00,8SU1E00AA00,9SU1E00AA00,1SV1E00AA00,2SV1E00AA00,3SV1E00AA00,4SV1E00AA00,5SV1E00AA00,6SV1E00AA00,7SV1E00AA00,8SV1E00AA00,9SV1E00AA00,1SW1E00AA00,2SW1E00AA00,3SW1E00AA00,4SW1E00AA00,5SW1E00AA00,6SW1E00AA00,7SW1E00AA00,8SW1E00AA00,9SW1E00AA00,1SX1E00AA00,2SX1E00AA00,3SX1E00AA00,4SX1E00AA00,5SX1E00AA00,6SX1E00AA00,7SX1E00AA00,8SX1E00AA00,9SX1E00AA00,1SY1E00AA00,2SY1E00AA00,3SY1E00AA00,4SY1E00AA00,5SY1E00AA00,6SY1E00AA00,7SY1E00AA00,8SY1E00AA00,9SY1E00AA00,1S02E00AA00,2S02E00AA00,3S02E00AA00,4S02E00AA00,5S02E00AA00,6S02E00AA00,7S02E00AA00,8S02E00AA00,9S02E00AA00,1S12E00AA00,2S12E00AA00,3S12E00AA00,4S12E00AA00,5S12E00AA00,6S12E00AA00,7S12E00AA00,8S12E00AA00,9S12E00AA00,1S22E00AA00,2S22E00AA00,3S22E00AA00,4S22E00AA00,5S22E00AA00,6S22E00AA00,7S22E00AA00,8S22E00AA00,9S22E00AA00,1S32E00AA00,2S32E00AA00,3S32E00AA00,4S32E00AA00,5S32E00AA00,6S32E00AA00,7S32E00AA00,8S32E00AA00,9S32E00AA00,1S42E00AA00,2S42E00AA00,3S42E00AA00,4S42E00AA00,5S42E00AA00,6S42E00AA00,7S42E00AA00,8S42E00AA00,9S42E00AA00,1S52E00AA00,2S52E00AA00,3S52E00AA00,4S52E00AA00,5S52E00AA00,6S52E00AA00,7S52E00AA00,8S52E00AA00,9S52E00AA00,1S62E00AA00,2S62E00AA00,3S62E00AA00,4S62E00AA00,5S62E00AA00,6S62E00AA00,7S62E00AA00,8S62E00AA00,9S62E00AA00,1S72E00AA00,2S72E00AA00,3S72E00AA00,4S72E00AA00,5S72E00AA00,6S72E00AA00,7S72E00AA00,8S72E00AA00,9S72E00AA00,1S82E00AA00,2S82E00AA00,3S82E00AA00,4S82E00AA00,5S82E00AA00,6S82E00AA00,7S82E00AA00,8S82E00AA00,9S82E00AA00,1S92E00AA00,2S92E00AA00,3S92E00AA00,4S92E00AA00,5S92E00AA00,6S92E00AA00,7S92E00AA00,8S92E00AA00,9S92E00AA00,1SA2E00AA00,2SA2E00AA00,3SA2E00AA00,4SA2E00AA00,5SA2E00AA00,6SA2E00AA00,7SA2E00AA00,8SA2E00AA00,9SA2E00AA00,1SC2E00AA00,2SC2E00AA00,3SC2E00AA00,4SC2E00AA00,5SC2E00AA00,6SC2E00AA00,7SC2E00AA00,8SC2E00AA00,9SC2E00AA00,1SD2E00AA00,2SD2E00AA00,3SD2E00AA00,4SD2E00AA00,5SD2E00AA00,6SD2E00AA00,7SD2E00AA00,8SD2E00AA00,9SD2E00AA00,1SE2E00AA00,2SE2E00AA00,3SE2E00AA00,4SE2E00AA00,5SE2E00AA00,6SE2E00AA00,7SE2E00AA00,8SE2E00AA00,9SE2E00AA00,1SF2E00AA00,2SF2E00AA00,3SF2E00AA00,4SF2E00AA00,5SF2E00AA00,6SF2E00AA00,7SF2E00AA00,8SF2E00AA00,9SF2E00AA00,1SG2E00AA00,2SG2E00AA00,3SG2E00AA00,4SG2E00AA00,5SG2E00AA00,6SG2E00AA00,7SG2E00AA00,8SG2E00AA00,9SG2E00AA00,1SH2E00AA00,2SH2E00AA00,3SH2E00AA00,4SH2E00AA00,5SH2E00AA00,6SH2E00AA00,7SH2E00AA00,8SH2E00AA00,9SH2E00AA00,1SJ2E00AA00,2SJ2E00AA00,3SJ2E00AA00,4SJ2E00AA00,5SJ2E00AA00,6SJ2E00AA00,7SJ2E00AA00,8SJ2E00AA00,9SJ2E00AA00,1SK2E00AA00,2SK2E00AA00,3SK2E00AA00,4SK2E00AA00,5SK2E00AA00,6SK2E00AA00,7SK2E00AA00,8SK2E00AA00,9SK2E00AA00,1SM2E00AA00,2SM2E00AA00,3SM2E00AA00,4SM2E00AA00,5SM2E00AA00,6SM2E00AA00,7SM2E00AA00,8SM2E00AA00,9SM2E00AA00,1SN2E00AA00,2SN2E00AA00,3SN2E00AA00,4SN2E00AA00,5SN2E00AA00,6SN2E00AA00,7SN2E00AA00,8SN2E00AA00,9SN2E00AA00,1SP2E00AA00,2SP2E00AA00,3SP2E00AA00,4SP2E00AA00,5SP2E00AA00,6SP2E00AA00,7SP2E00AA00,8SP2E00AA00,9SP2E00AA00,1SQ2E00AA00,2SQ2E00AA00,3SQ2E00AA00,4SQ2E00AA00,5SQ2E00AA00,6SQ2E00AA00,7SQ2E00AA00,8SQ2E00AA00,9SQ2E00AA00,1SR2E00AA00,2SR2E00AA00,3SR2E00AA00,4SR2E00AA00,5SR2E00AA00,6SR2E00AA00,7SR2E00AA00,8SR2E00AA00,9SR2E00AA00,1SS2E00AA00,2SS2E00AA00,3SS2E00AA00,4SS2E00AA00,5SS2E00AA00,6SS2E00AA00,7SS2E00AA00,8SS2E00AA00,9SS2E00AA00,1SU2E00AA00,2SU2E00AA00,3SU2E00AA00,4SU2E00AA00,5SU2E00AA00,6SU2E00AA00,7SU2E00AA00,8SU2E00AA00,9SU2E00AA00,1SV2E00AA00,2SV2E00AA00,3SV2E00AA00,4SV2E00AA00,5SV2E00AA00,6SV2E00AA00,7SV2E00AA00,8SV2E00AA00,9SV2E00AA00,1SW2E00AA00,2SW2E00AA00,3SW2E00AA00,4SW2E00AA00,5SW2E00AA00,6SW2E00AA00,7SW2E00AA00,8SW2E00AA00,9SW2E00AA00,1SX2E00AA00,2SX2E00AA00,3SX2E00AA00,4SX2E00AA00,5SX2E00AA00,6SX2E00AA00,7SX2E00AA00,8SX2E00AA00,9SX2E00AA00,1SY2E00AA00,2SY2E00AA00,3SY2E00AA00,4SY2E00AA00,5SY2E00AA00,6SY2E00AA00,7SY2E00AA00,8SY2E00AA00,9SY2E00AA00,1S03E00AA00,2S03E00AA00,3S03E00AA00,4S03E00AA00,5S03E00AA00,6S03E00AA00,7S03E00AA00,8S03E00AA00,9S03E00AA00,1S13E00AA00,2S13E00AA00,3S13E00AA00,4S13E00AA00,5S13E00AA00,6S13E00AA00,7S13E00AA00,8S13E00AA00,9S13E00AA00,1S23E00AA00,2S23E00AA00,3S23E00AA00,4S23E00AA00,5S23E00AA00,6S23E00AA00,7S23E00AA00,8S23E00AA00,9S23E00AA00,1S33E00AA00,2S33E00AA00,3S33E00AA00,4S33E00AA00,5S33E00AA00,6S33E00AA00,7S33E00AA00,8S33E00AA00,9S33E00AA00,1S43E00AA00,2S43E00AA00,3S43E00AA00,4S43E00AA00,5S43E00AA00,6S43E00AA00,7S43E00AA00,8S43E00AA00,9S43E00AA00,1S53E00AA00,2S53E00AA00,3S53E00AA00,4S53E00AA00,5S53E00AA00,6S53E00AA00,7S53E00AA00,8S53E00AA00,9S53E00AA00,1S63E00AA00,2S63E00AA00,3S63E00AA00,4S63E00AA00,5S63E00AA00,6S63E00AA00,7S63E00AA00,8S63E00AA00,9S63E00AA00,1S73E00AA00,2S73E00AA00,3S73E00AA00,4S73E00AA00,5S73E00AA00,6S73E00AA00,7S73E00AA00,8S73E00AA00,9S73E00AA00,1S83E00AA00,2S83E00AA00,3S83E00AA00,4S83E00AA00,5S83E00AA00,6S83E00AA00,7S83E00AA00,8S83E00AA00,9S83E00AA00,1S93E00AA00,2S93E00AA00,3S93E00AA00,4S93E00AA00,5S93E00AA00,6S93E00AA00,7S93E00AA00,8S93E00AA00,9S93E00AA00,1SA3E00AA00,2SA3E00AA00,3SA3E00AA00,4SA3E00AA00,5SA3E00AA00,6SA3E00AA00,7SA3E00AA00,8SA3E00AA00,9SA3E00AA00,1SC3E00AA00,2SC3E00AA00,3SC3E00AA00,4SC3E00AA00,5SC3E00AA00,6SC3E00AA00,7SC3E00AA00,8SC3E00AA00,9SC3E00AA00,1SD3E00AA00,2SD3E00AA00,3SD3E00AA00,4SD3E00AA00,5SD3E00AA00,6SD3E00AA00,7SD3E00AA00,8SD3E00AA00,9SD3E00AA00,1SE3E00AA00,2SE3E00AA00,3SE3E00AA00,4SE3E00AA00,5SE3E00AA00,6SE3E00AA00,7SE3E00AA00,8SE3E00AA00,9SE3E00AA00,1SF3E00AA00,2SF3E00AA00,3SF3E00AA00,4SF3E00AA00,5SF3E00AA00,6SF3E00AA00,7SF3E00AA00,8SF3E00AA00,9SF3E00AA00,1SG3E00AA00,2SG3E00AA00,3SG3E00AA00,4SG3E00AA00,5SG3E00AA00,6SG3E00AA00,7SG3E00AA00,8SG3E00AA00,9SG3E00AA00,1SH3E00AA00,2SH3E00AA00,3SH3E00AA00,4SH3E00AA00,5SH3E00AA00,6SH3E00AA00,7SH3E00AA00,8SH3E00AA00,9SH3E00AA00,1SJ3E00AA00,2SJ3E00AA00,3SJ3E00AA00,4SJ3E00AA00,5SJ3E00AA00,6SJ3E00AA00,7SJ3E00AA00,8SJ3E00AA00,9SJ3E00AA00,1SK3E00AA00,2SK3E00AA00,3SK3E00AA00,4SK3E00AA00,5SK3E00AA00,6SK3E00AA00,7SK3E00AA00,8SK3E00AA00,9SK3E00AA00,1SM3E00AA00,2SM3E00AA00,3SM3E00AA00,4SM3E00AA00,5SM3E00AA00,6SM3E00AA00,7SM3E00AA00,8SM3E00AA00,9SM3E00AA00,1SN3E00AA00,2SN3E00AA00,3SN3E00AA00,4SN3E00AA00,5SN3E00AA00,6SN3E00AA00,7SN3E00AA00,8SN3E00AA00,9SN3E00AA00,1SP3E00AA00,2SP3E00AA00,3SP3E00AA00,4SP3E00AA00,5SP3E00AA00,6SP3E00AA00,7SP3E00AA00,8SP3E00AA00,9SP3E00AA00,1SQ3E00AA00,2SQ3E00AA00,3SQ3E00AA00,4SQ3E00AA00,5SQ3E00AA00,6SQ3E00AA00,7SQ3E00AA00,8SQ3E00AA00,9SQ3E00AA00,1SR3E00AA00,2SR3E00AA00,3SR3E00AA00,4SR3E00AA00,5SR3E00AA00,6SR3E00AA00,7SR3E00AA00,8SR3E00AA00,9SR3E00AA00,1SS3E00AA00,2SS3E00AA00,3SS3E00AA00,4SS3E00AA00,5SS3E00AA00,6SS3E00AA00,7SS3E00AA00,8SS3E00AA00,9SS3E00AA00,1SU3E00AA00,2SU3E00AA00,3SU3E00AA00,4SU3E00AA00,5SU3E00AA00,6SU3E00AA00,7SU3E00AA00,8SU3E00AA00,9SU3E00AA00,1SV3E00AA00,2SV3E00AA00,3SV3E00AA00,4SV3E00AA00,5SV3E00AA00,6SV3E00AA00,7SV3E00AA00,8SV3E00AA00,9SV3E00AA00,1SW3E00AA00,2SW3E00AA00,3SW3E00AA00,4SW3E00AA00,5SW3E00AA00,6SW3E00AA00,7SW3E00AA00,8SW3E00AA00,9SW3E00AA00,1SX3E00AA00,2SX3E00AA00,3SX3E00AA00,4SX3E00AA00,5SX3E00AA00,6SX3E00AA00,7SX3E00AA00,8SX3E00AA00,9SX3E00AA00,1SY3E00AA00,2SY3E00AA00,3SY3E00AA00,4SY3E00AA00,5SY3E00AA00,6SY3E00AA00,7SY3E00AA00,8SY3E00AA00,9SY3E00AA00,1S04E00AA00,2S04E00AA00,3S04E00AA00,4S04E00AA00,5S04E00AA00,6S04E00AA00,7S04E00AA00,8S04E00AA00,9S04E00AA00,1S14E00AA00,2S14E00AA00,3S14E00AA00,4S14E00AA00,5S14E00AA00,6S14E00AA00,7S14E00AA00,8S14E00AA00,9S14E00AA00,1S24E00AA00,2S24E00AA00,3S24E00AA00,4S24E00AA00,5S24E00AA00,6S24E00AA00,7S24E00AA00,8S24E00AA00,9S24E00AA00,1S34E00AA00,2S34E00AA00,3S34E00AA00,4S34E00AA00,5S34E00AA00,6S34E00AA00,7S34E00AA00,8S34E00AA00,9S34E00AA00,1S44E00AA00,2S44E00AA00,3S44E00AA00,4S44E00AA00,5S44E00AA00,6S44E00AA00,7S44E00AA00,8S44E00AA00,9S44E00AA00,1S54E00AA00,2S54E00AA00,3S54E00AA00,4S54E00AA00,5S54E00AA00,6S54E00AA00,7S54E00AA00,8S54E00AA00,9S54E00AA00,1S64E00AA00,2S64E00AA00,3S64E00AA00,4S64E00AA00,5S64E00AA00,6S64E00AA00,7S64E00AA00,8S64E00AA00,9S64E00AA00,1S74E00AA00,2S74E00AA00,3S74E00AA00,4S74E00AA00,5S74E00AA00,6S74E00AA00,7S74E00AA00,8S74E00AA00,9S74E00AA00,1S84E00AA00,2S84E00AA00,3S84E00AA00,4S84E00AA00,5S84E00AA00,6S84E00AA00,7S84E00AA00,8S84E00AA00,9S84E00AA00,1S94E00AA00,2S94E00AA00,3S94E00AA00,4S94E00AA00,5S94E00AA00,6S94E00AA00,7S94E00AA00,8S94E00AA00,9S94E00AA00,1SA4E00AA00,2SA4E00AA00,3SA4E00AA00,4SA4E00AA00,5SA4E00AA00,6SA4E00AA00,7SA4E00AA00,8SA4E00AA00,9SA4E00AA00,1SC4E00AA00,2SC4E00AA00,3SC4E00AA00,4SC4E00AA00,5SC4E00AA00,6SC4E00AA00,7SC4E00AA00,8SC4E00AA00,9SC4E00AA00,1SD4E00AA00,2SD4E00AA00,3SD4E00AA00,4SD4E00AA00,5SD4E00AA00,6SD4E00AA00,7SD4E00AA00,8SD4E00AA00,9SD4E00AA00,1SE4E00AA00,2SE4E00AA00,3SE4E00AA00,4SE4E00AA00,5SE4E00AA00,6SE4E00AA00,7SE4E00AA00,8SE4E00AA00,9SE4E00AA00,1SF4E00AA00,2SF4E00AA00,3SF4E00AA00,4SF4E00AA00,5SF4E00AA00,6SF4E00AA00,7SF4E00AA00,8SF4E00AA00,9SF4E00AA00,1SG4E00AA00,2SG4E00AA00,3SG4E00AA00,4SG4E00AA00,5SG4E00AA00,6SG4E00AA00,7SG4E00AA00,8SG4E00AA00,9SG4E00AA00,1SH4E00AA00,2SH4E00AA00,3SH4E00AA00,4SH4E00AA00,5SH4E00AA00,6SH4E00AA00,7SH4E00AA00,8SH4E00AA00,9SH4E00AA00,1SJ4E00AA00,2SJ4E00AA00,3SJ4E00AA00,4SJ4E00AA00,5SJ4E00AA00,6SJ4E00AA00,7SJ4E00AA00,8SJ4E00AA00,9SJ4E00AA00,1SK4E00AA00,2SK4E00AA00,3SK4E00AA00,4SK4E00AA00,5SK4E00AA00,6SK4E00AA00,7SK4E00AA00,8SK4E00AA00,9SK4E00AA00,1SM4E00AA00,2SM4E00AA00,3SM4E00AA00,4SM4E00AA00,5SM4E00AA00,6SM4E00AA00,7SM4E00AA00,8SM4E00AA00,9SM4E00AA00,1SN4E00AA00,2SN4E00AA00,3SN4E00AA00,4SN4E00AA00,5SN4E00AA00,6SN4E00AA00,7SN4E00AA00,8SN4E00AA00,9SN4E00AA00,1SP4E00AA00,2SP4E00AA00,3SP4E00AA00,4SP4E00AA00,5SP4E00AA00,6SP4E00AA00,7SP4E00AA00,8SP4E00AA00,9SP4E00AA00,1SQ4E00AA00,2SQ4E00AA00,3SQ4E00AA00,4SQ4E00AA00,5SQ4E00AA00,6SQ4E00AA00,7SQ4E00AA00,8SQ4E00AA00,9SQ4E00AA00,1SR4E00AA00,2SR4E00AA00,3SR4E00AA00,4SR4E00AA00,5SR4E00AA00,6SR4E00AA00,7SR4E00AA00,8SR4E00AA00,9SR4E00AA00,1SS4E00AA00,2SS4E00AA00,3SS4E00AA00,4SS4E00AA00,5SS4E00AA00,6SS4E00AA00,7SS4E00AA00,8SS4E00AA00,9SS4E00AA00,1SU4E00AA00,2SU4E00AA00,3SU4E00AA00,4SU4E00AA00,5SU4E00AA00,6SU4E00AA00,7SU4E00AA00,8SU4E00AA00,9SU4E00AA00,1SV4E00AA00,2SV4E00AA00,3SV4E00AA00,4SV4E00AA00,5SV4E00AA00,6SV4E00AA00,7SV4E00AA00,8SV4E00AA00,9SV4E00AA00,1SW4E00AA00,2SW4E00AA00,3SW4E00AA00,4SW4E00AA00,5SW4E00AA00,6SW4E00AA00,7SW4E00AA00,8SW4E00AA00,9SW4E00AA00,1SX4E00AA00,2SX4E00AA00,3SX4E00AA00,4SX4E00AA00,5SX4E00AA00,6SX4E00AA00,7SX4E00AA00,8SX4E00AA00,9SX4E00AA00,1SY4E00AA00,2SY4E00AA00,3SY4E00AA00,4SY4E00AA00,5SY4E00AA00,6SY4E00AA00,7SY4E00AA00,8SY4E00AA00,9SY4E00AA00,1S05E00AA00,2S05E00AA00,3S05E00AA00,4S05E00AA00,5S05E00AA00,6S05E00AA00,7S05E00AA00,8S05E00AA00,9S05E00AA00,1S15E00AA00,2S15E00AA00,3S15E00AA00,4S15E00AA00,5S15E00AA00,6S15E00AA00,7S15E00AA00,8S15E00AA00,9S15E00AA00,1S25E00AA00,2S25E00AA00,3S25E00AA00,4S25E00AA00,5S25E00AA00,6S25E00AA00,7S25E00AA00,8S25E00AA00,9S25E00AA00,1S35E00AA00,2S35E00AA00,3S35E00AA00,4S35E00AA00,5S35E00AA00,6S35E00AA00,7S35E00AA00,8S35E00AA00,9S35E00AA00,1S45E00AA00,2S45E00AA00,3S45E00AA00,4S45E00AA00,5S45E00AA00,6S45E00AA00,7S45E00AA00,8S45E00AA00,9S45E00AA00,1S55E00AA00,2S55E00AA00,3S55E00AA00,4S55E00AA00,5S55E00AA00,6S55E00AA00,7S55E00AA00,8S55E00AA00,9S55E00AA00,1S65E00AA00,2S65E00AA00,3S65E00AA00,4S65E00AA00,5S65E00AA00,6S65E00AA00,7S65E00AA00,8S65E00AA00,9S65E00AA00,1S75E00AA00,2S75E00AA00,3S75E00AA00,4S75E00AA00,5S75E00AA00,6S75E00AA00,7S75E00AA00,8S75E00AA00,9S75E00AA00,1S85E00AA00,2S85E00AA00,3S85E00AA00,4S85E00AA00,5S85E00AA00,6S85E00AA00,7S85E00AA00,8S85E00AA00,9S85E00AA00,1S95E00AA00,2S95E00AA00,3S95E00AA00,4S95E00AA00,5S95E00AA00,6S95E00AA00,7S95E00AA00,8S95E00AA00,9S95E00AA00,1SA5E00AA00,2SA5E00AA00,3SA5E00AA00,4SA5E00AA00,5SA5E00AA00,6SA5E00AA00,7SA5E00AA00,8SA5E00AA00,9SA5E00AA00,1SC5E00AA00,2SC5E00AA00,3SC5E00AA00,4SC5E00AA00,5SC5E00AA00,6SC5E00AA00,7SC5E00AA00,8SC5E00AA00,9SC5E00AA00,1SD5E00AA00,2SD5E00AA00,3SD5E00AA00,4SD5E00AA00,5SD5E00AA00,6SD5E00AA00,7SD5E00AA00,8SD5E00AA00,9SD5E00AA00,1SE5E00AA00,2SE5E00AA00,3SE5E00AA00,4SE5E00AA00,5SE5E00AA00,6SE5E00AA00,7SE5E00AA00,8SE5E00AA00,9SE5E00AA00,1SF5E00AA00,2SF5E00AA00,3SF5E00AA00,4SF5E00AA00,5SF5E00AA00,6SF5E00AA00,7SF5E00AA00,8SF5E00AA00,9SF5E00AA00,1SG5E00AA00,2SG5E00AA00,3SG5E00AA00,4SG5E00AA00,5SG5E00AA00,6SG5E00AA00,7SG5E00AA00,8SG5E00AA00,9SG5E00AA00,1SH5E00AA00,2SH5E00AA00,3SH5E00AA00,4SH5E00AA00,5SH5E00AA00,6SH5E00AA00,7SH5E00AA00,8SH5E00AA00,9SH5E00AA00,1SJ5E00AA00,2SJ5E00AA00,3SJ5E00AA00,4SJ5E00AA00,5SJ5E00AA00,6SJ5E00AA00,7SJ5E00AA00,8SJ5E00AA00,9SJ5E00AA00,1SK5E00AA00,2SK5E00AA00,3SK5E00AA00,4SK5E00AA00,5SK5E00AA00,6SK5E00AA00,7SK5E00AA00,8SK5E00AA00,9SK5E00AA00,1SM5E00AA00,2SM5E00AA00,3SM5E00AA00,4SM5E00AA00,5SM5E00AA00,6SM5E00AA00,7SM5E00AA00,8SM5E00AA00,9SM5E00AA00,1SN5E00AA00,2SN5E00AA00,3SN5E00AA00,4SN5E00AA00,5SN5E00AA00,6SN5E00AA00,7SN5E00AA00,8SN5E00AA00,9SN5E00AA00,1SP5E00AA00,2SP5E00AA00,3SP5E00AA00,4SP5E00AA00,5SP5E00AA00,6SP5E00AA00,7SP5E00AA00,8SP5E00AA00,9SP5E00AA00,1SQ5E00AA00,2SQ5E00AA00,3SQ5E00AA00,4SQ5E00AA00,5SQ5E00AA00,6SQ5E00AA00,7SQ5E00AA00,8SQ5E00AA00,9SQ5E00AA00,1SR5E00AA00,2SR5E00AA00,3SR5E00AA00,4SR5E00AA00,5SR5E00AA00,6SR5E00AA00,7SR5E00AA00,8SR5E00AA00,9SR5E00AA00,1SS5E00AA00,2SS5E00AA00,3SS5E00AA00,4SS5E00AA00,5SS5E00AA00,6SS5E00AA00,7SS5E00AA00,8SS5E00AA00,9SS5E00AA00,1SU5E00AA00,2SU5E00AA00,3SU5E00AA00,4SU5E00AA00,5SU5E00AA00,6SU5E00AA00,7SU5E00AA00,8SU5E00AA00,9SU5E00AA00,1SV5E00AA00,2SV5E00AA00,3SV5E00AA00,4SV5E00AA00,5SV5E00AA00,6SV5E00AA00,7SV5E00AA00,8SV5E00AA00,9SV5E00AA00,1SW5E00AA00,2SW5E00AA00,3SW5E00AA00,4SW5E00AA00,5SW5E00AA00,6SW5E00AA00,7SW5E00AA00,8SW5E00AA00,9SW5E00AA00,1SX5E00AA00,2SX5E00AA00,3SX5E00AA00,4SX5E00AA00,5SX5E00AA00,6SX5E00AA00,7SX5E00AA00,8SX5E00AA00,9SX5E00AA00,1SY5E00AA00,2SY5E00AA00,3SY5E00AA00,4SY5E00AA00,5SY5E00AA00,6SY5E00AA00,7SY5E00AA00,8SY5E00AA00,9SY5E00AA00,1S06E00AA00,2S06E00AA00,3S06E00AA00,4S06E00AA00,5S06E00AA00,6S06E00AA00,7S06E00AA00,8S06E00AA00,9S06E00AA00,1S16E00AA00,2S16E00AA00,3S16E00AA00,4S16E00AA00,5S16E00AA00,6S16E00AA00,7S16E00AA00,8S16E00AA00,9S16E00AA00,1S26E00AA00,2S26E00AA00,3S26E00AA00,4S26E00AA00,5S26E00AA00,6S26E00AA00,7S26E00AA00,8S26E00AA00,9S26E00AA00,1S36E00AA00,2S36E00AA00,3S36E00AA00,4S36E00AA00,5S36E00AA00,6S36E00AA00,7S36E00AA00,8S36E00AA00,9S36E00AA00,1S46E00AA00,2S46E00AA00,3S46E00AA00,4S46E00AA00,5S46E00AA00,6S46E00AA00,7S46E00AA00,8S46E00AA00,9S46E00AA00,1S56E00AA00,2S56E00AA00,3S56E00AA00,4S56E00AA00,5S56E00AA00,6S56E00AA00,7S56E00AA00,8S56E00AA00,9S56E00AA00,1S66E00AA00,2S66E00AA00,3S66E00AA00,4S66E00AA00,5S66E00AA00,6S66E00AA00,7S66E00AA00,8S66E00AA00,9S66E00AA00,1S76E00AA00,2S76E00AA00,3S76E00AA00,4S76E00AA00,5S76E00AA00,6S76E00AA00,7S76E00AA00,8S76E00AA00,9S76E00AA00,1S86E00AA00,2S86E00AA00,3S86E00AA00,4S86E00AA00,5S86E00AA00,6S86E00AA00,7S86E00AA00,8S86E00AA00,9S86E00AA00,1S96E00AA00,2S96E00AA00,3S96E00AA00,4S96E00AA00,5S96E00AA00,6S96E00AA00,7S96E00AA00,8S96E00AA00,9S96E00AA00,1SA6E00AA00,2SA6E00AA00,3SA6E00AA00,4SA6E00AA00,5SA6E00AA00,6SA6E00AA00,7SA6E00AA00,8SA6E00AA00,9SA6E00AA00,1SC6E00AA00,2SC6E00AA00,3SC6E00AA00,4SC6E00AA00,5SC6E00AA00,6SC6E00AA00,7SC6E00AA00,8SC6E00AA00,9SC6E00AA00,1SD6E00AA00,2SD6E00AA00,3SD6E00AA00,4SD6E00AA00,5SD6E00AA00,6SD6E00AA00,7SD6E00AA00,8SD6E00AA00,9SD6E00AA00,1SE6E00AA00,2SE6E00AA00,3SE6E00AA00,4SE6E00AA00,5SE6E00AA00,6SE6E00AA00,7SE6E00AA00,8SE6E00AA00,9SE6E00AA00,1SF6E00AA00,2SF6E00AA00,3SF6E00AA00,4SF6E00AA00,5SF6E00AA00,6SF6E00AA00,7SF6E00AA00,8SF6E00AA00,9SF6E00AA00,1SG6E00AA00,2SG6E00AA00,3SG6E00AA00,4SG6E00AA00,5SG6E00AA00,6SG6E00AA00,7SG6E00AA00,8SG6E00AA00,9SG6E00AA00,1SH6E00AA00,2SH6E00AA00,3SH6E00AA00,4SH6E00AA00,5SH6E00AA00,6SH6E00AA00,7SH6E00AA00,8SH6E00AA00,9SH6E00AA00,1SJ6E00AA00,2SJ6E00AA00,3SJ6E00AA00,4SJ6E00AA00,5SJ6E00AA00,6SJ6E00AA00,7SJ6E00AA00,8SJ6E00AA00,9SJ6E00AA00,1SK6E00AA00,2SK6E00AA00,3SK6E00AA00,4SK6E00AA00,5SK6E00AA00,6SK6E00AA00,7SK6E00AA00,8SK6E00AA00,9SK6E00AA00,1SM6E00AA00,2SM6E00AA00,3SM6E00AA00,4SM6E00AA00,5SM6E00AA00,6SM6E00AA00,7SM6E00AA00,8SM6E00AA00,9SM6E00AA00,1SN6E00AA00,2SN6E00AA00,3SN6E00AA00,4SN6E00AA00,5SN6E00AA00,6SN6E00AA00,7SN6E00AA00,8SN6E00AA00,9SN6E00AA00,1SP6E00AA00,2SP6E00AA00,3SP6E00AA00,4SP6E00AA00,5SP6E00AA00,6SP6E00AA00,7SP6E00AA00,8SP6E00AA00,9SP6E00AA00,1SQ6E00AA00,2SQ6E00AA00,3SQ6E00AA00,4SQ6E00AA00,5SQ6E00AA00,6SQ6E00AA00,7SQ6E00AA00,8SQ6E00AA00,9SQ6E00AA00,1SR6E00AA00,2SR6E00AA00,3SR6E00AA00,4SR6E00AA00,5SR6E00AA00,6SR6E00AA00,7SR6E00AA00,8SR6E00AA00,9SR6E00AA00,1SS6E00AA00,2SS6E00AA00,3SS6E00AA00,4SS6E00AA00,5SS6E00AA00,6SS6E00AA00,7SS6E00AA00,8SS6E00AA00,9SS6E00AA00,1SU6E00AA00,2SU6E00AA00,3SU6E00AA00,4SU6E00AA00,5SU6E00AA00,6SU6E00AA00,7SU6E00AA00,8SU6E00AA00,9SU6E00AA00,1SV6E00AA00,2SV6E00AA00,3SV6E00AA00,4SV6E00AA00,5SV6E00AA00,6SV6E00AA00,7SV6E00AA00,8SV6E00AA00,9SV6E00AA00,1SW6E00AA00,2SW6E00AA00,3SW6E00AA00,4SW6E00AA00,5SW6E00AA00,6SW6E00AA00,7SW6E00AA00,8SW6E00AA00,9SW6E00AA00,1SX6E00AA00,2SX6E00AA00,3SX6E00AA00,4SX6E00AA00,5SX6E00AA00,6SX6E00AA00,7SX6E00AA00,8SX6E00AA00,9SX6E00AA00,1SY6E00AA00,2SY6E00AA00,3SY6E00AA00,4SY6E00AA00,5SY6E00AA00,6SY6E00AA00,7SY6E00AA00,8SY6E00AA00,9SY6E00AA00 \ No newline at end of file diff --git a/dpc-testing/performance/go.mod b/dpc-testing/performance/go.mod deleted file mode 100644 index 919c5ee866..0000000000 --- a/dpc-testing/performance/go.mod +++ /dev/null @@ -1,29 +0,0 @@ -module github.com/CMSgov/dpc-app/dpc-testing/performance - -go 1.15 - -require ( - github.com/CMSgov/dpc-app/dpcclient v0.0.0-20211220174319-4469d0cadfff - github.com/bmizerany/perks v0.0.0-20141205001514-d9a9656a3a4b // indirect - github.com/dgryski/go-gk v0.0.0-20200319235926-a69029f61654 // indirect - github.com/gbrlsnchs/jwt/v3 v3.0.1 // indirect - github.com/go-pg/pg v8.0.7+incompatible - github.com/google/gxui v0.0.0-20151028112939-f85e0a97b3a4 // indirect - github.com/google/uuid v1.3.0 - github.com/influxdata/tdigest v0.0.1 // indirect - github.com/jinzhu/inflection v1.0.0 // indirect - github.com/joeljunstrom/go-luhn v0.0.0-20190413165225-1e071b33b576 - github.com/magefile/mage v1.12.1 // indirect - github.com/mailru/easyjson v0.7.7 // indirect - github.com/onsi/ginkgo v1.16.5 // indirect - github.com/onsi/gomega v1.17.0 // indirect - github.com/smartystreets/goconvey v1.7.2 // indirect - github.com/streadway/quantile v0.0.0-20150917103942-b0c588724d25 // indirect - github.com/stretchr/testify v1.7.0 - github.com/tsenart/vegeta v12.7.0+incompatible - github.com/zach-klippenstein/goregen v0.0.0-20160303162051-795b5e3961ea - golang.org/x/net v0.23.0 // indirect - mellium.im/sasl v0.3.1 // indirect -) - -replace github.com/CMSgov/dpc-app/dpcclient => ../../dpcclient diff --git a/dpc-testing/performance/go.sum b/dpc-testing/performance/go.sum deleted file mode 100644 index d52e4794eb..0000000000 --- a/dpc-testing/performance/go.sum +++ /dev/null @@ -1,839 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.6.0/go.mod h1:afJwI0vaXwAG54kI7A//lP/lSPDkQORQuMkv56TxEPU= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -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/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bmizerany/perks v0.0.0-20141205001514-d9a9656a3a4b h1:AP/Y7sqYicnjGDfD5VcY4CIfh1hRXBUavxrvELjTiOE= -github.com/bmizerany/perks v0.0.0-20141205001514-d9a9656a3a4b/go.mod h1:ac9efd0D1fsDb3EJvhqgXRbFx7bs2wqZ10HQPeU8U/Q= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-gk v0.0.0-20200319235926-a69029f61654 h1:XOPLOMn/zT4jIgxfxSsoXPxkrzz0FaCHwp33x5POJ+Q= -github.com/dgryski/go-gk v0.0.0-20200319235926-a69029f61654/go.mod h1:qm+vckxRlDt0aOla0RYJJVeqHZlWfOm2UIxHaqPB46E= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= -github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= -github.com/gbrlsnchs/jwt/v3 v3.0.0-rc.2/go.mod h1:AncDcjXz18xetI3A6STfXq2w+LuTx8pQ8bGEwRN8zVM= -github.com/gbrlsnchs/jwt/v3 v3.0.1 h1:lbUmgAKpxnClrKloyIwpxm4OuWeDl5wLk52G91ODPw4= -github.com/gbrlsnchs/jwt/v3 v3.0.1/go.mod h1:AncDcjXz18xetI3A6STfXq2w+LuTx8pQ8bGEwRN8zVM= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-pg/pg v8.0.7+incompatible h1:ty/sXL1OZLo+47KK9N8llRcmbA9tZasqbQ/OO4ld53g= -github.com/go-pg/pg v8.0.7+incompatible/go.mod h1:a2oXow+aFOrvwcKs3eIA0lNFmMilrxK2sOkB5NWe0vA= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -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/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= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gxui v0.0.0-20151028112939-f85e0a97b3a4 h1:OL2d27ueTKnlQJoqLW2fc9pWYulFnJYLWzomGV7HqZo= -github.com/google/gxui v0.0.0-20151028112939-f85e0a97b3a4/go.mod h1:Pw1H1OjSNHiqeuxAduB1BKYXIwFtsyrY47nEqSgEiCM= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= -github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= -github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= -github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/influxdata/tdigest v0.0.1 h1:XpFptwYmnEKUqmkcDjrzffswZ3nvNeevbUSLPP/ZzIY= -github.com/influxdata/tdigest v0.0.1/go.mod h1:Z0kXnxzbTC2qrx4NaIzYkE1k66+6oEDQTvL95hQFh5Y= -github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= -github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= -github.com/joeljunstrom/go-luhn v0.0.0-20190413165225-1e071b33b576 h1:k82KNEG8vk59eHv/8xwBUh4dSR/t1wPiht4aDJm0SOY= -github.com/joeljunstrom/go-luhn v0.0.0-20190413165225-1e071b33b576/go.mod h1:pE5zuSeg07RZZfWS158WpV7oUWb1++8T2jZ/UklLM3E= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= -github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -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= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/magefile/mage v1.9.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= -github.com/magefile/mage v1.12.1 h1:oGdAbhIUd6iKamKlDGVtU6XGdy5SgNuCWn7gCTgHDtU= -github.com/magefile/mage v1.12.1/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= -github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= -github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= -github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.17.0 h1:9Luw4uT5HTjHTN8+aNcSThgH1vdXnmdJ8xIfZ4wyTRE= -github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -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/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/smartystreets/assertions v1.2.0 h1:42S6lae5dvLc7BrLu/0ugRtcFVjoJNMC/N3yZFZkDFs= -github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= -github.com/smartystreets/goconvey v1.7.2 h1:9RBaZCeXEQ3UselpuwUQHltGVXvdwm6cv1hgR6gDIPg= -github.com/smartystreets/goconvey v1.7.2/go.mod h1:Vw0tHAZW6lzCRk3xgdin6fKYcG+G3Pg9vgXWeJpQFMM= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4= -github.com/streadway/quantile v0.0.0-20150917103942-b0c588724d25 h1:7z3LSn867ex6VSaahyKadf4WtSsJIgne6A1WLOAGM8A= -github.com/streadway/quantile v0.0.0-20150917103942-b0c588724d25/go.mod h1:lbP8tGiBjZ5YWIc2fzuRpTaz0b/53vT6PEs3QuAWzuU= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tsenart/vegeta v12.7.0+incompatible h1:sGlrv11EMxQoKOlDuMWR23UdL90LE5VlhKw/6PWkZmU= -github.com/tsenart/vegeta v12.7.0+incompatible/go.mod h1:Smz/ZWfhKRcyDDChZkG3CyTHdj87lHzio/HOCkbndXM= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zach-klippenstein/goregen v0.0.0-20160303162051-795b5e3961ea h1:CyhwejzVGvZ3Q2PSbQ4NRRYn+ZWv5eS1vlaEusT+bAI= -github.com/zach-klippenstein/goregen v0.0.0-20160303162051-795b5e3961ea/go.mod h1:eNr558nEUjP8acGw8FFjTeWvSgU1stO7FAO6eknhHe4= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= -golang.org/x/crypto v0.0.0-20190927123631-a832865fa7ad/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= -golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6 h1:QE6XYQK6naiK1EPAe1g/ILLxN5RBoH5xkJk3CqlMI/Y= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -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-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= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -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-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= -golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= -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= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= -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= -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/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -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= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca h1:PupagGYwj8+I4ubCxcmcBRk3VlUWtTg5huQpZR9flmE= -gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6 h1:4WsZyVtkthqrHTbDCJfiTs8IWNYE4uvsSDgaV6xpp+o= -gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -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/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= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -mellium.im/sasl v0.3.1 h1:wE0LW6g7U83vhvxjC1IY8DnXM+EU095yeo8XClvCdfo= -mellium.im/sasl v0.3.1/go.mod h1:xm59PUYpZHhgQ9ZqoJ5QaCqzWMi8IeS49dhp6plPCzw= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/dpc-testing/performance/main.go b/dpc-testing/performance/main.go deleted file mode 100644 index 1777754343..0000000000 --- a/dpc-testing/performance/main.go +++ /dev/null @@ -1,29 +0,0 @@ -package main - -import ( - "flag" - - "github.com/CMSgov/dpc-app/dpc-testing/performance/pkg/dpc" -) - -func main() { - var apiURL, adminURL string - - flag.StringVar(&apiURL, "api_url", "http://localhost:3002/v1", "Base URL of API") - flag.StringVar(&adminURL, "admin_url", "http://localhost:9903/tasks", "Base URL of admin tasks") - flag.Parse() - - api := dpc.New(apiURL, dpc.AdminAPI{URL: adminURL}) - - dpc.CreateDirs() - defer dpc.DeleteDirs() - - // Run Perfomance test files - api.RunMetadataTests() - api.RunKeyTests() - api.RunTokenTests() - api.RunPatientTests() - api.RunPractitionerTests() - api.RunOrgTests() - api.RunGroupTests() -} diff --git a/dpc-testing/performance/pkg/dpc/admin.go b/dpc-testing/performance/pkg/dpc/admin.go deleted file mode 100644 index 77fd5ff1e9..0000000000 --- a/dpc-testing/performance/pkg/dpc/admin.go +++ /dev/null @@ -1,28 +0,0 @@ -package dpc - -import ( - "fmt" - "io/ioutil" - "net/http" -) - -type AdminAPI struct { - URL string -} - -func (admin *AdminAPI) GetClientToken(orgIDs ...string) []byte { - reqURL := fmt.Sprintf("%s/generate-token", admin.URL) - if len(orgIDs) > 0 { - reqURL = fmt.Sprintf("%s?organization=%s", reqURL, orgIDs[0]) - } - resp, err := http.Post(reqURL, "", nil) - if err != nil { - cleanAndPanic(err) - } - defer resp.Body.Close() - clientToken, err := ioutil.ReadAll(resp.Body) - if err != nil { - cleanAndPanic(err) - } - return clientToken -} diff --git a/dpc-testing/performance/pkg/dpc/api.go b/dpc-testing/performance/pkg/dpc/api.go deleted file mode 100644 index 4dc423d53a..0000000000 --- a/dpc-testing/performance/pkg/dpc/api.go +++ /dev/null @@ -1,172 +0,0 @@ -package dpc - -import ( - "bytes" - "crypto" - "crypto/rand" - "crypto/rsa" - "crypto/sha256" - "encoding/base64" - "encoding/json" - "errors" - "fmt" - "io/ioutil" - "net/http" - "strings" - - dpcclient "github.com/CMSgov/dpc-app/dpcclient/lib" -) - -type API struct { - publicURL string - URL string - goldenMacaroon []byte - AdminAPI -} - -func New(apiURL string, admin AdminAPI) *API { - api := API{ - URL: apiURL, - AdminAPI: admin, - } - api.goldenMacaroon = admin.GetClientToken() - - return &api -} - -func (api *API) RefreshAccessToken(privateKey *rsa.PrivateKey, keyID string, clientToken []byte) string { - url := api.URL - if len(api.publicURL) > 0 { - url = api.publicURL - } - authToken, err := dpcclient.GenerateAuthToken(privateKey, keyID, clientToken, url) - if err != nil { - cleanAndPanic(err) - } - - accessToken, err := dpcclient.GetAccessToken(authToken, api.URL) - if err != nil { - cleanAndPanic(err) - } - - return accessToken -} - -func (api *API) CreateOrgWithTemplate(fp string) string { - orgBundle := templateBodyGenerator(fp, map[string]func() string{"{NPI}": generateNPI}) - buffer := bytes.NewBuffer(orgBundle()) - req, err := http.NewRequest("POST", fmt.Sprintf("%s/Organization/$submit", api.URL), buffer) - if err != nil { - cleanAndPanic(err) - } - req.Header.Add("Content-Type", "application/fhir+json") - req.Header.Add("Authorization", fmt.Sprintf("Bearer %s", api.goldenMacaroon)) - resp, err := http.DefaultClient.Do(req) - if err != nil { - cleanAndPanic(err) - } - defer resp.Body.Close() - orgResp, _ := ioutil.ReadAll(resp.Body) - var result Resource - json.Unmarshal(orgResp, &result) - if result.Type == "OperationOutcome" { - cleanAndPanic(errors.New(string(orgResp))) - } - return result.ID -} - -func (api *API) CreateOrg() string { - return api.CreateOrgWithTemplate("./templates/organization-bundle-template.json") -} - -func (api *API) GenerateKeyPairAndSignature() (string, *rsa.PrivateKey, string) { - privKey, pubKey, err := dpcclient.GenRSAKeyPair() - if err != nil { - cleanAndPanic(err) - } - if err := dpcclient.SaveDPCKeyPair("./keys/dpc-key", privKey, pubKey); err != nil { - cleanAndPanic(err) - } - - pubKeyBytes, err := dpcclient.ReadSmallFile("./keys/dpc-key-public.pem") - if err != nil { - cleanAndPanic(err) - } - pubKeyStr := strings.ReplaceAll(string(pubKeyBytes), "\n", "\\n") - - snippet := []byte("This is the snippet used to verify a key pair in DPC.") - snippetHash := sha256.New() - _, err = snippetHash.Write(snippet) - if err != nil { - cleanAndPanic(err) - } - - signature, err := rsa.SignPKCS1v15(rand.Reader, privKey, crypto.SHA256, snippetHash.Sum(nil)) - if err != nil { - cleanAndPanic(err) - } - sigEnc := base64.StdEncoding.EncodeToString(signature) - - return pubKeyStr, privKey, sigEnc -} - -func (api *API) UploadKey(key, sig, orgID string) string { - keySigReader := strings.NewReader(fmt.Sprintf("{ \"key\": \"%s\", \"signature\": \"%s\" }", key, sig)) - req, err := http.NewRequest("POST", fmt.Sprintf("%s/upload-key?organization=%s", api.AdminAPI.URL, orgID), keySigReader) - if err != nil { - cleanAndPanic(err) - } - req.Header.Add("Content-Type", "application/json") - resp, err := http.DefaultClient.Do(req) - if err != nil { - cleanAndPanic(err) - } - defer resp.Body.Close() - keyResp, err := ioutil.ReadAll(resp.Body) - if err != nil { - cleanAndPanic(err) - } - var result Resource - json.Unmarshal(keyResp, &result) - return result.ID -} - -func (api *API) DeleteOrg(orgID string) { - req, err := http.NewRequest("DELETE", fmt.Sprintf("%s/Organization/%s", api.URL, orgID), nil) - if err != nil { - fmt.Println("Organization could not be deleted", err) - } - req.Header.Add("Authorization", fmt.Sprintf("Bearer %s", api.goldenMacaroon)) - _, err = http.DefaultClient.Do(req) - if err != nil { - fmt.Println("Organization could not be deleted", err) - } - -} - -type orgAuth struct { - orgID string - accessToken string - keyID string - privateKey *rsa.PrivateKey -} - -func (api *API) SetUpOrgAuth(orgIDs ...string) orgAuth { - var orgID string - if len(orgIDs) > 0 { - orgID = orgIDs[0] - } else { - orgID = api.CreateOrg() - } - pubKeyStr, privateKey, signature := api.GenerateKeyPairAndSignature() - keyID := api.UploadKey(pubKeyStr, signature, orgID) - clientToken := api.AdminAPI.GetClientToken(orgID) - accessToken := api.RefreshAccessToken(privateKey, keyID, clientToken) - - return orgAuth{ - orgID: orgID, - accessToken: accessToken, - keyID: keyID, - privateKey: privateKey, - } -} diff --git a/dpc-testing/performance/pkg/dpc/bfd_load_test.go b/dpc-testing/performance/pkg/dpc/bfd_load_test.go deleted file mode 100644 index f24d3546e9..0000000000 --- a/dpc-testing/performance/pkg/dpc/bfd_load_test.go +++ /dev/null @@ -1,143 +0,0 @@ -package dpc - -import ( - "flag" - "fmt" - "os" - "strings" - "testing" - "time" - - "github.com/CMSgov/dpc-app/dpc-testing/performance/pkg/dpc/targeter" - "github.com/go-pg/pg" - "github.com/google/uuid" -) - -var apiURL, adminURL, orgID, dbURL, dbUser, dbPass, tokenEnv string -var numOfPatients, numOfBatches int - -type JobQueueBatch struct { - tableName struct{} `sql:"job_queue_batch"` - JobID string `pg:"job_id"` - BatchID string `pg:"batch_id"` - OrganizationID string `pg:"organization_id"` - ProviderID string `pg:"provider_id"` - Patients string - ResourceTypes string - Status int `sql:",notnull"` - Priority int - IsBulk bool - TransactionTime time.Time -} - -func TestMain(m *testing.M) { - flag.StringVar(&tokenEnv, "api_env", "dev", "The Token Environment") - flag.StringVar(&apiURL, "api_url", "http://localhost:3002/v1", "Base URL of API") - flag.StringVar(&adminURL, "admin_url", "http://localhost:9903/tasks", "Base URL of admin tasks") - flag.StringVar(&dbURL, "db_url", "localhost:5432", "The database url") - flag.StringVar(&dbUser, "db_user", "postgres", "The database username") - flag.StringVar(&dbPass, "db_pass", "dpc-safe", "The database password") - flag.IntVar(&numOfPatients, "num_of_patients", 10, "The number of patients to create") - flag.IntVar(&numOfBatches, "num_of_batches", 3, "Number of batches to create") - - flag.Parse() - os.Exit(m.Run()) -} - -func BenchmarkExport(b *testing.B) { - - api := New(apiURL, AdminAPI{URL: adminURL}) - if len(tokenEnv) > 0 { - api.publicURL = fmt.Sprintf("https://%s.dpc.cms.gov/api/v1", tokenEnv) - } - - CreateDirs() - defer DeleteDirs() - - db := pg.Connect(&pg.Options{ - Addr: dbURL, - User: dbUser, - Password: dbPass, - Database: "dpc_queue", - }) - - defer db.Close() - - // Create organization (and delete at the end) and setup accesstoken - orgID := api.CreateOrgWithTemplate("../../templates/organization-bundle-template.json") - auth := api.SetUpOrgAuth(orgID) - defer api.DeleteOrg(auth.orgID) - - // Create Practitioner - resps := targeter.New(targeter.Config{ - Method: "POST", - BaseURL: api.URL, - Endpoint: "Practitioner", - AccessToken: auth.accessToken, - Generator: templateBodyGenerator("../../templates/practitioner-template.json", map[string]func() string{"{NPI}": generateNPI}), - }).Run(1, 1) - - pracIDs := unmarshalIDs(resps) - - b.Run("BFD Load", func(b *testing.B) { - // Create job queue batches with patients in the queued state in one transaction - jobID, createJobBatchesTx := createJobBatches(orgID, pracIDs[0], numOfPatients, numOfBatches) - if err := db.RunInTransaction(createJobBatchesTx); err != nil { - panic(err) - } - - // Wait for job to finish - var statuses []int - for ok := true; ok; ok = !allComplete(statuses) { - err := db.Model((*JobQueueBatch)(nil)).Column("status").Where("job_id = ?", jobID).Select(&statuses) - if err != nil { - panic(err) - } - } - }) -} - -func createJobBatches(orgID string, pracID string, numOfPatients int, numOfBatches int) (string, func(tx *pg.Tx) error) { - jobID := uuid.New().String() - patientMBIGenerator := generateMBIFromFile("../../data/mbis.csv") - - txFn := func(tx *pg.Tx) error { - for i := 0; i < numOfBatches; i++ { - patients := []string{} - for i := 0; i < numOfPatients; i++ { - patients = append(patients, patientMBIGenerator()) - } - jobQueueBatch := &JobQueueBatch{ - JobID: jobID, - BatchID: uuid.New().String(), - OrganizationID: orgID, - ProviderID: pracID, - Patients: strings.Join(patients, ","), - ResourceTypes: "Patient,ExplanationOfBenefit,Coverage", - Status: 0, - Priority: 1000, - IsBulk: true, - TransactionTime: time.Now().AddDate(-1, 0, 0), - } - _, err := tx.Model(jobQueueBatch).Insert() - if err != nil { - return err - } - } - return nil - } - return jobID, txFn -} - -func allComplete(statuses []int) bool { - if len(statuses) == 0 { - return false - } - for _, s := range statuses { - if s < 2 { - return false - } - - } - return true -} diff --git a/dpc-testing/performance/pkg/dpc/dpc.go b/dpc-testing/performance/pkg/dpc/dpc.go deleted file mode 100644 index 4820e343e6..0000000000 --- a/dpc-testing/performance/pkg/dpc/dpc.go +++ /dev/null @@ -1,136 +0,0 @@ -// Package dpc contains all test methods, the api test runner, and common functionalities -package dpc - -import ( - "encoding/json" - "fmt" - "io/ioutil" - "os" - "strings" - - "github.com/CMSgov/dpc-app/dpc-testing/performance/pkg/dpc/targeter" - luhn "github.com/joeljunstrom/go-luhn" - regen "github.com/zach-klippenstein/goregen" -) - -type Identifier struct { - System string `json:system` - Value string `json:value` -} -type Resource struct { - ID string `json:"id"` - ClientToken []byte `json:"token"` - AccessToken string `json:"access_token"` - Type string `json:"resourceType"` - Identifier []Identifier -} - -// Pull `ids` out of a set of response bodies -func unmarshalIDs(resps [][]byte) []string { - var IDs []string - unmarshal(resps, func(result Resource) { - IDs = append(IDs, result.ID) - }) - return IDs -} - -// Pull `identifier` out of a set of response bodies -func unmarshalIdentifiers(resps [][]byte, system string) []string { - var identifierValue []string - unmarshal(resps, func(result Resource) { - for _, i := range result.Identifier { - if i.System == system { - identifierValue = append(identifierValue, i.Value) - } - } - }) - return identifierValue -} - -// Pull `clientTokens` out of a set of response bodies -func unmarshalClientTokens(resps [][]byte) [][]byte { - var clientTokens [][]byte - unmarshal(resps, func(result Resource) { - clientTokens = append(clientTokens, result.ClientToken) - }) - return clientTokens -} - -// Pull `accessTokens` out of a set of response bodies -func unmarshalAccessTokens(resps [][]byte) []string { - var accessTokens []string - unmarshal(resps, func(result Resource) { - accessTokens = append(accessTokens, result.AccessToken) - }) - return accessTokens -} - -func unmarshal(resps [][]byte, fn func(result Resource)) { - for _, resp := range resps { - var result Resource - var err = json.Unmarshal(resp, &result) - if err != nil { - cleanAndPanic(err) - } - fn(result) - } -} - -const ( - FHIR = "application/fhir+json" - JSON = "application/json" - Plain = "text/plain" - Form = "application/x-www-form-urlencoded" - Unset = "" -) - -func CreateDirs() { - err := os.MkdirAll("keys", os.ModePerm) - if err != nil { - cleanAndPanic(err) - } - - err = os.MkdirAll("tokens", os.ModePerm) - if err != nil { - cleanAndPanic(err) - } -} - -func DeleteDirs() { - err := os.RemoveAll("keys") - if err != nil { - fmt.Println("keys directory could not be deleted", err) - } - - err = os.RemoveAll("tokens") - if err != nil { - fmt.Println("tokens directory could not be deleted", err) - } -} - -func cleanAndPanic(err error) { - DeleteDirs() - panic(err) -} - -func generateNPI() string { - luhnWithPrefix := luhn.GenerateWithPrefix(15, "808403") - return luhnWithPrefix[len(luhnWithPrefix)-10:] -} - -func generateMBI() string { - mbi, err := regen.Generate("^[1-9][ac-hj-km-np-rt-yAC-HJ-KM-NP-RT-Y][ac-hj-km-np-rt-yAC-HJ-KM-NP-RT-Y0-9][0-9][ac-hj-km-np-rt-yAC-HJ-KM-NP-RT-Y][ac-hj-km-np-rt-yAC-HJ-KM-NP-RT-Y0-9][0-9][ac-hj-km-np-rt-yAC-HJ-KM-NP-RT-Y]{2}[0-9]{2}$") - if err != nil { - panic(err) - } - return mbi -} - -func generateMBIFromFile(file string) func() string { - body, err := ioutil.ReadFile(file) - if err != nil { - panic(err) - } - mbis := strings.Split(string(body), ",") - return targeter.GenStrs(mbis) -} diff --git a/dpc-testing/performance/pkg/dpc/generator.go b/dpc-testing/performance/pkg/dpc/generator.go deleted file mode 100644 index a503266190..0000000000 --- a/dpc-testing/performance/pkg/dpc/generator.go +++ /dev/null @@ -1,72 +0,0 @@ -package dpc - -import ( - "bytes" - "crypto/rsa" - "fmt" - "io/ioutil" - "net/url" -) - -func templateBodyGenerator(templateFile string, replacementMap map[string]func() string) func() []byte { - body, err := ioutil.ReadFile(templateFile) - if err != nil { - panic(err) - } - return func() []byte { - output := body - - for k, v := range replacementMap { - keyCount := bytes.Count(body, []byte(k)) - for i := 0; i < keyCount; i++ { - value := v() - output = bytes.Replace(output, []byte(k), []byte(value), i+1) - } - - } - return output - } -} - -func keyBodyGenerator(n int, fn func() (string, *rsa.PrivateKey, string)) func() []byte { - var bodies [][]byte - for i := 0; i < n; i++ { - pubKeyStr, _, signature := fn() - bodies = append(bodies, []byte(fmt.Sprintf(`{ "key": "%s", "signature": "%s"}`, pubKeyStr, signature))) - } - - return byteArrayGenerator(bodies) -} - -func authBodyGenerator(authTokens [][]byte) func() []byte { - var bodies [][]byte - for _, authToken := range authTokens { - bodies = append(bodies, []byte( - url.Values{ - "scope": {"system/*.*"}, - "grant_type": {"client_credentials"}, - "client_assertion_type": {"urn:ietf:params:oauth:client-assertion-type:jwt-bearer"}, - "client_assertion": {string(authToken)}, - }.Encode()), - ) - } - - return byteArrayGenerator(bodies) -} - -func byteArrayGenerator(arrayOfBytes [][]byte) func() []byte { - numOfBytes := len(arrayOfBytes) - if numOfBytes == 0 { - return func() []byte { return []byte{} } - } - i := 0 - return func() []byte { - if i >= numOfBytes { - return []byte{} - } - - bytes := arrayOfBytes[i] - i++ - return bytes - } -} diff --git a/dpc-testing/performance/pkg/dpc/generator_test.go b/dpc-testing/performance/pkg/dpc/generator_test.go deleted file mode 100644 index 67e4c4ea4c..0000000000 --- a/dpc-testing/performance/pkg/dpc/generator_test.go +++ /dev/null @@ -1,18 +0,0 @@ -package dpc - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestTemplateGenerator(t *testing.T) { - actualResult := string(templateBodyGenerator("../../templates/template-generator-test.json", map[string]func() string{"{me}": func() string { return "hello" }})()) - expectedResult := `{"replace": "hellohellohello{ne}"}` - assert.Equal(t, actualResult, expectedResult, "they should be equal") - - actualResult = string(templateBodyGenerator("../../templates/template-generator-test.json", map[string]func() string{"{me}": func() string { return "hello" }, "{ne}": func() string { return "bye" }})()) - expectedResult = `{"replace": "hellohellohellobye"}` - assert.Equal(t, actualResult, expectedResult, "they should be equal") - -} diff --git a/dpc-testing/performance/pkg/dpc/targeter/header.go b/dpc-testing/performance/pkg/dpc/targeter/header.go deleted file mode 100644 index 47bb882740..0000000000 --- a/dpc-testing/performance/pkg/dpc/targeter/header.go +++ /dev/null @@ -1,38 +0,0 @@ -package targeter - -type Headers struct { - ContentType, Accept string - Custom map[string][]string -} - -func genHeaders(config Config) func() map[string][]string { - // Build anonymous struct to store custom header generators - dh := struct { - ContentType, Accept string - Custom map[string]func() string - }{ - ContentType: config.Headers.ContentType, - Accept: config.Headers.Accept, - Custom: make(map[string]func() string), - } - - // Instantiate generator for each custom set of headers - for header, values := range config.Headers.Custom { - dh.Custom[header] = GenStrs(values) - } - - // Each call to generator creates a fresh set of headers - return func() map[string][]string { - headers := make(map[string][]string) - if dh.ContentType != "" { - headers["Content-Type"] = []string{dh.ContentType} - } - if dh.Accept != "" { - headers["Accept"] = []string{dh.Accept} - } - for header, fn := range dh.Custom { - headers[header] = []string{fn()} - } - return headers - } -} diff --git a/dpc-testing/performance/pkg/dpc/targeter/targeter.go b/dpc-testing/performance/pkg/dpc/targeter/targeter.go deleted file mode 100644 index 614df2b1f7..0000000000 --- a/dpc-testing/performance/pkg/dpc/targeter/targeter.go +++ /dev/null @@ -1,131 +0,0 @@ -// Package targeter package is used to create a generic Vegeta Targeter -package targeter - -import ( - "fmt" - "os" - "time" - - vegeta "github.com/tsenart/vegeta/lib" -) - -type Config struct { - Method string // required - BaseURL string // required - Endpoint string // required - AccessToken string // required - - ID string // optional id to use for GET/PUT/DELETE requests; Mutually exclusive with IDs - IDs []string // optional ids to use for GET/PUT/DELETE requests; Mutually exclusive with ID - Generator func() []byte - - Headers *Headers -} - -type Targeter struct { - nextBody func() []byte - nextID func() string - nextHeaders func() map[string][]string - Config -} - -func New(config Config) *Targeter { - // Check for exclusivity for ids and bodies - if config.ID != "" && config.IDs != nil { - panic("Cannot set both `ID` and `IDs` for Targeter") - } - - // If no Headers are passed, default to fhir json types - if config.Headers == nil { - config.Headers = &Headers{ - ContentType: "application/fhir+json", - Accept: "application/fhir+json", - } - } - - return &Targeter{ - nextBody: genBodies(config), - nextID: genIDs(config), - nextHeaders: genHeaders(config), - Config: config, - } -} - -func (dt *Targeter) Run(duration, frequency int) [][]byte { - fmt.Printf("\nRunning performance test on %s...\n", dt.name()) - - d := time.Second * time.Duration(duration) - r := vegeta.Rate{Freq: frequency, Per: time.Second} - - attacker := vegeta.NewAttacker(vegeta.Timeout(60 * time.Second)) - var metrics vegeta.Metrics - var respBodies [][]byte - for results := range attacker.Attack(dt.buildTarget, r, d, fmt.Sprintf("%dps:", r.Freq)) { - metrics.Add(results) - respBodies = append(respBodies, results.Body) - } - metrics.Close() - - reporter := vegeta.NewTextReporter(&metrics) - reporter.Report(os.Stdout) - - return respBodies -} - -func (dt *Targeter) buildTarget(t *vegeta.Target) error { - t.URL = dt.nextURL() - t.Body = dt.nextBody() - t.Method = dt.Method - - t.Header = dt.nextHeaders() - t.Header.Add("Authorization", fmt.Sprintf("Bearer %s", dt.AccessToken)) - - return nil -} - -func (dt *Targeter) nextURL() string { - url := fmt.Sprintf("%s/%s", dt.BaseURL, dt.Endpoint) - if dt.IDs != nil || dt.ID != "" { - url = url + "/" + dt.nextID() - } - return url -} - -// Name generates a human-readable name for a given targeter configuration -func (dt *Targeter) name() string { - var id string - if dt.IDs != nil { - id = "{id}" - } - return fmt.Sprintf("%s %s/%s/%s", dt.Method, dt.BaseURL, dt.Endpoint, id) -} - -// GenStrs general generator function that returns strings -func GenStrs(strs []string) func() string { - i := 0 - n := len(strs) - return func() string { - nextVal := strs[i%n] - i++ - return nextVal - } -} - -// genIDs produces a closure that returns successive ids from the supplied list -func genIDs(config Config) func() string { - // If `ID` is present it has precedence over `IDs` - if config.ID != "" { - return func() string { return config.ID } - } - - return GenStrs(config.IDs) -} - -// genBodies produces a closure that returns successive request bodies from all files matching the pattern -func genBodies(config Config) func() []byte { - if config.Generator == nil { - return func() []byte { return []byte{} } - } - - return config.Generator -} diff --git a/dpc-testing/performance/pkg/dpc/test_group.go b/dpc-testing/performance/pkg/dpc/test_group.go deleted file mode 100644 index ee12584996..0000000000 --- a/dpc-testing/performance/pkg/dpc/test_group.go +++ /dev/null @@ -1,95 +0,0 @@ -package dpc - -import ( - "fmt" - - "github.com/CMSgov/dpc-app/dpc-testing/performance/pkg/dpc/targeter" -) - -func (api *API) RunGroupTests() { - const endpoint = "Group" - - // Create organization (and delete at the end) and setup accesstoken - auth := api.SetUpOrgAuth() - defer api.DeleteOrg(auth.orgID) - - // POST /Practitioner - resps := targeter.New(targeter.Config{ - Method: "POST", - BaseURL: api.URL, - Endpoint: "Practitioner", - AccessToken: auth.accessToken, - Generator: templateBodyGenerator("./templates/practitioner-template.json", map[string]func() string{"{NPI}": generateNPI}), - }).Run(5, 2) - - pracIDs := unmarshalIDs(resps) - - var xProvValues []string - for _, id := range pracIDs { - xProvValues = append(xProvValues, fmt.Sprintf("{ \"resourceType\": \"Provenance\", \"meta\": { \"profile\": [ \"https://dpc.cms.gov/api/v1/StructureDefinition/dpc-profile-attestation\" ] }, \"recorded\": \"1990-01-01T00:00:00.000-05:00\", \"reason\": [ { \"system\": \"http://hl7.org/fhir/v3/ActReason\", \"code\": \"TREAT\" } ], \"agent\": [ { \"role\": [ { \"coding\": [ { \"system\": \"http://hl7.org/fhir/v3/RoleClass\", \"code\": \"AGNT\" } ] } ], \"whoReference\": { \"reference\": \"Organization/%s}}\" }, \"onBehalfOfReference\": { \"reference\": \"Practitioner/%s\" } } ] }", auth.orgID, id)) - } - - npis := unmarshalIdentifiers(resps, "http://hl7.org/fhir/sid/us-npi") - - // POST /Group - resps = targeter.New(targeter.Config{ - Method: "POST", - BaseURL: api.URL, - Endpoint: endpoint, - AccessToken: auth.accessToken, - Headers: &targeter.Headers{ - ContentType: FHIR, - Accept: FHIR, - Custom: map[string][]string{ - "X-Provenance": xProvValues, - }, - }, - Generator: templateBodyGenerator("./templates/group-template.json", map[string]func() string{"{NPI}": targeter.GenStrs(npis)}), - }).Run(5, 2) - - // Retrieve group IDs which are required by the remaining tests - grpIDs := unmarshalIDs(resps) - - // GET /Group - targeter.New(targeter.Config{ - Method: "GET", - BaseURL: api.URL, - Endpoint: endpoint, - AccessToken: auth.accessToken, - }).Run(5, 2) - - // GET /Group/{id} - targeter.New(targeter.Config{ - Method: "GET", - BaseURL: api.URL, - Endpoint: endpoint, - IDs: grpIDs, - AccessToken: auth.accessToken, - }).Run(5, 2) - - // PUT /Group/{id} - targeter.New(targeter.Config{ - Method: "PUT", - BaseURL: api.URL, - Endpoint: endpoint, - Headers: &targeter.Headers{ - ContentType: FHIR, - Accept: FHIR, - Custom: map[string][]string{ - "X-Provenance": xProvValues, - }, - }, - Generator: templateBodyGenerator("./templates/group-template.json", map[string]func() string{"{NPI}": targeter.GenStrs(npis)}), - IDs: grpIDs, - AccessToken: auth.accessToken, - }).Run(5, 2) - - // DELETE /Group/{id} - targeter.New(targeter.Config{ - Method: "DELETE", - BaseURL: api.URL, - Endpoint: endpoint, - AccessToken: auth.accessToken, - IDs: grpIDs, - }).Run(5, 2) -} diff --git a/dpc-testing/performance/pkg/dpc/test_key.go b/dpc-testing/performance/pkg/dpc/test_key.go deleted file mode 100644 index 44e1a0df62..0000000000 --- a/dpc-testing/performance/pkg/dpc/test_key.go +++ /dev/null @@ -1,53 +0,0 @@ -package dpc - -import ( - "github.com/CMSgov/dpc-app/dpc-testing/performance/pkg/dpc/targeter" -) - -func (api *API) RunKeyTests() { - const endpoint = "Key" - // Create organization (and delete at the end) and setup accesstoken - auth := api.SetUpOrgAuth() - defer api.DeleteOrg(auth.orgID) - - // POST /Key - resps := targeter.New(targeter.Config{ - Method: "POST", - BaseURL: api.URL, - Endpoint: endpoint, - AccessToken: auth.accessToken, - Generator: keyBodyGenerator(25, api.GenerateKeyPairAndSignature), - Headers: &targeter.Headers{ContentType: JSON}, - }).Run(5, 5) - - keyIDs := unmarshalIDs(resps) - - // GET /Key - targeter.New(targeter.Config{ - Method: "GET", - BaseURL: api.URL, - Endpoint: endpoint, - AccessToken: auth.accessToken, - Headers: &targeter.Headers{Accept: JSON}, - }).Run(5, 5) - - // GET /Key/{id} - targeter.New(targeter.Config{ - Method: "GET", - BaseURL: api.URL, - Endpoint: endpoint, - AccessToken: auth.accessToken, - Headers: &targeter.Headers{Accept: JSON}, - IDs: keyIDs, - }).Run(5, 5) - - // DELETE /Key/{id} - targeter.New(targeter.Config{ - Method: "DELETE", - BaseURL: api.URL, - Endpoint: endpoint, - AccessToken: auth.accessToken, - Headers: &targeter.Headers{}, - IDs: keyIDs, - }).Run(5, 5) -} diff --git a/dpc-testing/performance/pkg/dpc/test_metadata.go b/dpc-testing/performance/pkg/dpc/test_metadata.go deleted file mode 100644 index a635cf0b3f..0000000000 --- a/dpc-testing/performance/pkg/dpc/test_metadata.go +++ /dev/null @@ -1,15 +0,0 @@ -package dpc - -import ( - "github.com/CMSgov/dpc-app/dpc-testing/performance/pkg/dpc/targeter" -) - -func (api *API) RunMetadataTests() { - endpoint := "metadata" - - targeter.New(targeter.Config{ - Method: "GET", - BaseURL: api.URL, - Endpoint: endpoint, - }).Run(5, 5) -} diff --git a/dpc-testing/performance/pkg/dpc/test_organization.go b/dpc-testing/performance/pkg/dpc/test_organization.go deleted file mode 100644 index a5d5568296..0000000000 --- a/dpc-testing/performance/pkg/dpc/test_organization.go +++ /dev/null @@ -1,50 +0,0 @@ -package dpc - -import ( - "github.com/CMSgov/dpc-app/dpc-testing/performance/pkg/dpc/targeter" -) - -func (api *API) RunOrgTests() { - const endpoint = "Organization" - - // POST - resps := targeter.New(targeter.Config{ - Method: "POST", - BaseURL: api.URL, - Endpoint: endpoint + "/$submit", - AccessToken: string(api.goldenMacaroon), - Generator: templateBodyGenerator("./templates/organization-bundle-template.json", map[string]func() string{"{NPI}": generateNPI}), - }).Run(1, 1) - - orgID := unmarshalIDs(resps)[0] - auth := api.SetUpOrgAuth(orgID) - - // GET - // ids := []string{resource.ID} - targeter.New(targeter.Config{ - Method: "GET", - BaseURL: api.URL, - Endpoint: endpoint, - AccessToken: auth.accessToken, - ID: orgID, - }).Run(5, 2) - - // PUT - targeter.New(targeter.Config{ - Method: "PUT", - BaseURL: api.URL, - Endpoint: endpoint, - ID: orgID, - AccessToken: auth.accessToken, - Generator: templateBodyGenerator("./templates/organization-template.json", map[string]func() string{"{NPI}": generateNPI}), - }).Run(5, 2) - - // DELETE - targeter.New(targeter.Config{ - Method: "DELETE", - BaseURL: api.URL, - Endpoint: endpoint, - AccessToken: string(api.goldenMacaroon), - ID: orgID, - }).Run(1, 1) -} diff --git a/dpc-testing/performance/pkg/dpc/test_patient.go b/dpc-testing/performance/pkg/dpc/test_patient.go deleted file mode 100644 index 10be5ce049..0000000000 --- a/dpc-testing/performance/pkg/dpc/test_patient.go +++ /dev/null @@ -1,62 +0,0 @@ -package dpc - -import ( - "github.com/CMSgov/dpc-app/dpc-testing/performance/pkg/dpc/targeter" -) - -func (api *API) RunPatientTests() { - const endpoint = "Patient" - - // Create organization (and delete at the end) and setup accesstoken - auth := api.SetUpOrgAuth() - defer api.DeleteOrg(auth.orgID) - - // POST /Patient/$validate - targeter.New(targeter.Config{ - Method: "POST", - BaseURL: api.URL, - Endpoint: endpoint + "/$validate", - AccessToken: auth.accessToken, - Generator: templateBodyGenerator("./templates/patient-bundle-template.json", map[string]func() string{"{MBI}": generateMBI}), - }).Run(5, 2) - - // POST /Patient - resps := targeter.New(targeter.Config{ - Method: "POST", - BaseURL: api.URL, - Endpoint: endpoint, - AccessToken: auth.accessToken, - Generator: templateBodyGenerator("./templates/patient-template.json", map[string]func() string{"{MBI}": generateMBI}), - }).Run(5, 2) - - // Retrieve patient IDs which are required by the remaining tests - patientIDs := unmarshalIDs(resps) - - // POST /Patient/$submit - targeter.New(targeter.Config{ - Method: "POST", - BaseURL: api.URL, - Endpoint: endpoint + "/$submit", - AccessToken: auth.accessToken, - Generator: templateBodyGenerator("./templates/patient-bundle-template.json", map[string]func() string{"{MBI}": generateMBI}), - }).Run(5, 2) - - // PUT /Patient/{id} - targeter.New(targeter.Config{ - Method: "PUT", - BaseURL: api.URL, - Endpoint: endpoint, - AccessToken: auth.accessToken, - IDs: patientIDs, - Generator: byteArrayGenerator(resps), - }).Run(5, 2) - - // DELETE /Patient/{id} - targeter.New(targeter.Config{ - Method: "DELETE", - BaseURL: api.URL, - Endpoint: endpoint, - AccessToken: auth.accessToken, - IDs: patientIDs, - }).Run(5, 2) -} diff --git a/dpc-testing/performance/pkg/dpc/test_practitioner.go b/dpc-testing/performance/pkg/dpc/test_practitioner.go deleted file mode 100644 index f71d50a908..0000000000 --- a/dpc-testing/performance/pkg/dpc/test_practitioner.go +++ /dev/null @@ -1,62 +0,0 @@ -package dpc - -import ( - "github.com/CMSgov/dpc-app/dpc-testing/performance/pkg/dpc/targeter" -) - -func (api *API) RunPractitionerTests() { - const endpoint = "Practitioner" - - // Create organization (and delete at the end) and setup accesstoken - auth := api.SetUpOrgAuth() - defer api.DeleteOrg(auth.orgID) - - // POST /Practitioner/$validate - targeter.New(targeter.Config{ - Method: "POST", - BaseURL: api.URL, - Endpoint: endpoint + "/$validate", - AccessToken: auth.accessToken, - Generator: templateBodyGenerator("./templates/practitioner-bundle-template.json", map[string]func() string{"{NPI}": generateNPI}), - }).Run(5, 2) - - // POST /Practitioner - resps := targeter.New(targeter.Config{ - Method: "POST", - BaseURL: api.URL, - Endpoint: endpoint, - AccessToken: auth.accessToken, - Generator: templateBodyGenerator("./templates/practitioner-template.json", map[string]func() string{"{NPI}": generateNPI}), - }).Run(5, 2) - - // Retrieve practitioner IDs which are required by the remaining tests - pracIDs := unmarshalIDs(resps) - - // POST /Practitioner/$submit - targeter.New(targeter.Config{ - Method: "POST", - BaseURL: api.URL, - Endpoint: endpoint + "/$submit", - AccessToken: auth.accessToken, - Generator: templateBodyGenerator("./templates/practitioner-bundle-template.json", map[string]func() string{"{NPI}": generateNPI}), - }).Run(5, 2) - - // PUT /Practitioner/{id} - targeter.New(targeter.Config{ - Method: "PUT", - BaseURL: api.URL, - Endpoint: endpoint, - AccessToken: auth.accessToken, - IDs: pracIDs, - Generator: templateBodyGenerator("./templates/practitioner-template.json", map[string]func() string{"{NPI}": generateNPI}), - }).Run(5, 2) - - // DELETE /Practitioner/{id} - targeter.New(targeter.Config{ - Method: "DELETE", - BaseURL: api.URL, - Endpoint: endpoint, - AccessToken: auth.accessToken, - IDs: pracIDs, - }).Run(5, 2) -} diff --git a/dpc-testing/performance/pkg/dpc/test_token.go b/dpc-testing/performance/pkg/dpc/test_token.go deleted file mode 100644 index f5e1fdcd9d..0000000000 --- a/dpc-testing/performance/pkg/dpc/test_token.go +++ /dev/null @@ -1,76 +0,0 @@ -package dpc - -import ( - "github.com/CMSgov/dpc-app/dpc-testing/performance/pkg/dpc/targeter" - dpcclient "github.com/CMSgov/dpc-app/dpcclient/lib" -) - -func (api *API) RunTokenTests() { - const endpoint = "Token" - - // Create organization (and delete at the end) and setup accesstoken - auth := api.SetUpOrgAuth() - defer api.DeleteOrg(auth.orgID) - - // POST /Token - resps := targeter.New(targeter.Config{ - Method: "POST", - BaseURL: api.URL, - Endpoint: endpoint, - AccessToken: auth.accessToken, - Generator: keyBodyGenerator(25, api.GenerateKeyPairAndSignature), - Headers: &targeter.Headers{ContentType: JSON}, - }).Run(5, 5) - - clientTokens := unmarshalClientTokens(resps) - clientTokenIDs := unmarshalIDs(resps) - - // Generate an auth token for each client token - var authTokens [][]byte - for _, ct := range clientTokens { - authToken, err := dpcclient.GenerateAuthToken(auth.privateKey, auth.keyID, ct, api.URL) - if err != nil { - cleanAndPanic(err) - } - authTokens = append(authTokens, authToken) - } - - // POST /Token/validate - targeter.New(targeter.Config{ - Method: "POST", - BaseURL: api.URL, - Endpoint: endpoint + "/validate", - Generator: byteArrayGenerator(authTokens), - Headers: &targeter.Headers{ContentType: Plain}, - }).Run(5, 5) - - // POST /Token/auth - resps = targeter.New(targeter.Config{ - Method: "POST", - BaseURL: api.URL, - Endpoint: endpoint + "/auth", - Generator: authBodyGenerator(authTokens), - Headers: &targeter.Headers{ContentType: Form}, - }).Run(5, 5) - - accessTokens := unmarshalAccessTokens(resps) - - // GET /Token - targeter.New(targeter.Config{ - Method: "GET", - BaseURL: api.URL, - Endpoint: endpoint, - AccessToken: accessTokens[0], // Targeter cannot iterate over a set of tokens; just use the first - Headers: &targeter.Headers{Accept: JSON}, - }).Run(5, 5) - - // DELETE /Token/{id} - targeter.New(targeter.Config{ - Method: "DELETE", - BaseURL: api.URL, - Endpoint: endpoint, - AccessToken: auth.accessToken, - IDs: clientTokenIDs, - Headers: &targeter.Headers{}, - }).Run(5, 5) -} diff --git a/dpc-testing/performance/templates/group-template.json b/dpc-testing/performance/templates/group-template.json deleted file mode 100644 index 9000d60a0f..0000000000 --- a/dpc-testing/performance/templates/group-template.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "resourceType": "Group", - "type": "person", - "actual": true, - "active": true, - "characteristic": [ - { - "code": { - "coding": [ - { - "code": "attributed-to" - } - ] - }, - "valueCodeableConcept": { - "coding": [ - { - "system": "http://hl7.org/fhir/sid/us-npi", - "code": "{NPI}" - } - ] - } - } - ], - "member": [] - } \ No newline at end of file diff --git a/dpc-testing/performance/templates/organization-bundle-template.json b/dpc-testing/performance/templates/organization-bundle-template.json deleted file mode 100644 index 9354327583..0000000000 --- a/dpc-testing/performance/templates/organization-bundle-template.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "resourceType": "Parameters", - "parameter": [ - { - "name": "resource", - "resource": { - "resourceType": "Bundle", - "type": "collection", - "entry": [ - { - "resource": { - "address": [ - { - "use": "work", - "type": "both", - "line": [ - "555 Test Address" - ], - "city": "Washington", - "state": "DC", - "postalCode": "20008", - "country": "US" - } - ], - "identifier": [ - { - "system": "http://hl7.org/fhir/sid/us-npi", - "value": "{NPI}" - } - ], - "resourceType": "Organization", - "name": "Template Provider Organization", - "contact": [ - { - "name": { - "use": "usual", - "family": "Contact", - "given": ["Test"] - }, - "address": { - "use": "work", - "type": "both", - "line": [ - "555 Test Address" - ], - "city": "Washington", - "state": "DC", - "postalCode": "20008" - }, - "telecom": [ - { - "system": "phone", - "use": "work", - "value": "555-555-5555" - }, - { - "system": "email", - "use": "work", - "value": "contact@organization.test" - } - ] - } - ] - }, - "request": { - "method": "POST", - "url": "Group" - } - }, - { - "resource": { - "resourceType": "Endpoint", - "status": "test", - "connectionType": { - "system": "http://terminology.hl7.org/CodeSystem/endpoint-connection-type", - "code": "hl7-fhir-rest" - }, - "name": "Test Organization Endpoint", - "address": "http://test-address.nope" - }, - "request": { - "method": "POST", - "url": "Endpoint" - } - } - ] - } - } - ] -} \ No newline at end of file diff --git a/dpc-testing/performance/templates/organization-template.json b/dpc-testing/performance/templates/organization-template.json deleted file mode 100644 index 8d416ceb2a..0000000000 --- a/dpc-testing/performance/templates/organization-template.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "resourceType": "Organization", - "identifier": [ - { - "system": "http://hl7.org/fhir/sid/us-npi", - "value": "{NPI}" - } - ], - "name": "Template Provider Organization", - "address": [{ - "use": "work", - "type": "both", - "line": [ - "556 Test Address" - ], - "city": "Washington", - "state": "DC", - "postalCode": "20008", - "country": "US" - }], - "contact": [ - { - "name": { - "use": "usual", - "family": "Contact", - "given": ["Test"] - }, - "address": { - "use": "work", - "type": "both", - "line": [ - "555 Test Address" - ], - "city": "Washington", - "state": "DC", - "postalCode": "20008" - }, - "telecom": [ - { - "system": "phone", - "use": "work", - "value": "555-555-5555" - }, - { - "system": "email", - "use": "work", - "value": "contact@organization.test" - } - ] - } - ], - "endpoint": [ - { - "reference": "Endpoint/test-endpoint" - } - ] -} diff --git a/dpc-testing/performance/templates/patient-bundle-template.json b/dpc-testing/performance/templates/patient-bundle-template.json deleted file mode 100644 index d208e86efc..0000000000 --- a/dpc-testing/performance/templates/patient-bundle-template.json +++ /dev/null @@ -1,232 +0,0 @@ -{ - "resourceType": "Parameters", - "parameter": [ - { - "name": "resource", - "resource": { - "resourceType": "Bundle", - "id": "synthetic-roster-bundle", - "type": "collection", - "entry": [ - { - "resource": { - "resourceType": "Patient", - "text": { - "status": "generated", - "div": "
Generated by Synthea.Version identifier: v2.2.0-56-g113d8a2d\n . Person seed: 7108745800759676732 Population seed: 1
" - }, - "extension": [ - { - "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race", - "extension": [ - { - "url": "ombCategory", - "valueCoding": { - "system": "urn:oid:2.16.840.1.113883.6.238", - "code": "2106-3", - "display": "White" - } - }, - { - "url": "text", - "valueString": "White" - } - ] - }, - { - "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity", - "extension": [ - { - "url": "ombCategory", - "valueCoding": { - "system": "urn:oid:2.16.840.1.113883.6.238", - "code": "2186-5", - "display": "Not Hispanic or Latino" - } - }, - { - "url": "text", - "valueString": "Not Hispanic or Latino" - } - ] - }, - { - "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName", - "valueString": "Nilda678 Kautzer186" - }, - { - "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex", - "valueCode": "F" - }, - { - "url": "http://hl7.org/fhir/StructureDefinition/birthPlace", - "valueAddress": { - "city": "Springfield", - "state": "Massachusetts", - "country": "US" - } - }, - { - "url": "http://synthetichealth.github.io/synthea/disability-adjusted-life-years", - "valueDecimal": 0.08075570338346447 - }, - { - "url": "http://synthetichealth.github.io/synthea/quality-adjusted-life-years", - "valueDecimal": 37.91924429661653 - } - ], - "identifier": [ - { - "system": "https://github.com/synthetichealth/synthea", - "value": "040fcbbf-4065-4d97-9d0c-831dad1f8d0a" - }, - { - "type": { - "coding": [ - { - "system": "http://hl7.org/fhir/v2/0203", - "code": "MR", - "display": "Medical Record Number" - } - ], - "text": "Medical Record Number" - }, - "system": "http://hospital.smarthealthit.org", - "value": "040fcbbf-4065-4d97-9d0c-831dad1f8d0a" - }, - { - "type": { - "coding": [ - { - "system": "http://hl7.org/fhir/identifier-type", - "code": "SB", - "display": "Social Security Number" - } - ], - "text": "Social Security Number" - }, - "system": "http://hl7.org/fhir/sid/us-ssn", - "value": "999-44-2356" - }, - { - "type": { - "coding": [ - { - "system": "http://hl7.org/fhir/v2/0203", - "code": "DL", - "display": "Driver's License" - } - ], - "text": "Driver's License" - }, - "system": "urn:oid:2.16.840.1.113883.4.3.25", - "value": "S99984014" - }, - { - "type": { - "coding": [ - { - "system": "http://hl7.org/fhir/v2/0203", - "code": "PPN", - "display": "Passport Number" - } - ], - "text": "Passport Number" - }, - "system": "http://standardhealthrecord.org/fhir/StructureDefinition/passportNumber", - "value": "X81537674X" - }, - { - "system": "http://hl7.org/fhir/sid/us-mbi", - "value": "{MBI}" - } - ], - "name": [ - { - "use": "official", - "family": "Bauch723", - "given": [ - "Hyacinth68" - ], - "prefix": [ - "Mrs." - ] - }, - { - "use": "maiden", - "family": "Pfannerstill264", - "given": [ - "Hyacinth68" - ], - "prefix": [ - "Mrs." - ] - } - ], - "telecom": [ - { - "system": "phone", - "value": "555-891-6942", - "use": "home" - } - ], - "gender": "female", - "birthDate": "1980-07-06", - "address": [ - { - "extension": [ - { - "url": "http://hl7.org/fhir/StructureDefinition/geolocation", - "extension": [ - { - "url": "latitude", - "valueDecimal": 42.851293 - }, - { - "url": "longitude", - "valueDecimal": -70.95581 - } - ] - } - ], - "line": [ - "893 VonRueden Mission" - ], - "city": "Amesbury Town", - "state": "Massachusetts", - "postalCode": "01913", - "country": "US" - } - ], - "maritalStatus": { - "coding": [ - { - "system": "http://hl7.org/fhir/v3/MaritalStatus", - "code": "M", - "display": "M" - } - ], - "text": "M" - }, - "multipleBirthBoolean": false, - "communication": [ - { - "language": { - "coding": [ - { - "system": "urn:ietf:bcp:47", - "code": "en-US", - "display": "English" - } - ], - "text": "English" - } - } - ] - } - } - ] - } - } - ] - } \ No newline at end of file diff --git a/dpc-testing/performance/templates/patient-template.json b/dpc-testing/performance/templates/patient-template.json deleted file mode 100644 index 96f70c01fa..0000000000 --- a/dpc-testing/performance/templates/patient-template.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "resourceType": "Patient", - "text": { - "status": "generated", - "div": "
Generated by Synthea.Version identifier: v2.2.0-56-g113d8a2d\n . Person seed: 7108745800759676732 Population seed: 1
" - }, - "extension": [ - { - "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race", - "extension": [ - { - "url": "ombCategory", - "valueCoding": { - "system": "urn:oid:2.16.840.1.113883.6.238", - "code": "2106-3", - "display": "White" - } - }, - { - "url": "text", - "valueString": "White" - } - ] - }, - { - "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity", - "extension": [ - { - "url": "ombCategory", - "valueCoding": { - "system": "urn:oid:2.16.840.1.113883.6.238", - "code": "2186-5", - "display": "Not Hispanic or Latino" - } - }, - { - "url": "text", - "valueString": "Not Hispanic or Latino" - } - ] - }, - { - "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName", - "valueString": "Nilda678 Kautzer186" - }, - { - "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex", - "valueCode": "F" - }, - { - "url": "http://hl7.org/fhir/StructureDefinition/birthPlace", - "valueAddress": { - "city": "Springfield", - "state": "Massachusetts", - "country": "US" - } - }, - { - "url": "http://synthetichealth.github.io/synthea/disability-adjusted-life-years", - "valueDecimal": 0.08075570338346447 - }, - { - "url": "http://synthetichealth.github.io/synthea/quality-adjusted-life-years", - "valueDecimal": 37.91924429661653 - } - ], - "identifier": [ - { - "system": "https://github.com/synthetichealth/synthea", - "value": "040fcbbf-4065-4d97-9d0c-831dad1f8d0a" - }, - { - "type": { - "coding": [ - { - "system": "http://hl7.org/fhir/v2/0203", - "code": "MR", - "display": "Medical Record Number" - } - ], - "text": "Medical Record Number" - }, - "system": "http://hospital.smarthealthit.org", - "value": "040fcbbf-4065-4d97-9d0c-831dad1f8d0a" - }, - { - "type": { - "coding": [ - { - "system": "http://hl7.org/fhir/identifier-type", - "code": "SB", - "display": "Social Security Number" - } - ], - "text": "Social Security Number" - }, - "system": "http://hl7.org/fhir/sid/us-ssn", - "value": "999-44-2356" - }, - { - "type": { - "coding": [ - { - "system": "http://hl7.org/fhir/v2/0203", - "code": "DL", - "display": "Driver's License" - } - ], - "text": "Driver's License" - }, - "system": "urn:oid:2.16.840.1.113883.4.3.25", - "value": "S99984014" - }, - { - "type": { - "coding": [ - { - "system": "http://hl7.org/fhir/v2/0203", - "code": "PPN", - "display": "Passport Number" - } - ], - "text": "Passport Number" - }, - "system": "http://standardhealthrecord.org/fhir/StructureDefinition/passportNumber", - "value": "X81537674X" - }, - { - "system": "http://hl7.org/fhir/sid/us-mbi", - "value": "{MBI}" - } - ], - "name": [ - { - "use": "official", - "family": "Bauch723", - "given": [ - "Hyacinth68" - ], - "prefix": [ - "Mrs." - ] - }, - { - "use": "maiden", - "family": "Pfannerstill264", - "given": [ - "Hyacinth68" - ], - "prefix": [ - "Mrs." - ] - } - ], - "telecom": [ - { - "system": "phone", - "value": "555-891-6942", - "use": "home" - } - ], - "gender": "female", - "birthDate": "1980-07-06", - "address": [ - { - "extension": [ - { - "url": "http://hl7.org/fhir/StructureDefinition/geolocation", - "extension": [ - { - "url": "latitude", - "valueDecimal": 42.851293 - }, - { - "url": "longitude", - "valueDecimal": -70.95581 - } - ] - } - ], - "line": [ - "893 VonRueden Mission" - ], - "city": "Amesbury Town", - "state": "Massachusetts", - "postalCode": "01913", - "country": "US" - } - ], - "maritalStatus": { - "coding": [ - { - "system": "http://hl7.org/fhir/v3/MaritalStatus", - "code": "M", - "display": "M" - } - ], - "text": "M" - }, - "multipleBirthBoolean": false, - "communication": [ - { - "language": { - "coding": [ - { - "system": "urn:ietf:bcp:47", - "code": "en-US", - "display": "English" - } - ], - "text": "English" - } - } - ] -} \ No newline at end of file diff --git a/dpc-testing/performance/templates/practitioner-bundle-template.json b/dpc-testing/performance/templates/practitioner-bundle-template.json deleted file mode 100644 index 084182d839..0000000000 --- a/dpc-testing/performance/templates/practitioner-bundle-template.json +++ /dev/null @@ -1,171 +0,0 @@ -{ - "resourceType": "Parameters", - "parameter": [ - { - "name": "resource", - "resource": { - "entry": [ - { - "resource": { - "active": true, - "address": [ - { - "city": "PLYMOUTH", - "country": "US", - "line": [ - "275 SANDWICH STREET" - ], - "postalCode": "02360", - "state": "MA" - } - ], - "gender": "male", - "identifier": [ - { - "system": "http://hl7.org/fhir/sid/us-npi", - "value": "{NPI}" - } - ], - "name": [ - { - "family": "Klocko335", - "given": [ - "Leonard963" - ], - "prefix": [ - "Dr." - ] - } - ], - "resourceType": "Practitioner" - }, - "search": { - "mode": "match" - } - }, - { - "resource": { - "active": true, - "address": [ - { - "city": "NORWOOD", - "country": "US", - "line": [ - "800 WASHINGTON STREET" - ], - "postalCode": "02062", - "state": "MA" - } - ], - "gender": "female", - "identifier": [ - { - "system": "http://hl7.org/fhir/sid/us-npi", - "value": "{NPI}" - } - ], - "name": [ - { - "family": "Stanton715", - "given": [ - "Renata373" - ], - "prefix": [ - "Dr." - ] - } - ], - "resourceType": "Practitioner" - }, - "search": { - "mode": "match" - } - }, - { - "resource": { - "active": true, - "address": [ - { - "use": "work", - "type": "both", - "city": "CAMBRIDGE", - "country": "US", - "line": [ - "330 MOUNT AUBURN STREET" - ], - "postalCode": "02138", - "state": "MA" - } - ], - "gender": "female", - "identifier": [ - { - "system": "http://hl7.org/fhir/sid/us-npi", - "value": "{NPI}" - } - ], - "name": [ - { - "family": "Hoppe518", - "given": [ - "Novella551" - ], - "prefix": [ - "Dr." - ] - } - ], - "resourceType": "Practitioner" - }, - "search": { - "mode": "match" - } - }, - { - "resource": { - "active": true, - "address": [ - { - "use": "work", - "type": "both", - "city": "WORCESTER", - "country": "US", - "line": [ - "107 LINCOLN STREET" - ], - "postalCode": "01605", - "state": "MA" - } - ], - "gender": "male", - "identifier": [ - { - "system": "http://hl7.org/fhir/sid/us-npi", - "value": "{NPI}" - } - ], - "name": [ - { - "family": "Holguín308", - "given": [ - "Alejandro916" - ], - "prefix": [ - "Dr." - ] - } - ], - "resourceType": "Practitioner" - }, - "search": { - "mode": "match" - } - } - ], - "resourceType": "Bundle", - "total": 4, - "type": "searchset" - } - } - ] -} \ No newline at end of file diff --git a/dpc-testing/performance/templates/practitioner-template.json b/dpc-testing/performance/templates/practitioner-template.json deleted file mode 100644 index 97f136a26a..0000000000 --- a/dpc-testing/performance/templates/practitioner-template.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "active": true, - "address": [ - { - "city": "PLYMOUTH", - "country": "US", - "line": [ - "275 SANDWICH STREET" - ], - "postalCode": "02360", - "state": "MA" - } - ], - "gender": "male", - "identifier": [ - { - "system": "http://hl7.org/fhir/sid/us-npi", - "value": "{NPI}" - } - ], - "name": [ - { - "family": "Klocko335", - "given": [ - "Leonard963" - ], - "prefix": [ - "Dr." - ] - } - ], - "resourceType": "Practitioner" -} \ No newline at end of file diff --git a/dpc-testing/performance/templates/template-generator-test.json b/dpc-testing/performance/templates/template-generator-test.json deleted file mode 100644 index 1ae3f7b5ce..0000000000 --- a/dpc-testing/performance/templates/template-generator-test.json +++ /dev/null @@ -1 +0,0 @@ -{"replace": "{me}{me}{me}{ne}"} \ No newline at end of file diff --git a/dpcclient/README.md b/dpcclient/README.md deleted file mode 100644 index 852fe7b78f..0000000000 --- a/dpcclient/README.md +++ /dev/null @@ -1,153 +0,0 @@ -# DPC Client - -dpcclient is an executable Go command line program that helps you explore the Data at the Point of Care API before writing your own code. It follows the guidelines described in the [DPC Documentation](https://dpc.cms.gov/docs). - -This project contains executable files for Macs and Windows 10 machines. If you have go 1.11 or better installed, you can also build the code yourself with the following commands. *Note*: In Go 1.11 and 1.12, first ensure that the environment variable `GO111MODULE` is set to `on`. You can do this by running `go env -w GO111MODULE=on`. - -``` -go get -u github.com/gbrlsnchs/jwt/v3 -go build -``` - -To build a Windows executable: - -``` -env GOOS=windows GOARCH=amd64 go build -``` - -The remainder of this document focuses on using the tool. - -# Using DPC Client - -While describing dpcclient commands below, we will refer to sections of that documentation. The code itself also cites the documentation it is following. - -For convenience, the steps required for engaging with the open sandbox are as follows: - -1. Complete [this form](https://dpc.cms.gov/users/sign_up) to request access. After you receive a reply email welcoming you to DPC, continue with the following steps. -1. Log in to the web UI -1. You should see two things you can do: generate client tokens and upload public keys. If you do not see these options, an admin needs to complete setup on your account. -1. Generate a client token - 1. Copy and paste the screen display of the token into a file to save it - 1. You will not be able to see it again via the DPC UI, and the DPC team cannot recover it - 1. If you lose a client token, the only recovery is to generate a new one - 1. If you lose a client token, you should ask the DPC team to revoke that token -1. Upload a public key - 1. dpcclient can generate the public key you will need; see the `genKey` command - 1. Note the ID assigned to your public key; you will need it to get access tokens -1. To make an API request, you need an access token. To get an access token, you first need to generate an auth token. - 1. Documentation: [Authentication and Authorization](https://dpc.cms.gov/docs#authentication-and-authorization) - 1. dpcclient can generate the signed JWT you need; see the `genAuthToken` command -1. Make a request to the `/Token/auth` endpoint containing a correctly formed JWT, receiving an **access token** in response - 1. An **access token** expires after 5 minutes, so an application (or you whilst exploring the API) will need to repeat this step every 5 minutes - 1. For each request to the `/Token/auth` endpoint, you will also need to generate a new auth token as described in the previous step - 1. dpcclient can do this for you; see the `genAccessToken` command -1. Make a request to an application endpoint, using the access token generated in the previous step as a `Bearer` token. - 1. dpcclient does not make API endpoint requests (yet), so these have to be done with cURL, Postman, or a similar tool. - - # Commands - -The general form of a dpcclient command is - -`dpcclient [command] [args] [flags]`. - -The command name is required. Commands that produce artifacts require a name for the artifact. (Yes, all current dpcclient commands produce artifacts.) Commands append additional information to the name you provide to produce the final name for their artifact. Each command describes how it uses the name you provide in the final name for the artifact it produces. - -Help will always be given to those who ask for it like so: `dpcclient --help` or `dpcclient -h`. Help for a specific command is also available: `dpcclient genAuthToken -h`. - -The following flags are global to dpcclient; all dpcclient commands understand them: - -Flag | Use --------------- | ---- --k, --keydir | the local directory where dpcclient stores keys it generates and looks for macaroons --t, --tokendir | the local directory where dpcclient stores both auth and access tokens it generates -  | _Note that if values for keydir or tokendir are not specified, dpcclient will store and look for files in the current directory._
_In addition, you can use a .dpcclient.yaml in your home directory to set the keydir and tokendir values._ - -Some dpcclient commands have additional flags, as follows: - -Flag | Use --------------- | ---- --K, --keyname | the PKI key name prefix provided by the user. dpcclient combines `-private.pem` with the key prefix for the private key file it generates, and `-public.pem` with the key prefix for the public key file it generates. --I, --kid | the ID DPC assigned to the public key you uploaded to it --M, --macaroon | the name of a file containing the DPC **client token** (macaroon). dpcclient assumes the macaroon file is in the keydir. If it can't find it there, it will look in the current directory. If it can't find it there, it will complain and exit. - -Command documentation is provided below. The help message provided by the executable should always be considered current if it happens to conflict with this documentation. - -Command | Example -------- | ------- -genKey | `dpcclient genKey myDPCSandboxKey -k ./keys`

Generates a correctly-sized RSA private key and its public key mate, saving them as .pem files in the indicated directory. Files are named by appending `-private.pem` or `-public.pem` to the name argument. For the example command, dpcclient would generate files named `myDPCSandboxKey-private.pem` and `myDPCSandboxKey-public.pem` in a directory named 'keys'. -genAuthToken | `dpcclient genAuthToken myDPCSandboxAuthToken -k ./keys -K myDPCSandboxKey -I -M myDPCSandboxMacaroon -t ./tokens`

Generates a signed JWT required to obtain an **access token**, saving it in the tokens directory. The file is named by appending `-.jwt` to the name argument. The auth token file resulting from the example command would be named `myDPCAuthToken-1577976362.jwt` Unix timestamps are discussed [here](https://www.unixtimestamp.com). -getAccessToken | `dpcclient getAccessToken myDPCSandboxAccessToken -t ./tokens -A myDPCSandboxAuthToken-1577976362`

Sends a request to the DPC API /Token endpoint, receiving an access token in response. If the API responds with a 200, dpcclient will save the access token to a file named by the -T argument with `-.jwt` appended to it. If an error occurs, dpcclient will echo the error message to the terminal before exiting. - -# All the Things - -To illustrate the use of dpcclient, we include this walkthrough of the author using it. - -Build executable: - -``` -go build -``` - -Make output directories: - -``` -mkdir out/keys -mkdir out/tokens -``` - -Create a .dpcclient.yaml file in my home directory: - -``` -touch ~/.dpcclient.yaml -``` - -Add these lines to it: - -``` -keydir: ./out/keys -tokendir: ./out/tokens -``` - -Generate a key pair: - -``` -dpcclient genKey happySandbox -ls -l ./out/keys -``` - -Upload the public key in the web UI, noting the ID assigned to it. -Get a client token from the web UI. -Save the client token (macaroon) in the ./out/keys directory - -Generate an auth token and see it in the location I specified in the config file: - -``` -dpcclient genAuthToken happySandboxAuthToken -K happySandbox -I b3f7d972-9a91-432c-95b3-fabd085a2280 -M happySandboxMacaroon -ls -l ./out/tokens -``` - -Generate an access token and see it in the location I specified in the config file: - -``` -dpcclient getAccessToken happySandboxAccessToken -A happySandboxAuthToken-1585516859 -ls -l ./out/tokens -``` - - -Use the access token in a cURL request to the API: -``` -curl --location --request GET 'http://sandbox.dpc.cms.gov/api/v1/Group' \ ---header 'Accept: application/fhir+json' \ ---header 'Prefer: respond-async' \ ---header 'Authorization: Bearer ' -``` - -Expected response: - -``` -{ - "resourceType": "Bundle", - "type": "searchset", - "total": 0 -} -``` diff --git a/dpcclient/cmd/genAuthToken.go b/dpcclient/cmd/genAuthToken.go deleted file mode 100644 index 2fe456d106..0000000000 --- a/dpcclient/cmd/genAuthToken.go +++ /dev/null @@ -1,88 +0,0 @@ -package cmd - -import ( - "fmt" - "os" - "path/filepath" - "time" - - "github.com/CMSgov/dpc-app/dpcclient/lib" - "github.com/spf13/cobra" -) - -var ( - kid string - keyName string - macaroon string -) - -var genAuthTokenCmd = &cobra.Command{ - Use: "genAuthToken name -K -I -M [-k -t]", - Short: "Generate an auth token for DPC API", - Long: `This command generates a signed JWT token required to get an access_token -for the DPC API. The command requires a name prefix argument, which it uses to name -the file in which it stores the generated token. dpcclient appends a numeric unix -timestamp and the '.jwt' extension to the name argument. If you supply the -t or ---tokendir flag, it puts the file in that directory; otherwise, it puts the file -in the working directory. The command also requires three flags (described below) -that tell it the names and locations of keys. - -For example, - -dpcclient genAuthToken myDPCAuthToken -t ./tokens -k ./keys -K myDPCSandboxKey -I -M myDPCSandboxMacaroon - -creates a file named something similar to 'myDPCAuthToken-1577976362.jwt'' in the 'tokens' -directory.`, - Run: func(cmd *cobra.Command, args []string) { - tokenPath := filepath.Join(tokenDir, fmt.Sprintf("%s-%d", args[0], time.Now().Unix())) - - pk, err := lib.ReadSmallFile(filepath.Join(keyDir, fmt.Sprintf("%s-private.pem", keyName))) - if err != nil { - fmt.Println(err) - os.Exit(-1) - } - - privateKey, _, err := lib.KeyFromPEM(pk) - if err != nil { - fmt.Println(err) - os.Exit(-1) - } - - m, err := lib.ReadSmallFile(filepath.Join(keyDir, macaroon)) - if err != nil { - fmt.Println(err) - os.Exit(-1) - } - ml := len(m) - 1 - if m[ml] == '\n' { - m = m[:ml] - } - - token, err := lib.GenerateAuthToken(privateKey, kid, []byte(m), baseURL) - if err != nil { - fmt.Println(err) - os.Exit(-1) - } - fmt.Printf("\nAuth Token:\n%s\n", string(token)) - if err := lib.WriteSmallFile(tokenPath, []byte(token)); err != nil { - fmt.Printf("could not save auth token to file at %s; %s", tokenPath, err.Error()) - } - }, -} - -func markRequiredOrFail(key string, cmd *cobra.Command) { - if err := cobra.MarkFlagRequired(cmd.Flags(), key); err != nil { - fmt.Println("can't mark flag required? %s", err) - } -} - -func init() { - rootCmd.AddCommand(genAuthTokenCmd) - genAuthTokenCmd.Flags().StringVarP(&keyName, "keyName", "K", "", "the name prefix of the PKI keys") - genAuthTokenCmd.Flags().StringVarP(&kid, "keyId", "I", "", "the DPC key ID of the PKI keys") - genAuthTokenCmd.Flags().StringVarP(&macaroon, "macaroon", "M", "", "the name of a file containing a DPC client-token (macaroon)") - - markRequiredOrFail("keyName", genAuthTokenCmd) - markRequiredOrFail("keyId", genAuthTokenCmd) - markRequiredOrFail("macaroon", genAuthTokenCmd) -} diff --git a/dpcclient/cmd/genKey.go b/dpcclient/cmd/genKey.go deleted file mode 100644 index 2b73e030ec..0000000000 --- a/dpcclient/cmd/genKey.go +++ /dev/null @@ -1,37 +0,0 @@ -package cmd - -import ( - "fmt" - "path/filepath" - - "github.com/CMSgov/dpc-app/dpcclient/lib" - "github.com/spf13/cobra" -) - -var genKeyCmd = &cobra.Command{ - Use: "genKey name [flags]", - Args: cobra.ExactArgs(1), - Short: "Generate a private/public RSA key pair", - Long: `This command generates the RSA PKI key pair needed for the DPC API. -The command requires a name prefix, which it uses to name the files in which -it stores the generated keys. If you supply a -k or --keydir flag, it puts files -in that directory; otherwise, it puts them in the working directory. For example, - -dpcclient genKey myDPCKey -k keys - -creates two files, myDPCKey-private.pem and myDPC-public.pem, in the 'keys' -directory.`, - Run: func(cmd *cobra.Command, args []string) { - private, public, err := lib.GenRSAKeyPair() - if err != nil { - fmt.Println("Unable to generate key pair ", err) - } - if err := lib.SaveDPCKeyPair(filepath.Join(keyDir, args[0]), private, public); err != nil { - fmt.Println("Bad things happened to good keys ", err) - } - }, -} - -func init() { - rootCmd.AddCommand(genKeyCmd) -} diff --git a/dpcclient/cmd/getAccessToken.go b/dpcclient/cmd/getAccessToken.go deleted file mode 100644 index 8fdeeceda1..0000000000 --- a/dpcclient/cmd/getAccessToken.go +++ /dev/null @@ -1,59 +0,0 @@ -package cmd - -import ( - "fmt" - "os" - "path/filepath" - "time" - - "github.com/CMSgov/dpc-app/dpcclient/lib" - "github.com/spf13/cobra" -) - -var authTokenPath string - -// getAccessTokenCmd represents the getAccessToken command -var getAccessTokenCmd = &cobra.Command{ - Use: "getAccessToken prefix -A authToken [-t directory]", - Short: "Get a DPC API access token", - Long: `This command GETs an access token for the DPC API. The command requires a -prefix argument, which it uses to name the file in which it stores the generated token. -dpcclient appends a numeric unix timestamp to form the file name. -If you supply the -t or --tokendir flag, it puts the file in that directory; otherwise, it -puts the file in the working directory. The command also requires the -A or --authToken flag, which -has the full file path to a previously generated auth token. - -For example, - -dpcclient getAccessToken dpcSandboxAccessToken -t ./tokens -A dpcSandboxAuthToken-1577976362 - -creates a file named something similar to 'dpcSandboxAccessToken-1577976362'' in the 'tokens' -directory. (The timestamp portion of the name will be different with each invocation.)`, - Run: func(cmd *cobra.Command, args []string) { - tokenPath := filepath.Join(tokenDir, fmt.Sprintf("%s-%d", args[0], time.Now().Unix())) - - authTokenBytes, err := lib.ReadSmallFile(filepath.Join(tokenDir, authTokenPath)) - if err != nil { - fmt.Println(err) - os.Exit(-1) - } - - token, err := lib.GetAccessToken(authTokenBytes, baseURL) - if err != nil { - fmt.Println(err) - os.Exit(-1) - } - - fmt.Printf("\nAccess Token:\n%s\n", token) - if err = lib.WriteSmallFile(tokenPath, []byte(token)); err != nil { - fmt.Printf("could not save access token to file at %s; %s", tokenPath, err.Error()) - os.Exit(-1) - } - }, -} - -func init() { - rootCmd.AddCommand(getAccessTokenCmd) - getAccessTokenCmd.Flags().StringVarP(&authTokenPath, "authToken", "A", "", "the full file path of the auth token") - markRequiredOrFail("authToken", getAccessTokenCmd) -} diff --git a/dpcclient/cmd/root.go b/dpcclient/cmd/root.go deleted file mode 100644 index 09f9aea668..0000000000 --- a/dpcclient/cmd/root.go +++ /dev/null @@ -1,143 +0,0 @@ -package cmd - -import ( - "fmt" - "os" - - "github.com/spf13/cobra" - - "github.com/mitchellh/go-homedir" - "github.com/spf13/viper" -) - -var ( - keyDir string - tokenDir string - environment string - baseURL string - cfgFile string -) - -// rootCmd represents the base dpcclient -var rootCmd = &cobra.Command{ - Use: "dpcclient", - PersistentPreRun: func(cmd *cobra.Command, args []string) { - if keyDir == "" { - keyDir = viper.GetString("keydir") - } - if keyDir != "" { - validateDirectory(keyDir) - } - if tokenDir == "" { - tokenDir = viper.GetString("tokendir") - } - if tokenDir != "" { - validateDirectory(tokenDir) - } - // alas, cobra breaks vipers config-over-default priority, so we have to handle default value setting. - // https://github.com/spf13/viper/issues/671 - if environment == "" { - environment = viper.GetString("env") - } - if environment == "" { - environment = "sandbox" - } - validateEnvironment() - baseURL = fmt.Sprintf("https://%s.dpc.cms.gov/api/v1", environment) - }, - Short: "A command line tool to explore CMS's DPC API", - Long: ` -dpcclient helps you explore CMS's DPC API by generating the things you need --- a PKI key pair, an auth token and an access token -- to access it. This tool -is not intended to be a full-fledged client, but to help you along the way in -writing one of your own. - -You invoke dpcclient with a command, its argument[s], and any appropriate flags: - -dpcclient command argument flags - -In addition to these builtin help messages, the README has more details and -examples for every command. -`, -} - -func validateDirectory(name string) { - if name != "" { - dir, err := os.Stat(name) - if err != nil { - fmt.Printf("directory '%s' not found or invalid? %s\n", name, err) - os.Exit(1) - } - if !dir.Mode().IsDir() { - fmt.Printf("file '%s' is not a directory? %s\n", name, err) - os.Exit(1) - } - } -} - -func validateEnvironment() { - switch environment { - case "dev", "test", "sandbox": - fmt.Printf("Base domain: %s.dpc.cms.gov", environment) - default: - fmt.Printf("Invalid environment: %s. Should be one of 'dev', 'test' or 'sandbox'", environment) - os.Exit(1) - } -} - -// Execute runs the command line -func Execute() { - if err := rootCmd.Execute(); err != nil { - if err.Error() != "subcommand is required" { - fmt.Println(err) - } - os.Exit(1) - } -} - -func init() { - cobra.OnInitialize(initConfig) - - // global flags that apply to all commands - rootCmd.PersistentFlags().StringVarP(&keyDir, "keydir", "k", "", "directory used to store keys (defaults to working directory)") - rootCmd.PersistentFlags().StringVarP(&tokenDir, "tokendir", "t", "", "directory used to store tokens (defaults to working directory)") - // do not set default value here, as a default value here will always override the config file. https://github.com/spf13/viper/issues/671 - rootCmd.PersistentFlags().StringVarP(&environment, "env", "e", "", "the target environment name (defaults to 'sandbox')") - rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (defaults to $HOME/.dpcclient.yaml)") - bindViperOrExit("keydir") - bindViperOrExit("tokendir") - bindViperOrExit("env") -} - -func bindViperOrExit(key string) { - if err := viper.BindPFlag(key, rootCmd.PersistentFlags().Lookup(key)); err != nil { - fmt.Println("Internal configuration error: ", err) - os.Exit(1) - } -} - -// initConfig reads in config file and ENV variables if set. -func initConfig() { - if cfgFile != "" { - // Use config file from the flag. - viper.SetConfigFile(cfgFile) - } else { - // Find home directory. - home, err := homedir.Dir() - if err != nil { - fmt.Println(err) - os.Exit(1) - } - - // Search for config in home directory with name ".dpcclient" (without extension). - viper.AddConfigPath(home) - viper.SetConfigName(".dpcclient") - } - - viper.AutomaticEnv() // read in environment variables that match - - // If a config file is found, read it in. - if err := viper.ReadInConfig(); err == nil { - fmt.Println("Using config file:", viper.ConfigFileUsed()) - } -} diff --git a/dpcclient/dpcclient b/dpcclient/dpcclient deleted file mode 100755 index 42a87c8cde..0000000000 Binary files a/dpcclient/dpcclient and /dev/null differ diff --git a/dpcclient/dpcclient.exe b/dpcclient/dpcclient.exe deleted file mode 100755 index 3d258c3336..0000000000 Binary files a/dpcclient/dpcclient.exe and /dev/null differ diff --git a/dpcclient/go.mod b/dpcclient/go.mod deleted file mode 100644 index 8cbd3bb565..0000000000 --- a/dpcclient/go.mod +++ /dev/null @@ -1,11 +0,0 @@ -module github.com/CMSgov/dpc-app/dpcclient - -go 1.14 - -require ( - github.com/gbrlsnchs/jwt/v3 v3.0.0-rc.2 - github.com/google/uuid v1.1.2 - github.com/mitchellh/go-homedir v1.1.0 - github.com/spf13/cobra v1.0.0 - github.com/spf13/viper v1.9.0 -) diff --git a/dpcclient/go.sum b/dpcclient/go.sum deleted file mode 100644 index bdb2d571c1..0000000000 --- a/dpcclient/go.sum +++ /dev/null @@ -1,745 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.6.0/go.mod h1:afJwI0vaXwAG54kI7A//lP/lSPDkQORQuMkv56TxEPU= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -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/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= -github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= -github.com/gbrlsnchs/jwt/v3 v3.0.0-rc.2 h1:3t7jvTkeQfk1FdP0noXSNiM6AdBokLz7QmZDmnCHAAA= -github.com/gbrlsnchs/jwt/v3 v3.0.0-rc.2/go.mod h1:AncDcjXz18xetI3A6STfXq2w+LuTx8pQ8bGEwRN8zVM= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -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/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= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= -github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= -github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= -github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -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= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/magefile/mage v1.9.0 h1:t3AU2wNwehMCW97vuqQLtw6puppWXHO+O2MHo5a50XE= -github.com/magefile/mage v1.9.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= -github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= -github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.4.2 h1:6h7AQ0yhTcIsmFmnAwQls75jp2Gzs4iB8W7pjMO+rqo= -github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= -github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -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/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= -github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v1.0.0 h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8= -github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/spf13/viper v1.9.0 h1:yR6EXjTp0y0cLN8OZg1CRZmOBdI88UcGkhgyJhu6nZk= -github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -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/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= -golang.org/x/crypto v0.0.0-20190927123631-a832865fa7ad/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 h1:HWj/xjIHfjYU5nVXpTM0s39J9CbLn7Cc5a7IC5rwsMQ= -golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -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-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= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -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-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -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= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf h1:2ucpDCmfkl8Bd/FsLtiD653Wf96cW37s+iGx93zsu4k= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -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= -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/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= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -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/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= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/ini.v1 v1.63.2 h1:tGK/CyBg7SMzb60vP1M03vNZ3VDu3wGQJwn7Sxi9r3c= -gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/dpcclient/lib/io.go b/dpcclient/lib/io.go deleted file mode 100644 index 9406a39c70..0000000000 --- a/dpcclient/lib/io.go +++ /dev/null @@ -1,70 +0,0 @@ -package lib - -import ( - "encoding/json" - "fmt" - "io/ioutil" - "log" - "net/http" - "net/url" -) - -func ReadSmallFile(path string) ([]byte, error) { - // These files should never be large enough to require buffering - /* #nosec -- Potential file inclusion via variable */ - data, err := ioutil.ReadFile(path) - if err != nil { - return nil, err - } - return data, nil -} - -func WriteSmallFile(path string, content []byte) error { - // These files should never be large enough to require buffering - /* #nosec -- Potential file inclusion via variable */ - if err := ioutil.WriteFile(path, content, 0644); err != nil { - return err - } - return nil -} - -func GetAccessToken(authTokenBytes []byte, baseURL string) (string, error) { - data := url.Values{} - data.Set("grant_type", "client_credentials") - data.Set("scope", "system/*.*") - data.Set("client_assertion_type", "urn:ietf:params:oauth:client-assertion-type:jwt-bearer") - data.Set("client_assertion", string(authTokenBytes)) - - resp, err := http.PostForm(fmt.Sprintf("%s/Token/auth", baseURL), data) - // make sure we close the body if necessary when there's an error - if resp != nil { - defer func() { - err = resp.Body.Close() - if err != nil { - log.Fatalf("error closing request to %s: %s", resp.Request.URL, err) - } - }() - } - if err != nil { - return "", err - } - - if resp.StatusCode != 200 { - msg, _ := ioutil.ReadAll(resp.Body) - return "", fmt.Errorf("status %d, %s", resp.StatusCode, msg) - } - - type TokenResponse struct { - Scope string `json:"scope"` - AccessToken string `json:"access_token"` - TokenType string `json:"token_type"` - ExpiresIn int64 `json:"expires_in"` - } - var t TokenResponse - if err = json.NewDecoder(resp.Body).Decode(&t); err != nil { - panic(fmt.Sprintf("unexpected token response format: %s", err.Error())) - } - //fmt.Printf("TokenResponse: %+v", t) - - return t.AccessToken, nil -} diff --git a/dpcclient/lib/io_test.go b/dpcclient/lib/io_test.go deleted file mode 100644 index 7d67ed4a69..0000000000 --- a/dpcclient/lib/io_test.go +++ /dev/null @@ -1,71 +0,0 @@ -package lib - -import ( - "bytes" - "io/ioutil" - "os" - "reflect" - "testing" -) - -func Test_readSmallFile(t *testing.T) { - type args struct { - path string - } - tests := []struct { - name string - args args - want []byte - wantErr bool - }{ - {"file exists", args{"testdata/read-this"}, []byte("hello dpc"), false}, - {"good path, bad file name", args{"no-such-file"}, nil, true}, - {"bad path", args{"no-such-dir/no-such-file"}, nil, true}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - got, err := ReadSmallFile(tt.args.path) - if (err != nil) != tt.wantErr { - t.Errorf("readSmallFile() error = %v, wantErr %v", err, tt.wantErr) - return - } - if !reflect.DeepEqual(got, tt.want) { - t.Errorf("readSmallFile() got = %v, want %v", got, tt.want) - } - }) - } -} - -func Test_writeSmallFile(t *testing.T) { - type args struct { - content []byte - path string - } - tests := []struct { - name string - args args - wantErr bool - }{ - {"good args", args{[]byte("I am the content"), "test-write-small-file"}, false}, - {"overwrite existing", args{[]byte("I overwrote the content"), "test-write-small-file"}, false}, - {"bad path", args{[]byte("I am the content"), "nosuchdir/test-write-small-file"}, true}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if err := WriteSmallFile(tt.args.path, tt.args.content); (err != nil) != tt.wantErr { - t.Errorf("writeSmallFile() error = %v, wantErr %v", err, tt.wantErr) - } - if !tt.wantErr { - content, err := ioutil.ReadFile(tt.args.path) - if err != nil { - t.Errorf("can't read written file; %s", err.Error()) - } - if !bytes.Equal(content, tt.args.content) { - t.Errorf("wanted content (%s) did not match content read from written file (%s)", tt.args.content, content) - } - } - }) - } - // failure to clean up is not a test failure - _ = os.Remove("test-write-small-file") -} diff --git a/dpcclient/lib/pki.go b/dpcclient/lib/pki.go deleted file mode 100644 index 27e0809f00..0000000000 --- a/dpcclient/lib/pki.go +++ /dev/null @@ -1,106 +0,0 @@ -package lib - -import ( - "crypto/rand" - "crypto/rsa" - "crypto/x509" - "encoding/pem" - "errors" - "fmt" -) - -// https://dpc.cms.gov/docs, 'Uploading a public key' section. The first public key must be uploaded via the web UI. -// Thereafter, public keys can be managed via the API Key endpoint -const RsaKeyMinBits = 4096 - -// GenRSAKeyPair generates a suitably-sized private key for use with DPC, returning both the private key -// and the associated public key. Note that no pass phrase is associated with the private key. Further note -// that the private key is in PKCS1 form, but the public key is in PKIX form. This is directly in response -// to DPC requirements; DPC only understands PKIX format for public keys. -// https://serverfault.com/questions/9708/what-is-a-pem-file-and-how-does-it-differ-from-other-openssl-generated-key-file -func GenRSAKeyPair() (*rsa.PrivateKey, *rsa.PublicKey, error) { - priv, err := rsa.GenerateKey(rand.Reader, RsaKeyMinBits) - if err != nil { - return nil, nil, err - } - return priv, &priv.PublicKey, nil -} - -func savePrivateKey(prefix string, key *rsa.PrivateKey) error { - convertedKey := x509.MarshalPKCS1PrivateKey(key) - if convertedKey == nil { - return errors.New("could not marshall private key to x509 PKCS1 form") - } - privateKeyBytes := pem.EncodeToMemory( - &pem.Block{ - Type: "RSA PRIVATE KEY", - Bytes: convertedKey, - }, - ) - if err := WriteSmallFile(fmt.Sprintf("%s-private.pem", prefix), privateKeyBytes); err != nil { - return err - } - return nil -} - -func savePublicKey(prefix string, key *rsa.PublicKey) error { - convertedKey, err := x509.MarshalPKIXPublicKey(key) - if convertedKey == nil || err != nil { - return errors.New("could not marshall public key to x509 PKIX form") - } - publicKeyBytes := pem.EncodeToMemory(&pem.Block{ - Type: "PUBLIC KEY", - Bytes: convertedKey, - }) - if err := WriteSmallFile(fmt.Sprintf("%s-public.pem", prefix), publicKeyBytes); err != nil { - return err - } - return nil -} - -// SaveDPCKeyPair saves an RSA Key Pair to files, first checking that it is valid for use with DPC. -// The prefix string should contain any path elements either relative to the working directory or absolute. -// Two files will be created using the prefix --- prefix-private.pem and prefix-public.pem --- -// with the obvious contents. -func SaveDPCKeyPair(prefix string, private *rsa.PrivateKey, public *rsa.PublicKey) error { - if private == nil || public == nil { - return errors.New("private and/or public key arguments cannot be nil") - } - if err := ValidateDPCKey(private); err != nil { - return err - } - if err := savePrivateKey(prefix, private); err != nil { - return err - } - if err := savePublicKey(prefix, public); err != nil { - return err - } - return nil -} - -// KeyFromPEM reads a PEM-formatted RSA private key and returns the rsa.PrivateKey and, for convenience, rsa.PublicKey. -func KeyFromPEM(bytes []byte) (*rsa.PrivateKey, *rsa.PublicKey, error) { - if len(bytes) == 0 { - return nil, nil, fmt.Errorf("empty or nil bytes") - } - - block, rest := pem.Decode(bytes) - if block == nil { - return nil, nil, fmt.Errorf("unable to decode private key '%s'", string(rest)) - } - key, err := x509.ParsePKCS1PrivateKey(block.Bytes) - if err != nil { - return nil, nil, fmt.Errorf("unable to parse RSA private key: %s", err.Error()) - } - - return key, &(key.PublicKey), nil -} - -// ValidateDPCKey returns nil if the private key is a valid DPC PKI private key; otherwise, it returns an error -// Although DPC supports EC keys, this code does not (yet). -func ValidateDPCKey(key *rsa.PrivateKey) error { - if RsaKeyMinBits > key.Size()*8 { - return fmt.Errorf("key length (%d bits) less than minimum (%d bits)", key.Size()*8, RsaKeyMinBits) - } - return nil -} diff --git a/dpcclient/lib/pki_test.go b/dpcclient/lib/pki_test.go deleted file mode 100644 index 905a1634d0..0000000000 --- a/dpcclient/lib/pki_test.go +++ /dev/null @@ -1,98 +0,0 @@ -package lib - -import ( - "crypto/rsa" - "os" - "reflect" - "strings" - "testing" -) - -func TestGenRSAKeyPair(t *testing.T) { - private, public, err := GenRSAKeyPair() - if err != nil { - t.Errorf("GenRSAKeyPair() should not fail; error = %v", err) - } - if private == nil || public == nil { - t.Errorf("No keys generated? private (%v), public (%v)", private, public) - } - if !(private.Size()*8 == 4096) { - t.Errorf("GenRSAKeyPair() key is too small? size in bytes is %d", private.Size()) - } - public2 := &private.PublicKey - if !reflect.DeepEqual(public2, public) { - t.Errorf("KeysFrom() got1 = %v, want %v", public2, public) - } -} - -func TestKeyFromPEM(t *testing.T) { - bytes, _ := ReadSmallFile("testdata/test-key-private.pem") - eccBytes, _ := ReadSmallFile("testdata/ecc-key.pem") - type args struct { - privateKey []byte - } - - tests := []struct { - name string - args args - wantErr bool - errHas string - }{ - {"rsa bytes", args{bytes}, false, ""}, - {"fake bytes", args{[]byte("I am not any kind of key")}, true, "unable to decode private key"}, - {"ecc key bytes", args{eccBytes}, true, "unable to parse RSA private key"}, - {"nil arg", args{[]byte{}}, true, "empty or nil bytes"}, - {"empty slice", args{make([]byte, 0)}, true, "empty or nil bytes"}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - _, _, err := KeyFromPEM(tt.args.privateKey) - if err != nil { - t.Logf("KeyFromPEM() error = %v", err) - if tt.wantErr { - if !strings.Contains(err.Error(), tt.errHas) { - t.Errorf("KeyFromPEM() error should contain %s", tt.errHas) - } - } - } - }) - } -} - -func TestSaveDPCKeyPair(t *testing.T) { - private, public, err := GenRSAKeyPair() - if err != nil { - t.Error("Error generating a key pair for test; ", err) - } - pemBytes, _ := ReadSmallFile("testdata/small-key.pem") - privateSmall, publicSmall, err2 := KeyFromPEM(pemBytes) - if err2 != nil { - t.Error("Error reading keys from testdata/small-key.pem", err2) - } - type args struct { - prefix string - private *rsa.PrivateKey - public *rsa.PublicKey - } - tests := []struct { - name string - args args - wantErr bool - }{ - {"valid key", args{"dpcSandboxKey", private, public}, false}, - {"nil key", args{"badKey", nil, nil}, true}, - {"rsa key but too small", args{"small-key", privateSmall, publicSmall}, true}, - {"valid key with invalid prefix", args{"nosuchpath/noPathToHere", private, public}, true}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if err := SaveDPCKeyPair(tt.args.prefix, tt.args.private, tt.args.public); (err != nil) != tt.wantErr { - t.Errorf("SaveDPCKeyPair() error = %v, wantErr %v", err, tt.wantErr) - } else { - t.Logf("SaveDPCKeyPair() error = %v", err) - } - }) - } - _ = os.Remove("dpcSandboxKey-private.pem") - _ = os.Remove("dpcSandboxKey-public.pem") -} diff --git a/dpcclient/lib/testdata/ecc-key.pem b/dpcclient/lib/testdata/ecc-key.pem deleted file mode 100644 index 271ee5aee8..0000000000 --- a/dpcclient/lib/testdata/ecc-key.pem +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN EC PRIVATE KEY----- -MHQCAQEEIOP5uWbSlJYflE1rYyw1yTM+XVLKxVbmBRUeauZJrNYsoAcGBSuBBAAK -oUQDQgAEeDJ9BqfjB58TnU5X+ueL1ogAaiuvvPZYCOtuNnRV0ukwFA+RCo2AuCBG -nzKi3uHlZ5z50DC8qd9hgPdxOPuuuQ== ------END EC PRIVATE KEY----- diff --git a/dpcclient/lib/testdata/macaroon b/dpcclient/lib/testdata/macaroon deleted file mode 100644 index 5c26eb11c5..0000000000 --- a/dpcclient/lib/testdata/macaroon +++ /dev/null @@ -1 +0,0 @@ -W3sidiI6MiwibCI6Imh0dHBzOi8vdGVzdC5kcGMuY21zLmdvdi9hcGkiLCJpIjoiNmRhOWFiY2EtMWI1OS00NzI5LWFlZTQtYzQzN2I5MTczNjllIiwiYyI6W3siaTY0IjoiWkhCalgyMWhZMkZ5YjI5dVgzWmxjbk5wYjI0Z1BTQXkifSx7Imk2NCI6IlpYaHdhWEpsY3lBOUlESXdNakF0TVRFdE1qRlVNakk2TVRNNk1Ea3VNVE01T0RRNVdnIn0seyJpNjQiOiJiM0puWVc1cGVtRjBhVzl1WDJsa0lEMGdOR0l4TlRBNU9HSXRaRFV6WmkwME16SmtMV0V5WmpNdE5ERTJZVGswT0RNMU1qZGkifSx7ImwiOiJsb2NhbCIsImk2NCI6IkFteDZmeVJzZW44a0wtLUNydXVvNVhxRjUyVU9PRmhIc21NZWJVd1Fpa05LcTdZRFhVeDdpUUIxZVQ2RXFrOFdfVnd1ekx0b3dYWjlPcU42Q0tJU2xrcm9TUDM2YTJLelI5MU1Gc3ZvaDhUdFpkbmNqSVBtQm16bmJxMkw2aE1saDFNVVZIMElqZU9UZjFCeGpSMEdNblowVE1CZHhkbEZDdjNyem82eGhFR3Etd094dDNvNE4xSmtwT2pOVFVSY3hoUWhCTHVNNzV5OFlYZHI3dyIsInY2NCI6InpWWjBEaFpNbVFRXzEydks3TXdTVnhFQUZCRDhLSEtETjlSX2Fwb2p3S1FwWk9VV2lhQ3JfM0NUcGw4TENoQkFWUEdXdWt1RUViVmYtN21HSUI1eDExZmVRZUc1OWtyVSJ9XSwiczY0IjoiM19COF90U1RoMk1HVmhwalhlUTI2LU9lei0za3BDWVlrZWFkWVotOFhWayJ9XQ== diff --git a/dpcclient/lib/testdata/read-this b/dpcclient/lib/testdata/read-this deleted file mode 100644 index 03f2596143..0000000000 --- a/dpcclient/lib/testdata/read-this +++ /dev/null @@ -1 +0,0 @@ -hello dpc \ No newline at end of file diff --git a/dpcclient/lib/testdata/small-key.pem b/dpcclient/lib/testdata/small-key.pem deleted file mode 100644 index 585761ee8b..0000000000 --- a/dpcclient/lib/testdata/small-key.pem +++ /dev/null @@ -1,39 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIG5AIBAAKCAYEA3Vevfgc/LI4+vIc2OGwHbiP04BUMRHACsBTgEDQRJxOW86gw -ro4uDEwpMLLWWoQ6AmR1mTHi+3l3DoXaf7gWrmS3jOBLuaVoENRO8LTtjAXFrpcW -r3PmCGwJ40qYIGswDAPx5rZzgA+Sh4y4F6WBjBhPklTg3HbQK7nbyXyrgu4hHT/r -Y/PIueQiXmiS2hkJKMrRopMjE6CeldWK94EYEMak1Z7hGXuPb4eM71/rYX9LY/Kv -gWe9L/xulYehhb2ei46WgYvfVEnXQiD3csTE+S2JfgBp44KgFYOEyZulQsgin+BP -3RgNRQrNnTiaUllmUmOvn/y3m9c+39tccFxQ/wvwFoRyM6w8tDqD7pYgXXx+t62z -QsLOFc1Dz2xwJlx2vFeDqopJyB0U73cwBO3239yu5rz0edzFgS6kDJRuMZP6lK39 -X8L0m9l4ERFbA3FS6Gi4/sB44TF2xmXnR5WwIXfT0xlHB5ZusPBI4Lbn0pFemh0P -TAJfLWpZQmqwVB+5AgMBAAECggGAaXK6wnnFWP6zWLG53QtqRsiOgqrEW15ZiXWI -gW+stEca5R29g4ts2KL4BKFOiXTxBe7CL6eakV9+nsaaH7qd45tL7qt0qA7rEwly -Si6H9OtTECgewJugfWarF0OUUe1+yFqgxd8qC1pf3n/lvC43F30Fe5tAPQfFiO9U -jBr+wrObxwmKpOWhPR44WW3MeGbw/CQT1zXtwg4FPzCqsdsokeVw5ex5JOC+ps2X -EPtLcflo+0bE4guAD/pc3JPvGX4JxTrf5ZDWoEAMNv+czndMIOTCuIEXSOT9Vle0 -lahd7r1SI3dUvScajlGu+4qdJSsAVgt7tK91Y1hiHhogWS98VComX9LAWeqYItYp -PZSSOqnHII0ixcIuq99Yv/RC2d6qTcKZbpqNQ17Ah/U3HIL5qZc1VHMYiqmvBoRg -VTOfRn2FeL96kKqVCJM1rVjySjicJCqbT7qVR8yODyQBGkw93mUf/1FnjYz9Yf0y -uMAoYoMUExd6weYuNjrRtxZ4XMEBAoHBAPklWKu2UUqLSms/Los2aesIcqQuEAYj -AVmYvFGyRH8ETmWVst4Gq/qh+EKZAbuyajrlTJuC4he8+s3BhXm6wliASsnmMnop -J7gBso7dk/enx2TtUUNIgLAqI/YhdCvEsHpcqV+/QD/Ox5nlAu2eFiQBaDgA0wKW -jI2UwFZUqf8FNZ+/owKv9orszZBQOqGy0jbYwv03GS0YVCQ5GF5t9V1cgoqS2oE2 -02XzMJZjgJcn2PKFf48drkMccvGR6cqpMQKBwQDjbodyBpXZ78Z0sCGSVMqY/D5H -g5syfzO4vl4pMKqdh4HmWdRe62cuuf8Lu4zZS52DDeCdGvvATdgdN520blC3L61q -t4jGffcUJSvt+ylW7KjwW3AgVTirKuJTnm4+cC/DcK8WkDuMkcRiCT0AAj65+t5s -JxddxcH2BELHUgwKC+AT90vASxQUf1V4nZO8rxXAWQvH3P+4BNGHLqjIBNC8LZDo -FttB54tL0foVmMbdH8W5E6KeK77mZJiN0Ms7vQkCgcEAmNQQ3Vv755cj8j+ShHC/ -bh4DfLSIvcrxRA2NzytkGuoAUQ4P52P+UMLUL739sy5RPYl0gZw6pkcVLeu8vZwT -JQilV83uPsNKCvR3nG1NG8h+ZmmwxG4QCn//CTciNMr1WknG1+XQOpPUGpHBRxMH -D9URIfFXfqns09hgV1Sd5sJCT5jVHIvl1vhFbHXaUWAI1P4INh17Qw8+Ze3kBeC7 -dyaNKQXGJScFa+9OaaHlulMGIFZFlful7qLf21EfMWKxAoHBAOJgdT9BYM0yBnbF -jlUKQzLt+MvUKpmj1YaxLiaPw3PTmq//gA0PAYCYME6sWzE7O8hj+sxGPIoYseG7 -JyWenIcKVPIhR2pTnakWqthRpL9aB3pfeYclbKerouYaj59kqZY+xniODkgIG9J9 -YZNtqKQUGmrKqk5zdnH7ocCmYUdqtJsLDwKTeKRCboAFUTWBjQQNXlWNG5g+a5TE -E8osSNzV+iOaBJpf794DXos6q88UPgnPipEn9/d58ANQ7cpDiQKBwGPtX0+TOwGu -+Y2OxG/lHzcKGVTD+5VxQv0JFtNhEEENG7l3/CwHsqdwV5e9vNkMJJ8oxXcokV3E -aqPzhLPwtnLv7Ua5iOCdOljEaHcsBrVkooq4357B1xHV9LuG7mNuBDWsvx0RR7UB -CspMqu3PmhymT6xSzNAg/Dtc2dzGG2f9wbWYwFIKxdxc6TiaqYI9kWmzdoQBzXHz -UXIMzSQ0+OjplPzHuualQesaETmStZDu7jeLoPnf+Pf8k4nqxmK8ig== ------END RSA PRIVATE KEY----- diff --git a/dpcclient/lib/testdata/test-key-private.pem b/dpcclient/lib/testdata/test-key-private.pem deleted file mode 100644 index e743b0a7e5..0000000000 --- a/dpcclient/lib/testdata/test-key-private.pem +++ /dev/null @@ -1,51 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIJKwIBAAKCAgEAxj53BpkMUYNVpB96Yeq91FFBtjjlCxPwNH7g4UlS3T4UUCFe -3WMTNZkH2BHCE4uD/sC0f1/c8CIrMlfC8wik+ydsL0DZ7AaVkgPdhykWi6qr54mD -jhbRNqykHKpZmN+wuvgRsBxGK68Pk4CSSrDGj7zx05XDKNUqwD2RtyYCkyS6JebD -uvJugDnbP5+oDRrclJimD0ei5JzgHRC0suFGEbxXf1RBi6sfAvbSMUk1qKfwp/XG -HvLpVFxTa2cYxvNJVgq+zNc+/EyVF4Lkk3BbrAk3KBWuhkkPj4+yqDlOLTrLKb1x -ntlYrfDbpQ5VR9CD1mQ9anucjnlXb3GWnma5kKpNtvgvv82RXkaZ3diQH6T+ihUz -I6HYgv2q7qAQfuOQub85cl0k0mCOuweCbTPIIu30gtZ/Cfq6KvJ0XoC0RtHveu8Z -mf9zP3h4PXI2Hh+wZMgoXmex8IFtb3g0XSg0k8Sqxdvl2Hg/v5gWIqtJbMqUf+0q -Z8ocpK/NWK7rm09VSUtrrtAxSvpbjOg6Dsv8HRRdJ1+/cPOrIgVEoor0CNtw/Rpl -5H/LAiCAJEgSfY9eiDAuG04ae9iXRcfzYhI6ex60BoO4bKZcBThnnzW8+erbSl6c -9LWQxkJeg3IsDoGKrqGZVQTJeNfpR4KceXEn7ZFpzg5//lcoZeoMLrJ1aZMCAwEA -AQKCAgEAujRv7iWRWXsH1PmwJQqtNSEBnNwB3w7iPxyxs0oA6EhoIf/GMCHgKCbO -JFhBt8QCviVZJI7xYihl9IpUVZzYAgO8bQH37uccVCMHT+36/ELZ5sfWZn7uEfHE -0Bv9vkbVpDhfvNBB5MQw2DYasscqKlapujhgMBlRZ3ItTR8JqhYENpdzX0RZIF23 -nyIiYfTKHVToHVAHI75qD0Lix2YrP3ttn+6PBlY78bfOJHcETJ85vzlt1yIIobF6 -tVYIAs7/Ii9DmfnPcoGoRIYwloAhywx431DGNeGoGQs7HyF8WaVwsIr9jtvNnMuw -M2+sEKE9RAGxYjQrD/PPeaDyfWQ1hI7q4hiUTci8U/Y6chk0g1AXPSNWSb/Ov71q -RZpNrP/bBeX0ycLiuIqV/+56H19K67AdSsAmJuxnxKRoV+yK4REooYbdOlxo1hyh -rD9P2K2cGaf3rucHQxrw+RzvOcydx3+NCB+6Axke66mYmXISlrBKlNnkOqvLXibf -pcbszEB6N6ThJLapC3l8FU10Jr4mFizbjns4p2dDrt3vhQSkmppxs1AM3ojO86o6 -BxZXjgtbhqe75rOh4y7hpOQhMrli/zA4qRX+v6hryMR81+o48JJymc5pxLs1leOn -g9Gv5dEdyBmRcO0Caf0a6RBj4zx/yEeBsSFC1aPW8jXMDWWAMakCggEBAP5wUAv7 -NOLCWJuL4AYzBciZ8lmE15dqRFGhNNZWtwjRcKyXWPl/+aFL8uXC+xxqqiYalpoB -CIob2GyUXz4SRhGRq5bbJPDV9+9ZsrBEFgH+ktwobP7hVhMj4rEpCQLxyhIE6NF3 -GjH49BQBRIBFlBdL4Pb7aKRWOTOcGclZAQPMfpeNeUV/awaRUzzabB3KK7ZcyZYb -EMaE7Jr+pDMdUDJvOOaC938YwFahJaQC3QIEMw5ptA9pxracZ1guiCbA+g1MNXJP -trnNKzHGJNe97mH+oZ0Z6+HjLjzmSt8gqPyO8Xr4i6jakC5TgXh8mf45vBYjhu5g -fC1aAhqJbiDBYG8CggEBAMd14Ne+F3lx5pZpwL1QT4stusSnVb4h15nX6pWXKooS -UvzBXaXqbMW0ZYakmgFUs3oh9yBQHRF9Bvhi2tjF0dcx77wxMa7HhZYakziAqx/f -7UtiJfCUpFHIbcylCX8nah7BqW+UwUOcV2BqPhp2i7SuDVyosAXsTmf6P2oLApuW -mSz5y7o41Gr7Qf41s7ajV5snG5s1iL7K2UeYnqVAUbfwkAyCujWJC8YlZ7bX60w1 -NzZ5tuycXAyWjGKtRZIatADgCVVHzLz9CXFbut+LxyWFb85TpAs7xc3T+1YEHd07 -z9Fr4Y6W6wbP5lKZZJs0I+KpPasu9FbChDZjhOwO0x0CggEBAOOihesCNyF8sJuQ -+79wHIeJO6pdUCi2OSMy77unXx/ziTPQQBkQJrzo3woydEjLISjv9rcXn5U4LluO -Ltuwq6GCSxqvOxCAzc4E2PocH/hu0uNHA6TQ4xpCq8jGJrrMqXWPkN/+B6CX036m -V6vPFBv3lfBBozALuCd1TBi4mVDVvphGSS4lPhJlKCw0WjAYtRz1TKEP2+VP/QL6 -ONtGKX7FxQluOJEsCsA2ch+XNDVennMRnLeBcffkXA0nrEXHtq749IQtzxPR/AgO -9t1RnplrnxmXnFK+1ppDis6vQKCcHm1fOku6Ju5bZWTvTTKGYsEHzessxUwpz+H/ -/Fgvyd8CggEBAIag1uln4hpTuesuaCyf54CulhCkTahu2UJ6zVi41rqpEaCOt7IE -X/S2BYzyzww06ot2H4KM8IHcXPcMamDEbRWOHB1vKvSosU8WkuYhWt/B2j32els/ -SQX2fb4Say2LIgKufrnUsvn6rbNjIpXkC/ohPN2c8mqdDHL8Iw9lbRYteSg1VsBU -GXQ4MVvvTWTqLXiI1gZWBP2alzvPFM2/cyjvU5tOJXd7EBpnJvDwHl6q0KCRWNmt -1Cee+hSklX+/TF4G2eXY96VcOaJs4t5+TyXRQh0GsYPvjVyXR17QmoO4GlZlNbJz -xSEs9G4uIQztDYew6fIAWGWzF2BKne5jNzUCggEBAOGPniYw8C63sfl0O4pnrPA5 -wi0s6UQKWd2f/B0NJboHkM0kzICY7iB4HNllmlqiykY1o6cKV9Sf5qfY+mszalz4 -+AiIzw4YGCreJa3YJd7odLTGoiO3W33B/z8Nn1x8u4U+UQrXQK1XSLqmheToa7eh -qJD1+wq/sP21ihZ2JnQv/gl1uUSH04DcKloEig/7XAmiYCrqRd0NKEjJMpkMiJN6 -KaZY+xggX/SxkeFXv34CPVsyO7p+YVfgiHxIchXnOx6zEc8lQ36KLywZK19EDWzr -Ifq6iXHmNgq1GRC6f0s9tc+zzncYH19R7DqWgZxzlFMcLYOAOMYEMk4JSNggbb8= ------END RSA PRIVATE KEY----- diff --git a/dpcclient/lib/testdata/test-key-public.pem b/dpcclient/lib/testdata/test-key-public.pem deleted file mode 100644 index 370a9a3aa0..0000000000 --- a/dpcclient/lib/testdata/test-key-public.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN PUBLIC KEY----- -MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxj53BpkMUYNVpB96Yeq9 -1FFBtjjlCxPwNH7g4UlS3T4UUCFe3WMTNZkH2BHCE4uD/sC0f1/c8CIrMlfC8wik -+ydsL0DZ7AaVkgPdhykWi6qr54mDjhbRNqykHKpZmN+wuvgRsBxGK68Pk4CSSrDG -j7zx05XDKNUqwD2RtyYCkyS6JebDuvJugDnbP5+oDRrclJimD0ei5JzgHRC0suFG -EbxXf1RBi6sfAvbSMUk1qKfwp/XGHvLpVFxTa2cYxvNJVgq+zNc+/EyVF4Lkk3Bb -rAk3KBWuhkkPj4+yqDlOLTrLKb1xntlYrfDbpQ5VR9CD1mQ9anucjnlXb3GWnma5 -kKpNtvgvv82RXkaZ3diQH6T+ihUzI6HYgv2q7qAQfuOQub85cl0k0mCOuweCbTPI -Iu30gtZ/Cfq6KvJ0XoC0RtHveu8Zmf9zP3h4PXI2Hh+wZMgoXmex8IFtb3g0XSg0 -k8Sqxdvl2Hg/v5gWIqtJbMqUf+0qZ8ocpK/NWK7rm09VSUtrrtAxSvpbjOg6Dsv8 -HRRdJ1+/cPOrIgVEoor0CNtw/Rpl5H/LAiCAJEgSfY9eiDAuG04ae9iXRcfzYhI6 -ex60BoO4bKZcBThnnzW8+erbSl6c9LWQxkJeg3IsDoGKrqGZVQTJeNfpR4KceXEn -7ZFpzg5//lcoZeoMLrJ1aZMCAwEAAQ== ------END PUBLIC KEY----- diff --git a/dpcclient/lib/token.go b/dpcclient/lib/token.go deleted file mode 100644 index e11161c405..0000000000 --- a/dpcclient/lib/token.go +++ /dev/null @@ -1,34 +0,0 @@ -package lib - -import ( - "crypto/rsa" - "fmt" - "os" - "time" - - "github.com/gbrlsnchs/jwt/v3" - "github.com/google/uuid" -) - -func GenerateAuthToken(key *rsa.PrivateKey, kid string, macaroon []byte, baseURL string) ([]byte, error) { - - jti, err := uuid.NewRandom() - if err != nil { - fmt.Println(err) - os.Exit(-1) - } - - now := time.Now() - pl := jwt.Payload{ - Issuer: string(macaroon), - Subject: string(macaroon), - Audience: jwt.Audience{fmt.Sprintf("%s/Token/auth", baseURL)}, - ExpirationTime: jwt.NumericDate(now.Add(5 * time.Minute)), - IssuedAt: jwt.NumericDate(now), - JWTID: jti.String(), - } - - alg := jwt.NewRS384(jwt.RSAPrivateKey(key)) - - return jwt.Sign(pl, alg, jwt.KeyID(kid)) -} diff --git a/dpcclient/main.go b/dpcclient/main.go deleted file mode 100644 index 3b1ed022a5..0000000000 --- a/dpcclient/main.go +++ /dev/null @@ -1,7 +0,0 @@ -package main - -import "github.com/CMSgov/dpc-app/dpcclient/cmd" - -func main() { - cmd.Execute() -}