From 683947f21de11dee1083c0386b678861e6d961b9 Mon Sep 17 00:00:00 2001 From: Daniel Date: Sun, 18 Dec 2022 17:07:54 +0200 Subject: [PATCH] feat: Expand Slack Trigger Capabilities - blocks,attachments,threads and more (#2369) Signed-off-by: Daniel Soifer --- api/jsonschema/schema.json | 44 +- api/openapi-spec/swagger.json | 44 +- api/sensor.html | 138 +- api/sensor.md | 149 ++- go.mod | 12 + go.sum | 65 + pkg/apis/sensor/v1alpha1/generated.pb.go | 1165 ++++++++++++----- pkg/apis/sensor/v1alpha1/generated.proto | 38 +- pkg/apis/sensor/v1alpha1/openapi_generated.go | 86 +- pkg/apis/sensor/v1alpha1/types.go | 32 +- .../sensor/v1alpha1/zz_generated.deepcopy.go | 34 + sensors/triggers/slack/slack.go | 114 +- 12 files changed, 1547 insertions(+), 374 deletions(-) diff --git a/api/jsonschema/schema.json b/api/jsonschema/schema.json index 08801b8bfb..8df52ecd0e 100644 --- a/api/jsonschema/schema.json +++ b/api/jsonschema/schema.json @@ -3940,11 +3940,45 @@ }, "type": "object" }, + "io.argoproj.sensor.v1alpha1.SlackSender": { + "properties": { + "icon": { + "description": "Icon is the Slack application's icon, e.g. :robot_face: or https://example.com/image.png", + "type": "string" + }, + "username": { + "description": "Username is the Slack application's username", + "type": "string" + } + }, + "type": "object" + }, + "io.argoproj.sensor.v1alpha1.SlackThread": { + "properties": { + "broadcastMessageToChannel": { + "description": "BroadcastMessageToChannel allows to also broadcast the message from the thread to the channel", + "type": "boolean" + }, + "messageAggregationKey": { + "description": "MessageAggregationKey allows to aggregate the messages to a thread by some key.", + "type": "string" + } + }, + "type": "object" + }, "io.argoproj.sensor.v1alpha1.SlackTrigger": { "description": "SlackTrigger refers to the specification of the slack notification trigger.", "properties": { + "attachments": { + "description": "Attachments is a JSON format string that represents an array of Slack attachments according to the attachments API: https://api.slack.com/reference/messaging/attachments .", + "type": "string" + }, + "blocks": { + "description": "Blocks is a JSON format string that represents an array of Slack blocks according to the blocks API: https://api.slack.com/reference/block-kit/blocks .", + "type": "string" + }, "channel": { - "description": "Channel refers to which Slack channel to send slack message.", + "description": "Channel refers to which Slack channel to send Slack message.", "type": "string" }, "message": { @@ -3958,9 +3992,17 @@ }, "type": "array" }, + "sender": { + "$ref": "#/definitions/io.argoproj.sensor.v1alpha1.SlackSender", + "description": "Sender refers to additional configuration of the Slack application that sends the message." + }, "slackToken": { "$ref": "#/definitions/io.k8s.api.core.v1.SecretKeySelector", "description": "SlackToken refers to the Kubernetes secret that holds the slack token required to send messages." + }, + "thread": { + "$ref": "#/definitions/io.argoproj.sensor.v1alpha1.SlackThread", + "description": "Thread refers to additional options for sending messages to a Slack thread." } }, "type": "object" diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index 07c5ddd52e..7b70fcc232 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -3914,12 +3914,46 @@ } } }, + "io.argoproj.sensor.v1alpha1.SlackSender": { + "type": "object", + "properties": { + "icon": { + "description": "Icon is the Slack application's icon, e.g. :robot_face: or https://example.com/image.png", + "type": "string" + }, + "username": { + "description": "Username is the Slack application's username", + "type": "string" + } + } + }, + "io.argoproj.sensor.v1alpha1.SlackThread": { + "type": "object", + "properties": { + "broadcastMessageToChannel": { + "description": "BroadcastMessageToChannel allows to also broadcast the message from the thread to the channel", + "type": "boolean" + }, + "messageAggregationKey": { + "description": "MessageAggregationKey allows to aggregate the messages to a thread by some key.", + "type": "string" + } + } + }, "io.argoproj.sensor.v1alpha1.SlackTrigger": { "description": "SlackTrigger refers to the specification of the slack notification trigger.", "type": "object", "properties": { + "attachments": { + "description": "Attachments is a JSON format string that represents an array of Slack attachments according to the attachments API: https://api.slack.com/reference/messaging/attachments .", + "type": "string" + }, + "blocks": { + "description": "Blocks is a JSON format string that represents an array of Slack blocks according to the blocks API: https://api.slack.com/reference/block-kit/blocks .", + "type": "string" + }, "channel": { - "description": "Channel refers to which Slack channel to send slack message.", + "description": "Channel refers to which Slack channel to send Slack message.", "type": "string" }, "message": { @@ -3933,9 +3967,17 @@ "$ref": "#/definitions/io.argoproj.sensor.v1alpha1.TriggerParameter" } }, + "sender": { + "description": "Sender refers to additional configuration of the Slack application that sends the message.", + "$ref": "#/definitions/io.argoproj.sensor.v1alpha1.SlackSender" + }, "slackToken": { "description": "SlackToken refers to the Kubernetes secret that holds the slack token required to send messages.", "$ref": "#/definitions/io.k8s.api.core.v1.SecretKeySelector" + }, + "thread": { + "description": "Thread refers to additional options for sending messages to a Slack thread.", + "$ref": "#/definitions/io.argoproj.sensor.v1alpha1.SlackThread" } } }, diff --git a/api/sensor.html b/api/sensor.html index f487cb4056..1f022d634f 100644 --- a/api/sensor.html +++ b/api/sensor.html @@ -2621,6 +2621,90 @@

SensorStatus +

SlackSender +

+

+(Appears on: +SlackTrigger) +

+

+

+ + + + + + + + + + + + + + + + + +
FieldDescription
+username
+ +string + +
+(Optional) +

Username is the Slack application’s username

+
+icon
+ +string + +
+(Optional) +

Icon is the Slack application’s icon, e.g. :robot_face: or https://example.com/image.png

+
+

SlackThread +

+

+(Appears on: +SlackTrigger) +

+

+

+ + + + + + + + + + + + + + + + + +
FieldDescription
+messageAggregationKey
+ +string + +
+(Optional) +

MessageAggregationKey allows to aggregate the messages to a thread by some key.

+
+broadcastMessageToChannel
+ +bool + +
+(Optional) +

BroadcastMessageToChannel allows to also broadcast the message from the thread to the channel

+

SlackTrigger

@@ -2675,7 +2759,7 @@

SlackTrigger (Optional) -

Channel refers to which Slack channel to send slack message.

+

Channel refers to which Slack channel to send Slack message.

@@ -2690,6 +2774,58 @@

SlackTrigger

Message refers to the message to send to the Slack channel.

+ + +attachments
+ +string + + + +(Optional) +

Attachments is a JSON format string that represents an array of Slack attachments according to the attachments API: https://api.slack.com/reference/messaging/attachments .

+ + + + +blocks
+ +string + + + +(Optional) +

Blocks is a JSON format string that represents an array of Slack blocks according to the blocks API: https://api.slack.com/reference/block-kit/blocks .

+ + + + +thread
+ + +SlackThread + + + + +(Optional) +

Thread refers to additional options for sending messages to a Slack thread.

+ + + + +sender
+ + +SlackSender + + + + +(Optional) +

Sender refers to additional configuration of the Slack application that sends the message.

+ +

StandardK8STrigger diff --git a/api/sensor.md b/api/sensor.md index d12679314f..e8a9ea4518 100644 --- a/api/sensor.md +++ b/api/sensor.md @@ -2721,6 +2721,99 @@ github.com/argoproj/argo-events/pkg/apis/common.Status +

+SlackSender +

+

+(Appears on: +SlackTrigger) +

+

+

+ + + + + + + + + + + + + + + + + +
+Field + +Description +
+username
string +
+(Optional) +

+Username is the Slack application’s username +

+
+icon
string +
+(Optional) +

+Icon is the Slack application’s icon, e.g. :robot_face: or +https://example.com/image.png +

+
+

+SlackThread +

+

+(Appears on: +SlackTrigger) +

+

+

+ + + + + + + + + + + + + + + + + +
+Field + +Description +
+messageAggregationKey
string +
+(Optional) +

+MessageAggregationKey allows to aggregate the messages to a thread by +some key. +

+
+broadcastMessageToChannel
bool +
+(Optional) +

+BroadcastMessageToChannel allows to also broadcast the message from the +thread to the channel +

+

SlackTrigger

@@ -2780,7 +2873,7 @@ required to send messages. (Optional)

-Channel refers to which Slack channel to send slack message. +Channel refers to which Slack channel to send Slack message.

@@ -2795,6 +2888,60 @@ Message refers to the message to send to the Slack channel.

+ + +attachments
string + + +(Optional) +

+Attachments is a JSON format string that represents an array of Slack +attachments according to the attachments API: +https://api.slack.com/reference/messaging/attachments +. +

+ + + + +blocks
string + + +(Optional) +

+Blocks is a JSON format string that represents an array of Slack blocks +according to the blocks API: +https://api.slack.com/reference/block-kit/blocks +. +

+ + + + +thread
+ SlackThread + + +(Optional) +

+Thread refers to additional options for sending messages to a Slack +thread. +

+ + + + +sender
+ SlackSender + + +(Optional) +

+Sender refers to additional configuration of the Slack application that +sends the message. +

+ +

diff --git a/go.mod b/go.mod index 27c5607e55..dc4260c8da 100644 --- a/go.mod +++ b/go.mod @@ -19,6 +19,7 @@ require ( github.com/antonmedv/expr v1.9.0 github.com/apache/openwhisk-client-go v0.0.0-20190915054138-716c6f973eb2 github.com/apache/pulsar-client-go v0.8.1 + github.com/argoproj/notifications-engine v0.3.1-0.20221203221941-490d98afd1d6 github.com/argoproj/pkg v0.13.6 github.com/aws/aws-sdk-go v1.44.162 github.com/blushft/go-diagrams v0.0.0-20201006005127-c78c821223d9 @@ -94,6 +95,8 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/azcore v1.0.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0 // indirect github.com/DataDog/zstd v1.5.0 // indirect + github.com/PagerDuty/go-pagerduty v1.6.0 // indirect + github.com/RocketChat/Rocket.Chat.Go.SDK v0.0.0-20210112200207-10ab4d695d60 // indirect github.com/andybalholm/brotli v1.0.4 // indirect github.com/apache/pulsar-client-go/oauth2 v0.0.0-20220120090717-25e59572242e // indirect github.com/cyphar/filepath-securejoin v0.2.3 // indirect @@ -103,11 +106,14 @@ require ( github.com/emicklei/go-restful/v3 v3.8.0 // indirect github.com/felixge/httpsnoop v1.0.3 // indirect github.com/go-openapi/spec v0.20.4 // indirect + github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/golang-jwt/jwt v3.2.2+incompatible // indirect github.com/google/gnostic v0.5.7-v3refs // indirect + github.com/google/go-github/v41 v41.0.0 // indirect github.com/google/go-github/v45 v45.2.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.0 // indirect + github.com/gregdel/pushover v1.1.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/hashicorp/errwrap v1.0.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect @@ -119,12 +125,18 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/oklog/ulid v1.3.1 // indirect github.com/oliveagle/jsonpath v0.0.0-20180606110733-2e52cf6e6852 // indirect + github.com/opsgenie/opsgenie-go-sdk-v2 v1.0.5 // indirect github.com/pelletier/go-toml/v2 v2.0.5 // indirect github.com/pierrec/lz4/v4 v4.1.17 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/sanity-io/litter v1.5.5 // indirect + github.com/whilp/git-urls v0.0.0-20191001220047-6db9661140c0 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect github.com/xdg-go/stringprep v1.0.4 // indirect + gomodules.xyz/envconfig v1.3.1-0.20190308184047-426f31af0d45 // indirect + gomodules.xyz/notify v0.1.1 // indirect + gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect + gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df // indirect moul.io/http2curl/v2 v2.3.0 // indirect sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 // indirect ) diff --git a/go.sum b/go.sum index a58449f645..5fb85cfb55 100644 --- a/go.sum +++ b/go.sum @@ -114,6 +114,8 @@ github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q github.com/DataDog/datadog-go v2.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.5.0 h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo= github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/Jeffail/gabs v1.4.0 h1://5fYRRTq1edjfIrQGvdkcd22pkYUrHZ5YC/H2GJVAo= +github.com/Jeffail/gabs v1.4.0/go.mod h1:6xMvQMK4k33lb7GUUpaAPh6nKMmemQeg5d4gn7/bOXc= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= @@ -128,6 +130,8 @@ github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugX github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/PagerDuty/go-pagerduty v1.6.0 h1:am81SzvG5Pw+s3JZ5yEy6kGvsXXklTNRrGr3d8WKpsU= +github.com/PagerDuty/go-pagerduty v1.6.0/go.mod h1:7eaBLzsDpK7VUvU0SJ5mohczQkoWrrr5CjDaw5gh1as= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C67SkzkDfmQuVln04ygHj3vjZfd9FL+GmQQ= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= @@ -137,6 +141,8 @@ github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbt github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/RocketChat/Rocket.Chat.Go.SDK v0.0.0-20210112200207-10ab4d695d60 h1:prBTRx78AQnXzivNT9Crhu564W/zPPr3ibSlpT9xKcE= +github.com/RocketChat/Rocket.Chat.Go.SDK v0.0.0-20210112200207-10ab4d695d60/go.mod h1:rjP7sIipbZcagro/6TCk6X0ZeFT2eyudH5+fve/cbBA= github.com/Shopify/sarama v1.37.0 h1:WmHgUY/omLM9SCr9nhRwVhL7Kln+4RmVujW1ffZUDjs= github.com/Shopify/sarama v1.37.0/go.mod h1:smFYoF2zzSNsxF2V9MXRew2PrMfBGAJUJOA0Edd+v4s= github.com/Shopify/toxiproxy/v2 v2.5.0 h1:i4LPT+qrSlKNtQf5QliVjdP08GyAH8+BUIc9gT0eahc= @@ -172,9 +178,12 @@ github.com/apache/pulsar-client-go v0.8.1 h1:UZINLbH3I5YtNzqkju7g9vrl4CKrEgYSx2r github.com/apache/pulsar-client-go v0.8.1/go.mod h1:yJNcvn/IurarFDxwmoZvb2Ieylg630ifxeO/iXpk27I= github.com/apache/pulsar-client-go/oauth2 v0.0.0-20220120090717-25e59572242e h1:EqiJ0Xil8NmcXyupNqXV9oYDBeWntEIegxLahrTr8DY= github.com/apache/pulsar-client-go/oauth2 v0.0.0-20220120090717-25e59572242e/go.mod h1:Xee4tgYLFpYcPMcTfBYWE1uKRzeciodGTSEDMzsR6i8= +github.com/appscode/go v0.0.0-20191119085241-0887d8ec2ecc/go.mod h1:OawnOmAL4ZX3YaPdN+8HTNwBveT1jMsqP74moa9XUbE= github.com/ardielle/ardielle-go v1.5.2 h1:TilHTpHIQJ27R1Tl/iITBzMwiUGSlVfiVhwDNGM3Zj4= github.com/ardielle/ardielle-go v1.5.2/go.mod h1:I4hy1n795cUhaVt/ojz83SNVCYIGsAFAONtv2Dr7HUI= github.com/ardielle/ardielle-tools v1.5.4/go.mod h1:oZN+JRMnqGiIhrzkRN9l26Cej9dEx4jeNG6A+AdkShk= +github.com/argoproj/notifications-engine v0.3.1-0.20221203221941-490d98afd1d6 h1:b92Xft7MQv/SP56FW08zt5CMTE1rySH8UPDKOAgSzOM= +github.com/argoproj/notifications-engine v0.3.1-0.20221203221941-490d98afd1d6/go.mod h1:pgPU59KCsBOMhyw9amRWPoSuBmUWvx3Xsc5r0mUriLg= github.com/argoproj/pkg v0.13.6 h1:36WPD9MNYECHcO1/R1pj6teYspiK7uMQLCgLGft2abM= github.com/argoproj/pkg v0.13.6/go.mod h1:I698DoJBKuvNFaixh4vFl2C88cNIT1WS7KCbz5ewyF8= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= @@ -199,6 +208,7 @@ github.com/aws/aws-sdk-go v1.44.39/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4 github.com/aws/aws-sdk-go v1.44.162 h1:hKAd+X+/BLxVMzH+4zKxbQcQQGrk2UhFX0OTu1Mhon8= github.com/aws/aws-sdk-go v1.44.162/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/beefsack/go-rate v0.0.0-20220214233405-116f4ca011a0/go.mod h1:6YNgTHLutezwnBvyneBbwvB8C82y3dcoOj5EQJIdGXA= +github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= @@ -216,6 +226,8 @@ github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvF github.com/bmizerany/perks v0.0.0-20141205001514-d9a9656a3a4b/go.mod h1:ac9efd0D1fsDb3EJvhqgXRbFx7bs2wqZ10HQPeU8U/Q= github.com/bradleyfalzon/ghinstallation/v2 v2.1.0 h1:5+NghM1Zred9Z078QEZtm28G/kfDfZN/92gkDlLwGVA= github.com/bradleyfalzon/ghinstallation/v2 v2.1.0/go.mod h1:Xg3xPRN5Mcq6GDqeUVhFbjEWMb4JHCyWEeeBGEYQoTU= +github.com/bwmarrin/discordgo v0.19.0/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= +github.com/cenkalti/backoff v2.1.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= @@ -240,6 +252,8 @@ github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWH github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= +github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= +github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE= github.com/colinmarc/hdfs v1.1.4-0.20180802165501-48eb8d6c34a9 h1:N98Et5DzDoJ1IO1cd8cZkXXT81W5+CR5S8rDU2I0HnM= github.com/colinmarc/hdfs v1.1.4-0.20180802165501-48eb8d6c34a9/go.mod h1:0DumPviB681UcSuJErAbDIOx6SIaJWj463TymfZG02I= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= @@ -263,6 +277,7 @@ github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2 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/deckarep/golang-set v1.7.1/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= github.com/devigned/tab v0.1.1 h1:3mD6Kb1mUOYeLpJvTVSDwSg5ZsfSxfvxGRTxRsJsITA= github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= @@ -315,6 +330,9 @@ github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLi github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= +github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= +github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= github.com/fasthttp/websocket v1.4.3-rc.6 h1:omHqsl8j+KXpmzRjF8bmzOSYJ8GnS0E3efi1wYT+niY= github.com/fasthttp/websocket v1.4.3-rc.6/go.mod h1:43W9OM2T8FeXpCWMsBd9Cb7nE2CACNqNvCqQCoty/Lc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= @@ -499,6 +517,8 @@ github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP github.com/go-swagger/go-swagger v0.29.0 h1:z3YoZtLvS1Y8TE/PCat1VypcZxM0IgKLt0NvZxQyNl8= github.com/go-swagger/go-swagger v0.29.0/go.mod h1:Z4GJzI+bHKKkGB2Ji1rawpi3/ldXX8CkzGIa9HAC5EE= github.com/go-swagger/scan-repo-boundary v0.0.0-20180623220736-973b3573c013 h1:l9rI6sNaZgNC0LnF3MiE+qTmyBA/tZAg1rtyrGbUMK0= +github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1 h1:wG8n/XJQ07TmjbITcGiUaOtXxdrINDz1b0J1w0SzqDc= +github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1/go.mod h1:A2S0CWkNylc2phvKXWBBdD3K0iGnDBGbzRpISP2zBl8= github.com/go-test/deep v1.0.4 h1:u2CU3YKy9I2pmu9pX0eq50wCgjfGIt539SqR7FbHiho= github.com/go-test/deep v1.0.4/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= @@ -564,6 +584,7 @@ github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt 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 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.0.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -606,12 +627,15 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ 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/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github/v31 v31.0.0 h1:JJUxlP9lFK+ziXKimTCprajMApV1ecWD4NB6CCb0plo= github.com/google/go-github/v31 v31.0.0/go.mod h1:NQPZol8/1sMoWYGN2yaALIBytu17gAWfhbweiEed3pM= +github.com/google/go-github/v41 v41.0.0 h1:HseJrM2JFf2vfiZJ8anY2hqBjdfY1Vlj/K27ueww4gg= +github.com/google/go-github/v41 v41.0.0/go.mod h1:XgmCA5H323A9rtgExdTcnDkcqp6S30AVACCBDOonIxg= github.com/google/go-github/v45 v45.2.0 h1:5oRLszbrkvxDDqBCNj2hjDZMKmvexaZ1xw/FCD+K3FI= github.com/google/go-github/v45 v45.2.0/go.mod h1:FObaZJEDSTa/WGCzZ2Z3eoCDXWJKMenWWTrd8jrta28= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= @@ -653,6 +677,8 @@ github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsC github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gopackage/ddp v0.0.0-20170117053602-652027933df4 h1:4EZlYQIiyecYJlUbVkFXCXHz1QPhVXcHnQKAzBTPfQo= +github.com/gopackage/ddp v0.0.0-20170117053602-652027933df4/go.mod h1:lEO7XoHJ/xNRBCxrn4h/CEB67h0kW1B0t4ooP2yrjUA= github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 h1:l5lAOZEym3oK3SQ2HBHWsJUfbNBiTXJDeW2QDxw9AQ0= @@ -664,8 +690,11 @@ github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gregdel/pushover v1.1.0 h1:dwHyvrcpZCOS9V1fAnKPaGRRI5OC55cVaKhMybqNsKQ= +github.com/gregdel/pushover v1.1.0/go.mod h1:EcaO66Nn1StkpEm1iKtBTV3d2A16SoMsVER1PthX7to= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= @@ -696,6 +725,7 @@ github.com/hashicorp/go-msgpack v1.1.5/go.mod h1:gWVc3sv/wbDmR3rQsj1CAktEZzoz1YN github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-retryablehttp v0.5.1/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-retryablehttp v0.7.1 h1:sUiuQAnLlbvmExtFQs72iFW/HXeUn8Z1aJLQ4LJJbTQ= github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= @@ -721,6 +751,7 @@ github.com/hashicorp/raft v1.3.6/go.mod h1:4Ak7FSPnuvmb0GV6vgIAJ4vYT4bek9bb6Q+7H github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hokaccha/go-prettyjson v0.0.0-20190818114111-108c894c2c0e h1:0aewS5NTyxftZHSnFaJmWE5oCCrj4DyEXkAiMa1iZJM= github.com/hokaccha/go-prettyjson v0.0.0-20190818114111-108c894c2c0e/go.mod h1:pFlLw2CfqZiIBOx6BuCeRLCrfxBJipTY0nIOF/VbGcI= +github.com/howeyc/gopass v0.0.0-20170109162249-bf9dde6d0d2c/go.mod h1:lADxMC39cJJqL93Duh1xhAs4I2Zs8mKS89XWXFGp9cs= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.3.3 h1:/Gcsuc1x8JVbJ9/rlye4xZnVAbEkGauT8lbebqcQws4= github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= @@ -743,6 +774,7 @@ github.com/itchyny/timefmt-go v0.1.5 h1:G0INE2la8S6ru/ZI5JecgyzbbJNs5lG1RcBqa7Jm github.com/itchyny/timefmt-go v0.1.5/go.mod h1:nEP7L+2YmAbT2kZ2HfSs1d8Xtw9LY8D2stDBckWakZ8= github.com/jawher/mow.cli v1.0.4/go.mod h1:5hQj2V8g+qYmLUVWqu4Wuja1pI57M83EChYLVZ0sMKk= github.com/jawher/mow.cli v1.2.0/go.mod h1:y+pcA3jBAdo/GIZx/0rFjw/K2bVEODP9rfZOfaiq8Ko= +github.com/jaytaylor/html2text v0.0.0-20190408195923-01ec452cbe43/go.mod h1:CVKlgaMiht+LXvHG173ujK6JUhZXKb2u/BQtjPDIvyk= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8= @@ -842,10 +874,13 @@ github.com/linkedin/goavro/v2 v2.9.8 h1:jN50elxBsGBDGVDEKqUlDuU1cFwJ11K/yrJCBMe/ github.com/linkedin/goavro/v2 v2.9.8/go.mod h1:UgQUb2N/pmueQYH9bfqFioWxzYCZXSfF8Jw03O5sjqA= github.com/lucasb-eyer/go-colorful v1.0.2/go.mod h1:0MS4r+7BZKSJ5mw4/S5MPN+qHFF1fYclkSPilDOKW0s= github.com/lucasb-eyer/go-colorful v1.0.3/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= +github.com/lusis/go-slackbot v0.0.0-20180109053408-401027ccfef5/go.mod h1:c2mYKRyMb1BPkO5St0c/ps62L4S0W2NAkaTXj9qEI+0= +github.com/lusis/slack-test v0.0.0-20190426140909-c40012f20018/go.mod h1:sFlOUpQL1YcjhFVXhg1CG8ZASEs/Mf1oVb6H75JL/zg= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/mailgun/mailgun-go v2.0.0+incompatible/go.mod h1:NWTyU+O4aczg/nsGhQnvHL6v2n5Gy6Sv5tNDVvC6FbU= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -932,6 +967,7 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= +github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= @@ -966,6 +1002,7 @@ github.com/nats-io/stan.go v0.10.3/go.mod h1:Cgf5zk6kKpOCqqUIJeuBz6ZDz9osT791VhS github.com/nicksnyder/go-i18n v1.10.1-0.20190510212457-b280125b035a h1:WsVgYECoTBctNmskVv/BZ8gh/TWP1xJf61PSW9HBdRY= github.com/nicksnyder/go-i18n v1.10.1-0.20190510212457-b280125b035a/go.mod h1:e4Di5xjP9oTVrC6y3C7C0HoSYXjSbhh/dU0eUV32nB4= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nlopes/slack v0.5.0/go.mod h1:jVI4BBK3lSktibKahxBF74txcK2vyvkza1z/+rRnVAM= github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= github.com/nsqio/go-nsq v1.1.0 h1:PQg+xxiUjA7V+TLdXw7nVrJ5Jbl3sN86EhGCQj4+FYE= github.com/nsqio/go-nsq v1.1.0/go.mod h1:vKq36oyeVXgsS5Q8YEO7WghqidAVXQlcFxzQbQTuDEY= @@ -973,22 +1010,29 @@ github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/oliveagle/jsonpath v0.0.0-20180606110733-2e52cf6e6852 h1:Yl0tPBa8QPjGmesFh1D0rDy+q1Twx6FyU7VWHi8wZbI= github.com/oliveagle/jsonpath v0.0.0-20180606110733-2e52cf6e6852/go.mod h1:eqOVx5Vwu4gd2mmMZvVZsgIqNSaW3xxRThUJ0k/TPk4= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/ginkgo v1.14.1/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo/v2 v2.1.4 h1:GNapqRSid3zijZ9H77KrgVG4/8KqiyRsxcSxe+7ApXY= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= 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.10.2/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.19.0 h1:4ieX6qQjPP/BfC3mpsAtIGGlxTWPeA3Inl/7DtXw1tw= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= +github.com/opsgenie/opsgenie-go-sdk-v2 v1.0.5 h1:AnS8ZCC5dle8P4X4FZ+IOlX9v0jAkCMiZDIzRnYwBbs= +github.com/opsgenie/opsgenie-go-sdk-v2 v1.0.5/go.mod h1:f0ezb0R/mrB9Hpm5RrIS6EX3ydjsR2nAB88nYYXZcNY= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= @@ -1109,11 +1153,14 @@ github.com/slack-go/slack v0.12.0/go.mod h1:hlGi5oXA+Gt+yWTPP0plCdRKmjsDxecdHxYQ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= 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 v0.0.0-20190731233626-505e41936337/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= 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/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= +github.com/sony/sonyflake v1.0.0 h1:MpU6Ro7tfXwgn2l5eluf9xQvQJDROTBImNCfRXn/YeM= +github.com/sony/sonyflake v1.0.0/go.mod h1:Jv3cfhf/UFtolOTTRd3q4Nl6ENqM+KfyZ5PseKfZGF4= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -1143,6 +1190,7 @@ github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5q github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/spf13/viper v1.14.0 h1:Rg7d3Lo706X9tHsJMUjdiwMpHB7W8WnSVOssIY+JElU= github.com/spf13/viper v1.14.0/go.mod h1:WT//axPky3FdvXHzGw33dNdXXXfFQqmEalje+egj8As= +github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf/go.mod h1:RJID2RhlZKId02nZ62WenDCkgHFerpIOmW0iT7GKmXM= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= 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= @@ -1192,6 +1240,8 @@ github.com/valyala/fasthttp v1.34.0/go.mod h1:epZA5N+7pY6ZaEKRmstzOuYJx9HI8DI1oa github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4/go.mod h1:50wTf68f99/Zt14pr046Tgt3Lp2vLyFZKzbFXTOabXw= github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= +github.com/whilp/git-urls v0.0.0-20191001220047-6db9661140c0 h1:qqllXPzXh+So+mmANlX/gCJrgo+1kQyshMoQ+NASzm0= +github.com/whilp/git-urls v0.0.0-20191001220047-6db9661140c0/go.mod h1:2rx5KE5FLD0HRfkkpyn8JwbVLBdhgeiOb2D2D9LLKM4= github.com/xanzy/go-gitlab v0.76.0 h1:mkmuB27RDVZY/iXR61pEUfIqJ15Iivfu1kc3KZtBICI= github.com/xanzy/go-gitlab v0.76.0/go.mod h1:d/a0vswScO7Agg1CZNz15Ic6SSvBG9vfw8egL99t4kA= github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= @@ -1299,11 +1349,13 @@ go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180910181607-0e37d006457b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/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-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/crypto v0.0.0-20190422183909-d864b10871cd/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -1389,6 +1441,7 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn 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-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190607181551-461777fb6f67/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 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= @@ -1412,6 +1465,7 @@ golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/ 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-20200904194848-62affa334b73/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= @@ -1487,6 +1541,7 @@ golang.org/x/sys v0.0.0-20181019160139-8e24a49d80f8/go.mod h1:STP8DvDyc/dI5b8T5h 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-20190124100055-b90733256f2e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1571,6 +1626,7 @@ golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220307203707-22a9840ba4d7/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220406155245-289d7a0edf71/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-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1690,8 +1746,13 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T 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/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gomodules.xyz/envconfig v1.3.1-0.20190308184047-426f31af0d45 h1:juzzlx91nWAOsHuOVfXZPMXHtJEKouZvY9bBbwlOeYs= +gomodules.xyz/envconfig v1.3.1-0.20190308184047-426f31af0d45/go.mod h1:41y72mzHT7+jFNgyBpJRrZWuZJcLmLrTpq6iGgOFJMQ= gomodules.xyz/jsonpatch/v2 v2.2.0 h1:4pT439QV83L+G9FkcCriY6EkpcK6r6bK+A5FBUMI7qY= gomodules.xyz/jsonpatch/v2 v2.2.0/go.mod h1:WXp+iVDkoLQqPudfQ9GBlwB2eZ5DKOnjQZCYdOS8GPY= +gomodules.xyz/notify v0.1.1 h1:1tTuoyswmPvzqPCTEDQK8SZ3ukCxLsonAAwst2+y1a0= +gomodules.xyz/notify v0.1.1/go.mod h1:QgQyU4xEA/plJcDeT66J2Go2V7U4c0pD9wjo7HfFil4= +gomodules.xyz/version v0.1.0/go.mod h1:Y8xuV02mL/45psyPKG3NCVOwvAOy6T5Kx0l3rCjKSjU= 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= @@ -1814,6 +1875,8 @@ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk= +gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= 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/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1822,6 +1885,8 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntN gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= 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/gomail.v2 v2.0.0-20160411212932-81ebce5c23df h1:n7WqCuqOuCbNr617RXOY0AWRXxgwEyPp2z+p0+hgMuE= +gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= diff --git a/pkg/apis/sensor/v1alpha1/generated.pb.go b/pkg/apis/sensor/v1alpha1/generated.pb.go index 434cb5220a..0145d60df0 100644 --- a/pkg/apis/sensor/v1alpha1/generated.pb.go +++ b/pkg/apis/sensor/v1alpha1/generated.pb.go @@ -944,10 +944,66 @@ func (m *SensorStatus) XXX_DiscardUnknown() { var xxx_messageInfo_SensorStatus proto.InternalMessageInfo +func (m *SlackSender) Reset() { *m = SlackSender{} } +func (*SlackSender) ProtoMessage() {} +func (*SlackSender) Descriptor() ([]byte, []int) { + return fileDescriptor_6c4bded897df1f16, []int{32} +} +func (m *SlackSender) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SlackSender) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *SlackSender) XXX_Merge(src proto.Message) { + xxx_messageInfo_SlackSender.Merge(m, src) +} +func (m *SlackSender) XXX_Size() int { + return m.Size() +} +func (m *SlackSender) XXX_DiscardUnknown() { + xxx_messageInfo_SlackSender.DiscardUnknown(m) +} + +var xxx_messageInfo_SlackSender proto.InternalMessageInfo + +func (m *SlackThread) Reset() { *m = SlackThread{} } +func (*SlackThread) ProtoMessage() {} +func (*SlackThread) Descriptor() ([]byte, []int) { + return fileDescriptor_6c4bded897df1f16, []int{33} +} +func (m *SlackThread) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SlackThread) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *SlackThread) XXX_Merge(src proto.Message) { + xxx_messageInfo_SlackThread.Merge(m, src) +} +func (m *SlackThread) XXX_Size() int { + return m.Size() +} +func (m *SlackThread) XXX_DiscardUnknown() { + xxx_messageInfo_SlackThread.DiscardUnknown(m) +} + +var xxx_messageInfo_SlackThread proto.InternalMessageInfo + func (m *SlackTrigger) Reset() { *m = SlackTrigger{} } func (*SlackTrigger) ProtoMessage() {} func (*SlackTrigger) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{32} + return fileDescriptor_6c4bded897df1f16, []int{34} } func (m *SlackTrigger) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -975,7 +1031,7 @@ var xxx_messageInfo_SlackTrigger proto.InternalMessageInfo func (m *StandardK8STrigger) Reset() { *m = StandardK8STrigger{} } func (*StandardK8STrigger) ProtoMessage() {} func (*StandardK8STrigger) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{33} + return fileDescriptor_6c4bded897df1f16, []int{35} } func (m *StandardK8STrigger) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1003,7 +1059,7 @@ var xxx_messageInfo_StandardK8STrigger proto.InternalMessageInfo func (m *StatusPolicy) Reset() { *m = StatusPolicy{} } func (*StatusPolicy) ProtoMessage() {} func (*StatusPolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{34} + return fileDescriptor_6c4bded897df1f16, []int{36} } func (m *StatusPolicy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1031,7 +1087,7 @@ var xxx_messageInfo_StatusPolicy proto.InternalMessageInfo func (m *Template) Reset() { *m = Template{} } func (*Template) ProtoMessage() {} func (*Template) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{35} + return fileDescriptor_6c4bded897df1f16, []int{37} } func (m *Template) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1059,7 +1115,7 @@ var xxx_messageInfo_Template proto.InternalMessageInfo func (m *TimeFilter) Reset() { *m = TimeFilter{} } func (*TimeFilter) ProtoMessage() {} func (*TimeFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{36} + return fileDescriptor_6c4bded897df1f16, []int{38} } func (m *TimeFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1087,7 +1143,7 @@ var xxx_messageInfo_TimeFilter proto.InternalMessageInfo func (m *Trigger) Reset() { *m = Trigger{} } func (*Trigger) ProtoMessage() {} func (*Trigger) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{37} + return fileDescriptor_6c4bded897df1f16, []int{39} } func (m *Trigger) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1115,7 +1171,7 @@ var xxx_messageInfo_Trigger proto.InternalMessageInfo func (m *TriggerParameter) Reset() { *m = TriggerParameter{} } func (*TriggerParameter) ProtoMessage() {} func (*TriggerParameter) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{38} + return fileDescriptor_6c4bded897df1f16, []int{40} } func (m *TriggerParameter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1143,7 +1199,7 @@ var xxx_messageInfo_TriggerParameter proto.InternalMessageInfo func (m *TriggerParameterSource) Reset() { *m = TriggerParameterSource{} } func (*TriggerParameterSource) ProtoMessage() {} func (*TriggerParameterSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{39} + return fileDescriptor_6c4bded897df1f16, []int{41} } func (m *TriggerParameterSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1171,7 +1227,7 @@ var xxx_messageInfo_TriggerParameterSource proto.InternalMessageInfo func (m *TriggerPolicy) Reset() { *m = TriggerPolicy{} } func (*TriggerPolicy) ProtoMessage() {} func (*TriggerPolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{40} + return fileDescriptor_6c4bded897df1f16, []int{42} } func (m *TriggerPolicy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1199,7 +1255,7 @@ var xxx_messageInfo_TriggerPolicy proto.InternalMessageInfo func (m *TriggerTemplate) Reset() { *m = TriggerTemplate{} } func (*TriggerTemplate) ProtoMessage() {} func (*TriggerTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{41} + return fileDescriptor_6c4bded897df1f16, []int{43} } func (m *TriggerTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1227,7 +1283,7 @@ var xxx_messageInfo_TriggerTemplate proto.InternalMessageInfo func (m *URLArtifact) Reset() { *m = URLArtifact{} } func (*URLArtifact) ProtoMessage() {} func (*URLArtifact) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{42} + return fileDescriptor_6c4bded897df1f16, []int{44} } func (m *URLArtifact) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1289,6 +1345,8 @@ func init() { proto.RegisterType((*SensorSpec)(nil), "github.com.argoproj.argo_events.pkg.apis.sensor.v1alpha1.SensorSpec") proto.RegisterMapType((map[string]string)(nil), "github.com.argoproj.argo_events.pkg.apis.sensor.v1alpha1.SensorSpec.LoggingFieldsEntry") proto.RegisterType((*SensorStatus)(nil), "github.com.argoproj.argo_events.pkg.apis.sensor.v1alpha1.SensorStatus") + proto.RegisterType((*SlackSender)(nil), "github.com.argoproj.argo_events.pkg.apis.sensor.v1alpha1.SlackSender") + proto.RegisterType((*SlackThread)(nil), "github.com.argoproj.argo_events.pkg.apis.sensor.v1alpha1.SlackThread") proto.RegisterType((*SlackTrigger)(nil), "github.com.argoproj.argo_events.pkg.apis.sensor.v1alpha1.SlackTrigger") proto.RegisterType((*StandardK8STrigger)(nil), "github.com.argoproj.argo_events.pkg.apis.sensor.v1alpha1.StandardK8STrigger") proto.RegisterType((*StatusPolicy)(nil), "github.com.argoproj.argo_events.pkg.apis.sensor.v1alpha1.StatusPolicy") @@ -1308,291 +1366,302 @@ func init() { } var fileDescriptor_6c4bded897df1f16 = []byte{ - // 4537 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x3c, 0x4b, 0x8c, 0x63, 0xc7, - 0x71, 0x4b, 0x0e, 0x39, 0x43, 0xd6, 0xcc, 0xec, 0xcc, 0xf6, 0x6a, 0x25, 0x7a, 0x2c, 0x0d, 0x17, - 0x34, 0xa2, 0xac, 0x0d, 0x9b, 0x23, 0xad, 0x92, 0x78, 0xad, 0x20, 0xb6, 0x38, 0x9c, 0x19, 0xed, - 0x87, 0xbb, 0x3b, 0xaa, 0xc7, 0x91, 0x90, 0x0f, 0x20, 0xbd, 0x79, 0x6c, 0x92, 0x6f, 0xe7, 0xf1, - 0x3d, 0x6e, 0xf7, 0xe3, 0xac, 0xc6, 0x80, 0x13, 0x27, 0x46, 0x02, 0x18, 0x01, 0xe4, 0x1c, 0x7c, - 0xc8, 0xc9, 0xc8, 0x25, 0x87, 0x20, 0x39, 0x04, 0xc8, 0x31, 0x37, 0x9f, 0x74, 0x54, 0x6e, 0x3e, - 0x24, 0x44, 0x44, 0x9f, 0x72, 0x30, 0x12, 0x9f, 0x02, 0xec, 0x29, 0xe8, 0xdf, 0xfb, 0x91, 0xab, - 0x9d, 0x59, 0xae, 0x66, 0x03, 0xf8, 0xc6, 0x57, 0x55, 0x5d, 0xd5, 0x5d, 0x5d, 0x5d, 0x5d, 0x55, - 0xdd, 0x4d, 0xb8, 0xd9, 0x73, 0xc3, 0xfe, 0xe8, 0xb0, 0xee, 0x04, 0x83, 0x2d, 0x9b, 0xf5, 0x82, - 0x21, 0x0b, 0x1e, 0xc8, 0x1f, 0xdf, 0xa2, 0xc7, 0xd4, 0x0f, 0xf9, 0xd6, 0xf0, 0xa8, 0xb7, 0x65, - 0x0f, 0x5d, 0xbe, 0xc5, 0xa9, 0xcf, 0x03, 0xb6, 0x75, 0xfc, 0xa6, 0xed, 0x0d, 0xfb, 0xf6, 0x9b, - 0x5b, 0x3d, 0xea, 0x53, 0x66, 0x87, 0xb4, 0x53, 0x1f, 0xb2, 0x20, 0x0c, 0xc8, 0x8d, 0x98, 0x53, - 0xdd, 0x70, 0x92, 0x3f, 0x3e, 0x54, 0x9c, 0xea, 0xc3, 0xa3, 0x5e, 0x5d, 0x70, 0xaa, 0x2b, 0x4e, - 0x75, 0xc3, 0x69, 0xe3, 0x7b, 0xa7, 0xee, 0x83, 0x13, 0x0c, 0x06, 0x81, 0x9f, 0x15, 0xbd, 0xf1, - 0xad, 0x04, 0x83, 0x5e, 0xd0, 0x0b, 0xb6, 0x24, 0xf8, 0x70, 0xd4, 0x95, 0x5f, 0xf2, 0x43, 0xfe, - 0xd2, 0xe4, 0xb5, 0xa3, 0x1b, 0xbc, 0xee, 0x06, 0x82, 0xe5, 0x96, 0x13, 0x30, 0xba, 0x75, 0x3c, - 0x35, 0x9a, 0x8d, 0xdf, 0x89, 0x69, 0x06, 0xb6, 0xd3, 0x77, 0x7d, 0xca, 0x4e, 0xe2, 0x7e, 0x0c, - 0x68, 0x68, 0xcf, 0x6a, 0xb5, 0xf5, 0xa4, 0x56, 0x6c, 0xe4, 0x87, 0xee, 0x80, 0x4e, 0x35, 0xf8, - 0xbd, 0xa7, 0x35, 0xe0, 0x4e, 0x9f, 0x0e, 0xec, 0x6c, 0xbb, 0xda, 0xe3, 0x02, 0xac, 0x37, 0x3e, - 0xb0, 0x5a, 0xf6, 0xe0, 0xb0, 0x63, 0xb7, 0x99, 0xdb, 0xeb, 0x51, 0x46, 0x6e, 0xc0, 0x4a, 0x77, - 0xe4, 0x3b, 0xa1, 0x1b, 0xf8, 0xf7, 0xec, 0x01, 0xad, 0xe4, 0xae, 0xe6, 0xae, 0x95, 0xb7, 0x5f, - 0xfa, 0x74, 0x5c, 0xbd, 0x30, 0x19, 0x57, 0x57, 0xf6, 0x12, 0x38, 0x4c, 0x51, 0x12, 0x84, 0xb2, - 0xed, 0x38, 0x94, 0xf3, 0x3b, 0xf4, 0xa4, 0x92, 0xbf, 0x9a, 0xbb, 0xb6, 0x7c, 0xfd, 0xb7, 0xea, - 0xaa, 0x6b, 0x62, 0xca, 0xea, 0x42, 0x4b, 0xf5, 0xe3, 0x37, 0xeb, 0x16, 0x75, 0x18, 0x0d, 0xef, - 0xd0, 0x13, 0x8b, 0x7a, 0xd4, 0x09, 0x03, 0xb6, 0xbd, 0x3a, 0x19, 0x57, 0xcb, 0x0d, 0xd3, 0x16, - 0x63, 0x36, 0x82, 0x27, 0x37, 0xe4, 0x95, 0x85, 0x33, 0xf3, 0x8c, 0xc0, 0x18, 0xb3, 0x21, 0xaf, - 0xc3, 0x22, 0xa3, 0x3d, 0x37, 0xf0, 0x2b, 0x05, 0x39, 0xb6, 0x8b, 0x7a, 0x6c, 0x8b, 0x28, 0xa1, - 0xa8, 0xb1, 0x64, 0x04, 0x4b, 0x43, 0xfb, 0xc4, 0x0b, 0xec, 0x4e, 0xa5, 0x78, 0x75, 0xe1, 0xda, - 0xf2, 0xf5, 0xdb, 0xf5, 0x67, 0xb5, 0xce, 0xba, 0xd6, 0xee, 0xbe, 0xcd, 0xec, 0x01, 0x0d, 0x29, - 0xdb, 0x5e, 0xd3, 0x42, 0x97, 0xf6, 0x95, 0x08, 0x34, 0xb2, 0xc8, 0x9f, 0x02, 0x0c, 0x0d, 0x19, - 0xaf, 0x2c, 0x3e, 0x77, 0xc9, 0x44, 0x4b, 0x86, 0x08, 0xc4, 0x31, 0x21, 0x91, 0xbc, 0x0d, 0x17, - 0x5d, 0xff, 0x38, 0x70, 0x6c, 0x31, 0xb1, 0xed, 0x93, 0x21, 0xad, 0x2c, 0x49, 0x35, 0x91, 0xc9, - 0xb8, 0x7a, 0xf1, 0x56, 0x0a, 0x83, 0x19, 0x4a, 0xf2, 0x75, 0x58, 0x62, 0x81, 0x47, 0x1b, 0x78, - 0xaf, 0x52, 0x92, 0x8d, 0xa2, 0x61, 0xa2, 0x02, 0xa3, 0xc1, 0xd7, 0x7e, 0x95, 0x87, 0xcb, 0x0d, - 0xd6, 0x0b, 0x3e, 0x08, 0xd8, 0x51, 0xd7, 0x0b, 0x1e, 0x19, 0xfb, 0xf3, 0x61, 0x91, 0x07, 0x23, - 0xe6, 0x28, 0xcb, 0x9b, 0x6b, 0xe8, 0x0d, 0x16, 0xba, 0x5d, 0xdb, 0x09, 0x5b, 0xba, 0x8b, 0xdb, - 0x20, 0x66, 0xd9, 0x92, 0xdc, 0x51, 0x4b, 0x21, 0x37, 0xa1, 0x1c, 0x0c, 0xc5, 0xb2, 0x10, 0x06, - 0x91, 0x97, 0x9d, 0xfe, 0x86, 0xee, 0x74, 0xf9, 0xbe, 0x41, 0x3c, 0x1e, 0x57, 0xaf, 0x24, 0x3b, - 0x1b, 0x21, 0x30, 0x6e, 0x9c, 0x99, 0xb8, 0x85, 0x73, 0x9f, 0xb8, 0x57, 0xa1, 0x60, 0xb3, 0x1e, - 0xaf, 0x14, 0xae, 0x2e, 0x5c, 0x2b, 0x6f, 0x97, 0x26, 0xe3, 0x6a, 0xa1, 0xc1, 0x7a, 0x1c, 0x25, - 0xb4, 0xf6, 0x6b, 0xb1, 0xd8, 0x33, 0x0a, 0x21, 0x16, 0xe4, 0xf9, 0x5b, 0x5a, 0xd1, 0xbf, 0x7f, - 0xfa, 0xae, 0x2a, 0x0f, 0x5a, 0xb7, 0xde, 0x32, 0x0c, 0xb7, 0x17, 0x27, 0xe3, 0x6a, 0xde, 0x7a, - 0x0b, 0xf3, 0xfc, 0x2d, 0x52, 0x83, 0x45, 0xd7, 0xf7, 0x5c, 0x9f, 0x6a, 0x75, 0x4a, 0xad, 0xdf, - 0x92, 0x10, 0xd4, 0x18, 0xd2, 0x81, 0x42, 0xd7, 0xf5, 0xa8, 0x5e, 0xd2, 0x7b, 0xcf, 0xae, 0xa5, - 0x3d, 0xd7, 0xa3, 0x51, 0x2f, 0xe4, 0x98, 0x05, 0x04, 0x25, 0x77, 0xf2, 0x11, 0x2c, 0x8c, 0x98, - 0x27, 0x97, 0xf9, 0xf2, 0xf5, 0xdd, 0x67, 0x17, 0x72, 0x80, 0xad, 0x48, 0xc6, 0xd2, 0x64, 0x5c, - 0x5d, 0x38, 0xc0, 0x16, 0x0a, 0xd6, 0xe4, 0x00, 0xca, 0x4e, 0xe0, 0x77, 0xdd, 0xde, 0xc0, 0x1e, - 0x56, 0x8a, 0x52, 0xce, 0xb5, 0x59, 0xfe, 0xa9, 0x29, 0x89, 0xee, 0xda, 0xc3, 0x29, 0x17, 0xd5, - 0x34, 0xcd, 0x31, 0xe6, 0x24, 0x3a, 0xde, 0x73, 0xc3, 0xca, 0xe2, 0xbc, 0x1d, 0x7f, 0xd7, 0x0d, - 0xd3, 0x1d, 0x7f, 0xd7, 0x0d, 0x51, 0xb0, 0x26, 0x0e, 0x94, 0x18, 0xd5, 0x0b, 0x6d, 0x49, 0x8a, - 0xf9, 0xce, 0x99, 0xe7, 0x1f, 0x35, 0x83, 0xed, 0x95, 0xc9, 0xb8, 0x5a, 0x32, 0x5f, 0x18, 0x31, - 0xae, 0xfd, 0x4b, 0x01, 0xae, 0x34, 0xbe, 0x3f, 0x62, 0x74, 0x57, 0x30, 0xb8, 0x39, 0x3a, 0xe4, - 0x66, 0x95, 0x5f, 0x85, 0x42, 0xf7, 0x61, 0xc7, 0xd7, 0xbb, 0xcb, 0x8a, 0xb6, 0xec, 0xc2, 0xde, - 0x7b, 0x3b, 0xf7, 0x50, 0x62, 0x84, 0x2b, 0xe9, 0x8f, 0x0e, 0xe5, 0x16, 0x94, 0x4f, 0xbb, 0x92, - 0x9b, 0x0a, 0x8c, 0x06, 0x4f, 0x86, 0x70, 0x99, 0xf7, 0x6d, 0x46, 0x3b, 0xd1, 0x16, 0x22, 0x9b, - 0x9d, 0x69, 0xbb, 0x78, 0x65, 0x32, 0xae, 0x5e, 0xb6, 0xa6, 0xb9, 0xe0, 0x2c, 0xd6, 0xa4, 0x03, - 0x6b, 0x19, 0xb0, 0x36, 0xb2, 0x53, 0x4a, 0xbb, 0x3c, 0x19, 0x57, 0xd7, 0x32, 0xd2, 0x30, 0xcb, - 0xf2, 0x37, 0x74, 0x03, 0xaa, 0xfd, 0x6f, 0x01, 0x5e, 0x96, 0x56, 0x63, 0x51, 0x76, 0xec, 0x3a, - 0x74, 0x7b, 0x14, 0x99, 0x4d, 0x0f, 0xd6, 0x9d, 0xc0, 0xf7, 0xa9, 0x0c, 0x3a, 0xac, 0x90, 0xb9, - 0x7e, 0x4f, 0x7b, 0xaf, 0x53, 0x2a, 0xfe, 0xa5, 0xc9, 0xb8, 0xba, 0xde, 0xcc, 0xb0, 0xc0, 0x29, - 0xa6, 0x64, 0x0b, 0xca, 0x0f, 0x47, 0x74, 0x44, 0x13, 0xf6, 0x77, 0xc9, 0xec, 0x0a, 0xef, 0x19, - 0x04, 0xc6, 0x34, 0xa2, 0x41, 0x18, 0x0c, 0x5d, 0x27, 0xb2, 0xbc, 0x44, 0x83, 0xb6, 0x41, 0x60, - 0x4c, 0x43, 0x76, 0x60, 0x9d, 0x8f, 0x0e, 0xb9, 0xc3, 0xdc, 0x61, 0x14, 0x6b, 0xa9, 0x78, 0xa4, - 0xa2, 0xdb, 0xad, 0x5b, 0x19, 0x3c, 0x4e, 0xb5, 0x20, 0x07, 0xb0, 0x10, 0x7a, 0x5c, 0x7b, 0x9e, - 0xb7, 0xcf, 0xbc, 0x82, 0xdb, 0x2d, 0x4b, 0xf9, 0x1f, 0xe5, 0x1d, 0xda, 0x2d, 0x0b, 0x05, 0xbf, - 0xa4, 0xe5, 0x2d, 0xbe, 0x30, 0xcb, 0x5b, 0x3a, 0x77, 0xcb, 0xeb, 0xc1, 0x95, 0x66, 0xe0, 0x77, - 0x5c, 0xa1, 0x5e, 0x8e, 0x94, 0xd3, 0x70, 0xfb, 0xa4, 0xed, 0x0e, 0xa8, 0x70, 0x57, 0x0e, 0x0b, - 0xa6, 0xdc, 0x55, 0x93, 0x05, 0x3e, 0x4a, 0x0c, 0xf9, 0x26, 0x94, 0x44, 0xa8, 0xfd, 0xfd, 0x20, - 0xda, 0xf6, 0xd6, 0x35, 0x55, 0xa9, 0xad, 0xe1, 0x18, 0x51, 0xd4, 0x3e, 0xc9, 0xc1, 0x2b, 0x19, - 0x49, 0x4d, 0xe6, 0x86, 0x94, 0xb9, 0x36, 0xe1, 0xb0, 0x78, 0x28, 0xa5, 0x6a, 0xcb, 0xbe, 0xff, - 0xec, 0x0a, 0x98, 0x39, 0x18, 0xb5, 0x1f, 0xab, 0xdf, 0xa8, 0x45, 0xd5, 0xfe, 0xb9, 0x08, 0xab, - 0xcd, 0x11, 0x0f, 0x83, 0x81, 0x59, 0x6a, 0x5b, 0x22, 0xf2, 0x66, 0xc7, 0x94, 0x1d, 0x60, 0x4b, - 0x8f, 0x3b, 0x32, 0x68, 0xcb, 0x20, 0x30, 0xa6, 0x11, 0x61, 0x35, 0xa7, 0xce, 0x88, 0xa9, 0xf1, - 0x97, 0xe2, 0xb0, 0xda, 0x92, 0x50, 0xd4, 0x58, 0x72, 0x00, 0xe0, 0x50, 0x16, 0xaa, 0xb5, 0x79, - 0x36, 0x27, 0x7d, 0x51, 0xcc, 0x5d, 0x33, 0x6a, 0x8c, 0x09, 0x46, 0xe4, 0x36, 0x10, 0xd5, 0x17, - 0xb1, 0x2e, 0xee, 0x1f, 0x53, 0xc6, 0xdc, 0x8e, 0x59, 0x51, 0x1b, 0xba, 0x2b, 0xc4, 0x9a, 0xa2, - 0xc0, 0x19, 0xad, 0x08, 0x87, 0x02, 0x1f, 0x52, 0x47, 0x7b, 0xdd, 0xf7, 0xe6, 0x98, 0x80, 0xa4, - 0x4a, 0xeb, 0xd6, 0x90, 0x3a, 0xbb, 0x7e, 0xc8, 0x4e, 0x62, 0x0b, 0x12, 0x20, 0x94, 0xc2, 0x5e, - 0x78, 0xdc, 0x9f, 0x58, 0xf3, 0x4b, 0xe7, 0xb7, 0xe6, 0x37, 0xbe, 0x0d, 0xe5, 0x48, 0x2f, 0x64, - 0x1d, 0x16, 0x8e, 0xe8, 0x89, 0x32, 0x37, 0x14, 0x3f, 0xc9, 0x4b, 0x50, 0x3c, 0xb6, 0xbd, 0x91, - 0x5e, 0x54, 0xa8, 0x3e, 0xde, 0xce, 0xdf, 0xc8, 0xd5, 0x7e, 0x95, 0x03, 0xd8, 0xb1, 0x43, 0x7b, - 0xcf, 0xf5, 0x42, 0x15, 0x51, 0x0c, 0xed, 0xb0, 0x9f, 0x5d, 0xa2, 0xfb, 0x76, 0xd8, 0x47, 0x89, - 0x21, 0xdf, 0x84, 0x42, 0x28, 0xd2, 0x99, 0x7c, 0xca, 0xcb, 0x16, 0x44, 0xe2, 0xf2, 0x78, 0x5c, - 0x2d, 0xdd, 0xb6, 0xee, 0xdf, 0x93, 0x49, 0x8d, 0xa4, 0x22, 0x55, 0x23, 0x78, 0x41, 0x86, 0xd3, - 0xe5, 0xc9, 0xb8, 0x5a, 0x7c, 0x5f, 0x00, 0x74, 0x1f, 0xc8, 0x3b, 0x00, 0x4e, 0x30, 0x10, 0x0a, - 0x0c, 0x03, 0xa6, 0x0d, 0xed, 0xaa, 0xd1, 0x71, 0x33, 0xc2, 0x3c, 0x4e, 0x7d, 0x61, 0xa2, 0x8d, - 0xf4, 0x19, 0x74, 0x30, 0xf4, 0xec, 0x90, 0x4a, 0x0f, 0x9e, 0xf4, 0x19, 0x1a, 0x8e, 0x11, 0x45, - 0xed, 0x67, 0x39, 0x28, 0xca, 0x38, 0x8a, 0x0c, 0x60, 0xc9, 0x09, 0xfc, 0x90, 0x7e, 0x1c, 0x6a, - 0x17, 0x31, 0x47, 0xfc, 0x2c, 0x39, 0x36, 0x15, 0xb7, 0xed, 0x65, 0x31, 0x43, 0xfa, 0x03, 0x8d, - 0x0c, 0x91, 0x57, 0x74, 0xec, 0xd0, 0x96, 0x7a, 0x5b, 0x51, 0x31, 0xb6, 0xd0, 0x3b, 0x4a, 0xe8, - 0xdb, 0xa5, 0xbf, 0xfd, 0xbb, 0xea, 0x85, 0x1f, 0xfe, 0xfb, 0xd5, 0x0b, 0xb5, 0x5f, 0xe7, 0x61, - 0x25, 0xc9, 0x8e, 0x6c, 0x40, 0xde, 0xed, 0xe8, 0x09, 0x01, 0x3d, 0xb2, 0xfc, 0xad, 0x1d, 0xcc, - 0xbb, 0x1d, 0xe9, 0x2d, 0x54, 0xf4, 0x99, 0x4f, 0x27, 0xe1, 0x99, 0xf4, 0xec, 0x77, 0x61, 0x59, - 0xac, 0x8e, 0x63, 0xca, 0xb8, 0x48, 0xd0, 0xd4, 0xce, 0x7a, 0x59, 0x13, 0x2f, 0x0b, 0xcb, 0x79, - 0x5f, 0xa1, 0x30, 0x49, 0x27, 0xac, 0x41, 0xce, 0x75, 0x21, 0x6d, 0x0d, 0x89, 0xf9, 0x6d, 0xc0, - 0x9a, 0xe8, 0xbf, 0x1c, 0xa4, 0x1f, 0x4a, 0x62, 0x35, 0x07, 0xaf, 0x68, 0xe2, 0x35, 0x31, 0xc8, - 0xa6, 0x42, 0xcb, 0x76, 0x59, 0x7a, 0x11, 0xa2, 0xf2, 0xd1, 0xe1, 0x03, 0xea, 0xa8, 0x48, 0x3d, - 0x11, 0xa2, 0x5a, 0x0a, 0x8c, 0x06, 0x4f, 0x5a, 0x50, 0x10, 0xce, 0x5f, 0x87, 0xda, 0xdf, 0x48, - 0xb8, 0xbb, 0xa8, 0x62, 0x13, 0xcf, 0xd1, 0x80, 0x86, 0xb6, 0x70, 0x80, 0xd2, 0x5b, 0xc7, 0x7d, - 0x17, 0xfe, 0x5a, 0x72, 0x49, 0xe8, 0xfc, 0x93, 0x02, 0xac, 0x49, 0x9d, 0xef, 0xd0, 0x21, 0xf5, - 0x3b, 0xd4, 0x77, 0x4e, 0xc4, 0xd8, 0xfd, 0xb8, 0x72, 0x13, 0xb5, 0x97, 0x11, 0x84, 0xc4, 0x88, - 0xb1, 0x4b, 0xbb, 0x50, 0xba, 0x4e, 0xc4, 0x38, 0xd1, 0xd8, 0x77, 0xd3, 0x68, 0xcc, 0xd2, 0x8b, - 0xed, 0x41, 0x82, 0x66, 0xc5, 0x3b, 0xbb, 0x06, 0x81, 0x31, 0x0d, 0x39, 0x86, 0xa5, 0xae, 0x5c, - 0xa9, 0x5c, 0x87, 0xca, 0xf7, 0xe7, 0x34, 0xda, 0x78, 0xc4, 0xca, 0x03, 0x28, 0xeb, 0x55, 0xbf, - 0x39, 0x1a, 0x61, 0xe4, 0xcf, 0x73, 0x50, 0x0e, 0x99, 0xed, 0xf3, 0x6e, 0xc0, 0x06, 0x3a, 0x50, - 0x6a, 0x3f, 0x37, 0xd1, 0x6d, 0xc3, 0x99, 0xea, 0x74, 0x2e, 0x02, 0x60, 0x2c, 0x95, 0xb8, 0xf0, - 0xb2, 0xee, 0x4e, 0x2b, 0xe8, 0xb9, 0x8e, 0xed, 0xa9, 0xfa, 0x41, 0xc0, 0xb4, 0xdd, 0xbc, 0xa9, - 0x35, 0xf7, 0xf2, 0xde, 0x4c, 0xaa, 0xc7, 0xe3, 0xea, 0x5a, 0x06, 0x84, 0x4f, 0x60, 0x58, 0xfb, - 0x87, 0x22, 0x5c, 0x99, 0xa9, 0x1e, 0x72, 0xa8, 0x4d, 0x50, 0xb9, 0x8c, 0x9d, 0x39, 0x9c, 0xbb, - 0x3b, 0xa0, 0x5a, 0xe5, 0xa5, 0xb4, 0x61, 0x26, 0x3d, 0x53, 0xfe, 0x1c, 0x3c, 0x53, 0x57, 0x7b, - 0x26, 0x55, 0x6b, 0x99, 0x63, 0x48, 0xf1, 0x3e, 0x12, 0xaf, 0x97, 0xd8, 0xc7, 0x11, 0x17, 0x8a, - 0xf4, 0xe3, 0x21, 0x53, 0xa5, 0x95, 0xb9, 0x04, 0xed, 0x7e, 0x3c, 0x64, 0x5a, 0xd0, 0xaa, 0x16, - 0x54, 0x14, 0x30, 0x8e, 0x4a, 0x02, 0xf9, 0x08, 0x2e, 0x0b, 0x91, 0x59, 0x3b, 0x51, 0xae, 0xa9, - 0xae, 0x9b, 0x5c, 0xde, 0x99, 0x26, 0x99, 0x65, 0x24, 0xb3, 0x58, 0x09, 0x09, 0x42, 0xd4, 0x6c, - 0x4b, 0x8c, 0x24, 0xec, 0x4e, 0x93, 0xcc, 0x94, 0x30, 0x83, 0x95, 0xf4, 0xed, 0x32, 0x4b, 0xd1, - 0x95, 0xc3, 0xd8, 0xb7, 0x4b, 0x28, 0x6a, 0x6c, 0xed, 0x23, 0xd8, 0x78, 0xf2, 0x72, 0x12, 0xbb, - 0xc7, 0x83, 0x87, 0xd9, 0xdd, 0xe3, 0xf6, 0x7b, 0x98, 0x7f, 0xf0, 0x30, 0x21, 0x21, 0xff, 0x85, - 0x12, 0x7e, 0x96, 0x03, 0x88, 0x55, 0x2e, 0x3c, 0xa3, 0xe8, 0x6f, 0xd6, 0x33, 0x0a, 0x0a, 0x94, - 0x18, 0xe2, 0xc3, 0x62, 0xd7, 0xa5, 0x5e, 0x87, 0x57, 0xf2, 0x72, 0xaa, 0xe7, 0xb0, 0x5f, 0x1d, - 0xe9, 0xec, 0x09, 0x76, 0x71, 0x07, 0xe5, 0x27, 0x47, 0x2d, 0xa5, 0xf6, 0x06, 0xac, 0x24, 0x2b, - 0x58, 0x4f, 0x8f, 0x62, 0x6a, 0x7f, 0x55, 0x84, 0xe5, 0x44, 0x59, 0x87, 0xbc, 0xa6, 0x6a, 0x5c, - 0xaa, 0xc1, 0xb2, 0x6e, 0x10, 0x17, 0xa8, 0xbe, 0x0b, 0x17, 0x1d, 0x2f, 0xf0, 0xe9, 0x8e, 0xcb, - 0x64, 0x0c, 0x7d, 0xa2, 0x35, 0xf6, 0xb2, 0xa6, 0xbc, 0xd8, 0x4c, 0x61, 0x31, 0x43, 0x4d, 0x1c, - 0x28, 0x3a, 0x8c, 0x76, 0xb8, 0x0e, 0xd4, 0xb7, 0xe7, 0xaa, 0x45, 0x35, 0x05, 0x27, 0x15, 0x4a, - 0xc9, 0x9f, 0xa8, 0x78, 0x93, 0x3f, 0x86, 0x15, 0xce, 0xfb, 0x32, 0xd2, 0x97, 0x49, 0xc1, 0x99, - 0x6a, 0x29, 0xeb, 0x93, 0x71, 0x75, 0xc5, 0xb2, 0x6e, 0x46, 0xcd, 0x31, 0xc5, 0x4c, 0x44, 0x59, - 0x5d, 0xd7, 0xa3, 0x42, 0x85, 0xd9, 0x28, 0x6b, 0x4f, 0xc3, 0x31, 0xa2, 0x10, 0x96, 0x75, 0xc8, - 0x6c, 0xdf, 0xe9, 0xeb, 0x05, 0x11, 0x4d, 0xdc, 0xb6, 0x84, 0xa2, 0xc6, 0x0a, 0xb5, 0x87, 0x76, - 0x4f, 0x1b, 0x78, 0xa4, 0xf6, 0xb6, 0xdd, 0x43, 0x01, 0x17, 0x68, 0x46, 0xbb, 0xba, 0x08, 0x1e, - 0xa1, 0x91, 0x76, 0x51, 0xc0, 0xc9, 0x00, 0x16, 0x19, 0x1d, 0x04, 0x21, 0xad, 0x94, 0xe5, 0x50, - 0x6f, 0xcd, 0xa5, 0x56, 0x94, 0xac, 0x74, 0x22, 0x0f, 0xea, 0x24, 0x43, 0x40, 0x50, 0x0b, 0x21, - 0x16, 0x5c, 0x71, 0x7d, 0x95, 0x7e, 0xdd, 0xea, 0xf9, 0x01, 0xa3, 0x37, 0x03, 0x2e, 0x4f, 0x54, - 0x40, 0x66, 0x6a, 0xaf, 0xe9, 0xfe, 0x5d, 0xb9, 0x35, 0x8b, 0x08, 0x67, 0xb7, 0xad, 0xfd, 0x53, - 0x0e, 0x4a, 0x66, 0x4e, 0xc9, 0x7d, 0x28, 0x8d, 0x38, 0x65, 0x51, 0xdc, 0x71, 0xea, 0xd9, 0x93, - 0xa5, 0xc3, 0x03, 0xdd, 0x14, 0x23, 0x26, 0x82, 0xe1, 0xd0, 0xe6, 0xfc, 0x51, 0xc0, 0x3a, 0x67, - 0x3b, 0x4b, 0x92, 0x0c, 0xf7, 0x75, 0x53, 0x8c, 0x98, 0xd4, 0xde, 0x83, 0xb5, 0x8c, 0xaa, 0x4e, - 0x11, 0x28, 0xbd, 0x0a, 0x85, 0x11, 0xf3, 0x94, 0x33, 0xd0, 0x25, 0xf5, 0x03, 0x6c, 0x59, 0x28, - 0xa1, 0xb5, 0xff, 0x5a, 0x84, 0xe5, 0x9b, 0xed, 0xf6, 0xbe, 0x49, 0x99, 0x9f, 0xb2, 0x14, 0x13, - 0x09, 0x56, 0xfe, 0x1c, 0x8b, 0x2a, 0xba, 0x44, 0xb4, 0xf0, 0x9c, 0x4b, 0x44, 0xaf, 0xc3, 0xe2, - 0x80, 0x86, 0xfd, 0xa0, 0x93, 0x3d, 0x45, 0xbb, 0x2b, 0xa1, 0xa8, 0xb1, 0x99, 0xb4, 0xb6, 0x78, - 0xee, 0x69, 0xed, 0xd7, 0x61, 0x49, 0x84, 0x26, 0xc1, 0x48, 0x05, 0xe9, 0x0b, 0xb1, 0xa6, 0xda, - 0x0a, 0x8c, 0x06, 0x4f, 0x7a, 0x50, 0x3e, 0xb4, 0xb9, 0xeb, 0x34, 0x46, 0x61, 0x5f, 0x47, 0xea, - 0x67, 0xd7, 0xd7, 0xb6, 0xe1, 0xa0, 0xe2, 0xc1, 0xe8, 0x13, 0x63, 0xde, 0xe4, 0x07, 0xb0, 0xd4, - 0xa7, 0x76, 0x47, 0x28, 0xa4, 0x24, 0x15, 0x82, 0xcf, 0xae, 0x90, 0x84, 0x01, 0xd6, 0x6f, 0x2a, - 0xa6, 0xaa, 0xc6, 0x10, 0xd7, 0xcb, 0x15, 0x14, 0x8d, 0x4c, 0x72, 0x0c, 0xab, 0x6a, 0x41, 0x6b, - 0x4c, 0xa5, 0x2c, 0x3b, 0xf1, 0x07, 0x67, 0x3f, 0x00, 0x4a, 0x70, 0xd9, 0xbe, 0x34, 0x19, 0x57, - 0x57, 0x93, 0x10, 0x8e, 0x69, 0x31, 0x1b, 0x6f, 0xc3, 0x4a, 0xb2, 0x87, 0x67, 0xca, 0xf6, 0xff, - 0x72, 0x01, 0x2e, 0xdd, 0xb9, 0x61, 0x99, 0x43, 0x86, 0xfd, 0xc0, 0x73, 0x9d, 0x13, 0xf2, 0x67, - 0xb0, 0xe8, 0xd9, 0x87, 0xd4, 0xe3, 0x95, 0x9c, 0x1c, 0xc2, 0x07, 0xcf, 0xae, 0xc7, 0x29, 0xe6, - 0xf5, 0x96, 0xe4, 0xac, 0x94, 0x19, 0x59, 0xb7, 0x02, 0xa2, 0x16, 0x4b, 0x3e, 0x84, 0xa5, 0x43, - 0xdb, 0x39, 0x0a, 0xba, 0x5d, 0xed, 0xa5, 0x6e, 0x3c, 0x83, 0xc1, 0xc8, 0xf6, 0x2a, 0xc4, 0xd5, - 0x1f, 0x68, 0xb8, 0x0a, 0xd7, 0x4d, 0x19, 0x0b, 0xd8, 0x7d, 0x5f, 0xa3, 0xb4, 0xd5, 0xca, 0xf5, - 0x9c, 0x70, 0xdd, 0xbb, 0xb3, 0x88, 0x70, 0x76, 0xdb, 0x8d, 0xef, 0xc0, 0x72, 0x62, 0x70, 0x67, - 0x9a, 0x87, 0x9f, 0x2f, 0xc2, 0xca, 0x1d, 0xbb, 0x7b, 0x64, 0x9f, 0xd2, 0xe9, 0x7d, 0x0d, 0x8a, - 0xb2, 0xe6, 0xad, 0xc3, 0x8e, 0x28, 0xe8, 0x95, 0x35, 0x71, 0x54, 0x38, 0x91, 0x4c, 0x0e, 0x6d, - 0x16, 0xca, 0x52, 0xa5, 0x1c, 0x58, 0x31, 0x4e, 0x26, 0xf7, 0x0d, 0x02, 0x63, 0x9a, 0x8c, 0x53, - 0x29, 0x9c, 0xbb, 0x53, 0xb9, 0x01, 0x2b, 0x8c, 0x3e, 0x1c, 0xb9, 0xf2, 0xb8, 0xe6, 0x48, 0xd5, - 0xdf, 0x8b, 0xf1, 0x25, 0x09, 0x4c, 0xe0, 0x30, 0x45, 0x29, 0xa2, 0x11, 0x27, 0x18, 0x0c, 0x19, - 0xe5, 0x5c, 0xfa, 0xa3, 0x52, 0x1c, 0x8d, 0x34, 0x35, 0x1c, 0x23, 0x0a, 0x11, 0xbd, 0x75, 0xbd, - 0x11, 0xef, 0xef, 0x09, 0x1e, 0x22, 0x40, 0x96, 0x6e, 0xa9, 0x18, 0x47, 0x6f, 0x7b, 0x29, 0x2c, - 0x66, 0xa8, 0x8d, 0xef, 0x2f, 0x7d, 0x79, 0xc7, 0x03, 0xe5, 0x73, 0xdc, 0xc9, 0x1a, 0xb0, 0x16, - 0x99, 0x80, 0xeb, 0xf7, 0x4c, 0x00, 0x93, 0x28, 0x5b, 0xec, 0xa7, 0xd1, 0x98, 0xa5, 0x17, 0xbb, - 0x81, 0x29, 0x25, 0x2d, 0xa7, 0x4b, 0x36, 0xa6, 0x8c, 0x64, 0xf0, 0xe4, 0x0f, 0xa1, 0xc0, 0x6d, - 0xee, 0x55, 0x56, 0x9e, 0xf5, 0x74, 0xbc, 0x61, 0xb5, 0xb4, 0xf6, 0x64, 0xe0, 0x20, 0xbe, 0x51, - 0xb2, 0xac, 0xdd, 0x07, 0x68, 0x05, 0x3d, 0xb3, 0x82, 0x1a, 0xb0, 0xe6, 0xfa, 0x21, 0x65, 0xc7, - 0xb6, 0x67, 0x51, 0x27, 0xf0, 0x3b, 0x5c, 0xae, 0xa6, 0x42, 0x3c, 0xac, 0x5b, 0x69, 0x34, 0x66, - 0xe9, 0x6b, 0x7f, 0xbf, 0x00, 0xcb, 0xf7, 0x1a, 0x6d, 0xeb, 0x94, 0x8b, 0x32, 0x51, 0xb8, 0xca, - 0x3f, 0xa5, 0x70, 0x95, 0x98, 0xea, 0x85, 0x17, 0x76, 0x12, 0x74, 0xfe, 0x0b, 0xfc, 0xcb, 0x39, - 0x57, 0xab, 0xfd, 0xa4, 0x00, 0xeb, 0xf7, 0x87, 0xd4, 0xff, 0xa0, 0xef, 0xf2, 0xa3, 0xc4, 0x59, - 0x78, 0x3f, 0xe0, 0x61, 0x36, 0x0c, 0x15, 0x71, 0x36, 0x4a, 0x4c, 0xd2, 0x6a, 0xf3, 0x4f, 0xb1, - 0xda, 0x2d, 0x28, 0x8b, 0xc8, 0x95, 0x0f, 0x6d, 0x67, 0xaa, 0x2e, 0x77, 0xcf, 0x20, 0x30, 0xa6, - 0x91, 0xb7, 0xb6, 0x46, 0x61, 0xbf, 0x1d, 0x1c, 0x51, 0xff, 0x6c, 0x89, 0x97, 0xba, 0xb5, 0x65, - 0xda, 0x62, 0xcc, 0x86, 0x5c, 0x07, 0xb0, 0xe3, 0x1b, 0x64, 0x2a, 0xe9, 0x8a, 0x34, 0xde, 0x88, - 0xef, 0x8f, 0x25, 0xa8, 0x7e, 0x53, 0x8f, 0x1c, 0x11, 0x56, 0x92, 0x85, 0x82, 0x53, 0x1c, 0x63, - 0x98, 0xac, 0x25, 0xff, 0xa4, 0xac, 0xa5, 0xf6, 0x8f, 0x4b, 0xb0, 0xba, 0x3f, 0xf2, 0xb8, 0xcd, - 0x9e, 0xe7, 0x26, 0xfd, 0xa2, 0xaf, 0x37, 0x25, 0x0c, 0xa4, 0x70, 0x8e, 0x06, 0x32, 0x84, 0xcb, - 0xa1, 0xc7, 0xdb, 0x6c, 0xc4, 0xc3, 0x26, 0x65, 0x21, 0xd7, 0x25, 0x8a, 0xe2, 0x99, 0x2f, 0x97, - 0xb4, 0x5b, 0x56, 0x96, 0x0b, 0xce, 0x62, 0x4d, 0x0e, 0x61, 0x23, 0xf4, 0x78, 0xc3, 0xf3, 0x82, - 0x47, 0x26, 0x21, 0x8f, 0x6f, 0x2c, 0xe8, 0xa0, 0xa1, 0xa6, 0xfb, 0xbb, 0xd1, 0x6e, 0x59, 0x4f, - 0xa0, 0xc4, 0x2f, 0xe0, 0x42, 0xee, 0xca, 0x51, 0xbd, 0x6f, 0x7b, 0x6e, 0xc7, 0x0e, 0x65, 0x4a, - 0x2f, 0x6d, 0x6a, 0x49, 0x32, 0xff, 0xaa, 0x29, 0x02, 0xb6, 0x5b, 0x56, 0x96, 0x04, 0x67, 0xb5, - 0xfb, 0xb2, 0xe2, 0x8c, 0x0e, 0xac, 0x45, 0x4e, 0x45, 0xeb, 0xbd, 0x7c, 0xe6, 0x6b, 0x36, 0x8d, - 0x34, 0x07, 0xcc, 0xb2, 0x24, 0x3f, 0x80, 0x4b, 0xf1, 0xfd, 0x0f, 0x1d, 0x29, 0xcb, 0xc0, 0x62, - 0x9e, 0x68, 0xfe, 0xca, 0x64, 0x5c, 0xbd, 0xd4, 0xcc, 0xb2, 0xc5, 0x69, 0x49, 0xb5, 0xbf, 0xc8, - 0x41, 0x19, 0xed, 0x90, 0xb6, 0xdc, 0x81, 0x1b, 0x92, 0xeb, 0x50, 0x18, 0xf9, 0xae, 0xd9, 0x0c, - 0x36, 0xcd, 0xea, 0x3e, 0xf0, 0xdd, 0xf0, 0xf1, 0xb8, 0x7a, 0x31, 0x22, 0xa4, 0x02, 0x82, 0x92, - 0x56, 0x04, 0x10, 0x32, 0xe2, 0xe3, 0x21, 0xdf, 0xa7, 0x4c, 0x20, 0xe4, 0x42, 0x2e, 0xc6, 0x01, - 0x04, 0xa6, 0xd1, 0x98, 0xa5, 0xaf, 0xfd, 0x3c, 0x0f, 0x8b, 0x96, 0x5c, 0x24, 0xe4, 0x23, 0x28, - 0x0d, 0x68, 0x68, 0xcb, 0xc2, 0xba, 0x2a, 0xe5, 0xbc, 0x71, 0xba, 0xe3, 0xaa, 0xfb, 0x32, 0x62, - 0xb8, 0x4b, 0x43, 0x3b, 0x5e, 0xcb, 0x31, 0x0c, 0x23, 0xae, 0xa4, 0xab, 0x8f, 0xd7, 0xf3, 0xf3, - 0x9e, 0x44, 0xa8, 0x1e, 0x5b, 0x43, 0xea, 0xcc, 0x3c, 0x51, 0xf7, 0x61, 0x91, 0x87, 0x76, 0x38, - 0xe2, 0xf3, 0x5f, 0x33, 0xd4, 0x92, 0x24, 0xb7, 0x44, 0xb5, 0x59, 0x7e, 0xa3, 0x96, 0x52, 0xfb, - 0xb7, 0x1c, 0x80, 0x22, 0x6c, 0xb9, 0x3c, 0x24, 0x7f, 0x32, 0xa5, 0xc8, 0xfa, 0xe9, 0x14, 0x29, - 0x5a, 0x4b, 0x35, 0x46, 0xa9, 0x81, 0x81, 0x24, 0x94, 0x48, 0xa1, 0xe8, 0x86, 0x74, 0x60, 0x0a, - 0xd5, 0xef, 0xcc, 0x3b, 0xb6, 0xd8, 0xeb, 0xdf, 0x12, 0x6c, 0x51, 0x71, 0xaf, 0x7d, 0xba, 0x68, - 0xc6, 0x24, 0x14, 0x4b, 0x7e, 0x94, 0x83, 0x95, 0x8e, 0x29, 0xd7, 0xbb, 0xd4, 0xe4, 0xdd, 0xb7, - 0x9e, 0xdb, 0x81, 0x5a, 0x9c, 0x44, 0xed, 0x24, 0xc4, 0x60, 0x4a, 0x28, 0x09, 0xa0, 0x14, 0x2a, - 0x0f, 0x6e, 0x86, 0xdf, 0x98, 0x7b, 0x2f, 0x48, 0x9c, 0xbd, 0x6b, 0xd6, 0x18, 0x09, 0x21, 0x5e, - 0xe2, 0xa4, 0x7e, 0xee, 0x42, 0xb8, 0x39, 0xdb, 0x57, 0xa5, 0xca, 0xe9, 0x93, 0x7e, 0x72, 0x1b, - 0x88, 0xce, 0xdb, 0xf7, 0x6c, 0xd7, 0xa3, 0x1d, 0x0c, 0x46, 0xbe, 0x2a, 0xb3, 0x95, 0xe2, 0xab, - 0x2c, 0xbb, 0x53, 0x14, 0x38, 0xa3, 0x95, 0xc8, 0x54, 0x65, 0x7f, 0xb6, 0x47, 0x3c, 0x11, 0x8c, - 0x45, 0x4a, 0xde, 0x4d, 0xe0, 0x30, 0x45, 0x49, 0xae, 0x41, 0x89, 0xd1, 0xa1, 0xe7, 0x3a, 0xb6, - 0xca, 0x54, 0x8b, 0xe6, 0x9a, 0xa7, 0x82, 0x61, 0x84, 0x25, 0x2d, 0x78, 0x89, 0xd1, 0x63, 0x57, - 0xc4, 0x9f, 0x37, 0x5d, 0x1e, 0x06, 0xec, 0x44, 0xba, 0x28, 0x9d, 0xab, 0x56, 0x26, 0xe3, 0xea, - 0x4b, 0x38, 0x03, 0x8f, 0x33, 0x5b, 0x91, 0x9f, 0xe6, 0x60, 0xd5, 0x0b, 0x7a, 0x3d, 0xd7, 0xef, - 0xa9, 0xc3, 0x12, 0x5d, 0x23, 0xfb, 0xe0, 0x79, 0xf8, 0x89, 0x7a, 0x2b, 0xc9, 0x59, 0xd5, 0x76, - 0xae, 0x68, 0x65, 0xac, 0xa6, 0x70, 0x98, 0xee, 0xc4, 0xc6, 0x3b, 0x40, 0xa6, 0xdb, 0x9e, 0xa9, - 0x74, 0x12, 0xc0, 0x4a, 0xd2, 0x8d, 0x90, 0x0f, 0x23, 0xf7, 0xa4, 0xbc, 0xc3, 0xb7, 0xcf, 0x9e, - 0x62, 0x7e, 0xb1, 0x3f, 0xfa, 0xd7, 0x3c, 0xac, 0x58, 0x9e, 0xed, 0x44, 0x99, 0x46, 0x3a, 0x84, - 0xcb, 0xbd, 0x80, 0xac, 0x0a, 0xb8, 0xec, 0x8f, 0x4c, 0x36, 0xf2, 0x67, 0xbe, 0xfa, 0x65, 0x45, - 0x8d, 0x31, 0xc1, 0x48, 0xa4, 0x47, 0x4e, 0xdf, 0xf6, 0x7d, 0xea, 0xe9, 0x8c, 0x27, 0x8a, 0xe6, - 0x9a, 0x0a, 0x8c, 0x06, 0x2f, 0x48, 0x07, 0x94, 0x73, 0xbb, 0x67, 0xae, 0x86, 0x44, 0xa4, 0x77, - 0x15, 0x18, 0x0d, 0xbe, 0xf6, 0x3f, 0x0b, 0x40, 0xac, 0xd0, 0xf6, 0x3b, 0x36, 0xeb, 0xdc, 0xb9, - 0x61, 0xbd, 0xa8, 0xf7, 0x09, 0xf7, 0xa6, 0xdf, 0x27, 0xbc, 0x31, 0xeb, 0x7d, 0xc2, 0x57, 0xef, - 0x8c, 0x0e, 0x29, 0xf3, 0x69, 0x48, 0xb9, 0xa9, 0x63, 0xfe, 0xbf, 0x7c, 0xa5, 0xd0, 0x85, 0xd5, - 0xa1, 0x1d, 0x3a, 0x7d, 0x2b, 0x64, 0x76, 0x48, 0x7b, 0x27, 0x7a, 0x1e, 0xde, 0x31, 0x8b, 0x70, - 0x3f, 0x89, 0x7c, 0x3c, 0xae, 0xfe, 0xf6, 0x93, 0x1e, 0x37, 0x85, 0x27, 0x43, 0xca, 0xeb, 0x92, - 0x5c, 0x5e, 0xcf, 0x49, 0xb3, 0x15, 0x39, 0xa8, 0xe7, 0x1e, 0x53, 0x15, 0x80, 0x48, 0xb7, 0x57, - 0x8a, 0xfb, 0xd6, 0x8a, 0x30, 0x98, 0xa0, 0xaa, 0x6d, 0xc1, 0x8a, 0x5a, 0x42, 0xba, 0xbc, 0x5c, - 0x85, 0xa2, 0x2d, 0x02, 0x68, 0xb9, 0x54, 0x8a, 0xea, 0xe0, 0x52, 0x46, 0xd4, 0xa8, 0xe0, 0xb5, - 0x1f, 0x97, 0x20, 0x72, 0xe0, 0xc4, 0x99, 0xda, 0xef, 0xcf, 0x7e, 0xa5, 0xfe, 0xae, 0x66, 0xa0, - 0x7c, 0xad, 0xf9, 0x4a, 0x6c, 0xfb, 0xfa, 0x9a, 0xa3, 0xeb, 0xd0, 0x86, 0xe3, 0x04, 0x23, 0x7d, - 0x01, 0x27, 0x3f, 0x7d, 0xcd, 0x31, 0x4d, 0x81, 0x33, 0x5a, 0x91, 0xdb, 0xf2, 0xf1, 0x42, 0x68, - 0x0b, 0x9d, 0xea, 0x6d, 0xed, 0xb5, 0x27, 0x3c, 0x5e, 0x50, 0x44, 0xd1, 0x8b, 0x05, 0xf5, 0x89, - 0x71, 0x73, 0xb2, 0x0b, 0x4b, 0xc7, 0x81, 0x37, 0x1a, 0x50, 0x53, 0xad, 0xd9, 0x98, 0xc5, 0xe9, - 0x7d, 0x49, 0x92, 0x28, 0x5f, 0xa8, 0x26, 0x68, 0xda, 0x12, 0x0a, 0x6b, 0x32, 0x57, 0x71, 0xc3, - 0x13, 0x7d, 0xdb, 0x43, 0x67, 0x5a, 0xaf, 0xcf, 0x62, 0xb7, 0x1f, 0x74, 0xac, 0x34, 0xb5, 0xbe, - 0x59, 0x9f, 0x06, 0x62, 0x96, 0x27, 0xf9, 0x24, 0x07, 0x2b, 0x7e, 0xd0, 0xa1, 0xc6, 0xbd, 0xe8, - 0x92, 0x43, 0x7b, 0xfe, 0x4d, 0xbd, 0x7e, 0x2f, 0xc1, 0x56, 0xed, 0x2f, 0xd1, 0x66, 0x9b, 0x44, - 0x61, 0x4a, 0x3e, 0x39, 0x80, 0xe5, 0x30, 0xf0, 0xf4, 0x1a, 0x35, 0x75, 0x88, 0xcd, 0x59, 0x63, - 0x6e, 0x47, 0x64, 0xf1, 0x35, 0xb8, 0x18, 0xc6, 0x31, 0xc9, 0x87, 0xf8, 0xb0, 0xee, 0x0e, 0xec, - 0x1e, 0xdd, 0x1f, 0x79, 0x9e, 0xf2, 0xa9, 0x66, 0x37, 0x9d, 0xf9, 0x4a, 0x45, 0x38, 0x22, 0x4f, - 0xaf, 0x0b, 0xda, 0xa5, 0x8c, 0xfa, 0x0e, 0x8d, 0xaf, 0xa3, 0xdf, 0xca, 0x70, 0xc2, 0x29, 0xde, - 0xe4, 0x5d, 0xb8, 0x34, 0x64, 0x6e, 0x20, 0x55, 0xed, 0xd9, 0x5c, 0x85, 0x1c, 0x65, 0x69, 0x9c, - 0x5f, 0xd1, 0x6c, 0x2e, 0xed, 0x67, 0x09, 0x70, 0xba, 0x8d, 0x08, 0x3e, 0x0c, 0x50, 0xa6, 0x62, - 0x3a, 0xf8, 0x30, 0x6d, 0x31, 0xc2, 0x92, 0x3d, 0x28, 0xd9, 0xdd, 0xae, 0xeb, 0x0b, 0xca, 0x65, - 0x69, 0x2a, 0xaf, 0xce, 0x1a, 0x5a, 0x43, 0xd3, 0x28, 0x3e, 0xe6, 0x0b, 0xa3, 0xb6, 0x1b, 0xdf, - 0x83, 0x4b, 0x53, 0x53, 0x77, 0xa6, 0xed, 0xdd, 0x02, 0x88, 0x6f, 0x46, 0x91, 0xaf, 0x41, 0x91, - 0x87, 0x36, 0x33, 0x89, 0x5c, 0x14, 0x5c, 0x5b, 0x02, 0x88, 0x0a, 0x47, 0xae, 0x42, 0x81, 0x87, - 0xc1, 0x30, 0x5b, 0xca, 0xb1, 0xc2, 0x60, 0x88, 0x12, 0x53, 0xfb, 0xac, 0x00, 0x4b, 0x66, 0xe7, - 0xe1, 0x89, 0x20, 0x34, 0x37, 0xef, 0xb5, 0x01, 0xcd, 0xf4, 0xa9, 0xb1, 0x68, 0x7a, 0xbb, 0xc8, - 0x9f, 0xfb, 0x76, 0x71, 0x04, 0x8b, 0x43, 0xe9, 0x8c, 0xb5, 0x83, 0x7a, 0x77, 0x7e, 0xd9, 0x92, - 0x9d, 0xda, 0x6b, 0xd5, 0x6f, 0xd4, 0x22, 0xc8, 0x43, 0x58, 0x65, 0x34, 0x64, 0x27, 0xa9, 0xbd, - 0x69, 0x9e, 0x2a, 0x80, 0x3c, 0x13, 0xc5, 0x24, 0x4b, 0x4c, 0x4b, 0x20, 0x43, 0x28, 0x33, 0x93, - 0xd3, 0x6b, 0x57, 0xd7, 0x7c, 0xf6, 0x21, 0x46, 0xe5, 0x01, 0xe5, 0xa9, 0xa3, 0x4f, 0x8c, 0x85, - 0xd4, 0xfe, 0x3b, 0x07, 0xeb, 0xd9, 0x69, 0x20, 0x47, 0xb0, 0xc0, 0x99, 0xa3, 0xcd, 0x6a, 0xff, - 0xf9, 0xcd, 0xaf, 0x0a, 0x66, 0x54, 0x59, 0xc7, 0x62, 0x0e, 0x0a, 0x29, 0xc2, 0xec, 0x3b, 0x94, - 0x87, 0x59, 0xb3, 0xdf, 0xa1, 0x3c, 0x44, 0x89, 0x21, 0xad, 0x64, 0xd0, 0xb3, 0x90, 0xba, 0x99, - 0x96, 0x0a, 0x7a, 0xbe, 0x92, 0x95, 0x37, 0x2b, 0xe4, 0xa9, 0xfd, 0x78, 0x01, 0x5e, 0x9e, 0xdd, - 0x31, 0xf2, 0x5d, 0xb8, 0x18, 0x65, 0x96, 0x27, 0x89, 0xf7, 0xce, 0xd1, 0x01, 0xdb, 0x4e, 0x0a, - 0x8b, 0x19, 0x6a, 0x11, 0x65, 0xe8, 0xcb, 0x88, 0xe6, 0xd1, 0x73, 0xa2, 0xd2, 0xdd, 0x8c, 0x30, - 0x98, 0xa0, 0x22, 0x0d, 0x58, 0xd3, 0x5f, 0xed, 0x64, 0x4e, 0x99, 0x38, 0xc6, 0x6a, 0xa6, 0xd1, - 0x98, 0xa5, 0x17, 0x61, 0xac, 0x88, 0x06, 0xcc, 0xbb, 0xb3, 0x44, 0x18, 0xbb, 0xa3, 0xc0, 0x68, - 0xf0, 0x22, 0x01, 0x14, 0x3f, 0xdb, 0xe9, 0x8b, 0xe6, 0x71, 0x96, 0x9d, 0xc0, 0x61, 0x8a, 0x32, - 0xbe, 0x01, 0xaf, 0x6e, 0x42, 0x4d, 0xdf, 0x80, 0xbf, 0x0e, 0x30, 0xe2, 0x14, 0xed, 0x47, 0x82, - 0x89, 0xae, 0x1d, 0x46, 0x83, 0x3f, 0x88, 0x30, 0x98, 0xa0, 0xaa, 0xfd, 0x32, 0x07, 0xab, 0xa9, - 0x85, 0x48, 0xba, 0xb0, 0x70, 0x74, 0xc3, 0xe4, 0x40, 0x77, 0x9e, 0xe3, 0x01, 0xbe, 0xb2, 0xba, - 0x3b, 0x37, 0x38, 0x0a, 0x01, 0xe4, 0x41, 0x94, 0x6e, 0xcd, 0x7d, 0x35, 0x35, 0x19, 0x24, 0xea, - 0xa0, 0x3d, 0x9d, 0x79, 0xfd, 0xc7, 0x2a, 0xac, 0x65, 0x3c, 0xec, 0x29, 0x6e, 0x1b, 0x29, 0x63, - 0xd2, 0x2f, 0x76, 0x66, 0x18, 0x93, 0x79, 0xcb, 0x93, 0xa0, 0x22, 0x3d, 0xa5, 0x3d, 0xe5, 0x1c, - 0x5b, 0x73, 0x0d, 0x29, 0x93, 0xe9, 0x64, 0xd4, 0xf7, 0xa3, 0x1c, 0xac, 0xd8, 0x89, 0x27, 0xd0, - 0xda, 0x37, 0xde, 0x9d, 0x27, 0xfd, 0x99, 0x7a, 0xfd, 0xad, 0x2e, 0xf3, 0x25, 0x11, 0x98, 0x12, - 0x4a, 0x1c, 0x28, 0xf4, 0xc3, 0xd0, 0x3c, 0xb5, 0xdd, 0x7d, 0x2e, 0xd7, 0x66, 0xd4, 0xf1, 0xac, - 0x00, 0xa0, 0x64, 0x4e, 0x1e, 0x41, 0xd9, 0x7e, 0xc4, 0xd5, 0xdf, 0x22, 0xe8, 0x37, 0xb8, 0xf3, - 0x64, 0x79, 0x99, 0x7f, 0x58, 0xd0, 0xe7, 0x66, 0x06, 0x8a, 0xb1, 0x2c, 0xc2, 0x60, 0xd1, 0x91, - 0x2f, 0x86, 0xf4, 0xed, 0xa3, 0x77, 0x9f, 0xd3, 0xcb, 0x23, 0xb5, 0x0f, 0xa5, 0x40, 0xa8, 0x25, - 0x91, 0x1e, 0x14, 0x8f, 0xec, 0xee, 0x91, 0xad, 0x8b, 0xf7, 0x73, 0xac, 0x8a, 0xe4, 0xb5, 0x10, - 0xe5, 0x2d, 0x24, 0x04, 0x15, 0x7f, 0x31, 0x75, 0xbe, 0x1d, 0x72, 0x5d, 0xc1, 0x9f, 0x63, 0xea, - 0x12, 0x07, 0xdd, 0x6a, 0xea, 0x04, 0x00, 0x25, 0x73, 0x31, 0x1a, 0x59, 0x18, 0xd0, 0xf5, 0xfb, - 0x79, 0xd6, 0x78, 0xa2, 0x70, 0xa2, 0x46, 0x23, 0x21, 0xa8, 0xf8, 0x0b, 0x1b, 0x09, 0xcc, 0x41, - 0xae, 0x8e, 0x3b, 0xe7, 0xb0, 0x91, 0xec, 0x99, 0xb0, 0xb2, 0x91, 0x08, 0x8a, 0xb1, 0x2c, 0xf2, - 0x21, 0x2c, 0x78, 0x41, 0x4f, 0xdf, 0x4a, 0x98, 0xa3, 0x76, 0x1e, 0x5f, 0x40, 0x50, 0x0b, 0xbd, - 0x15, 0xf4, 0x50, 0x70, 0x26, 0x7f, 0x9d, 0x83, 0x8b, 0x76, 0xea, 0xd1, 0x76, 0x65, 0x75, 0xde, - 0x07, 0x1b, 0x33, 0x1f, 0x81, 0xab, 0x7f, 0x94, 0x48, 0xa3, 0x30, 0x23, 0x5a, 0xc6, 0x7f, 0xf2, - 0x28, 0xb3, 0x72, 0x71, 0xde, 0x25, 0x91, 0x3a, 0x12, 0xd5, 0xf1, 0x9f, 0x04, 0xa1, 0x16, 0x41, - 0x7e, 0x9a, 0x93, 0x5b, 0x73, 0xf2, 0xcd, 0x64, 0x65, 0x6d, 0xee, 0x37, 0x80, 0xb3, 0xdf, 0x79, - 0xa6, 0x76, 0xfb, 0x24, 0x01, 0x66, 0xbb, 0x40, 0x7e, 0x92, 0x83, 0x35, 0x3b, 0xfd, 0x20, 0xba, - 0xb2, 0x3e, 0x6f, 0xa4, 0x36, 0xfb, 0x85, 0xb5, 0x3e, 0x32, 0x4b, 0xe3, 0x30, 0x2b, 0xbd, 0xe6, - 0xc0, 0x72, 0xe2, 0x3f, 0x11, 0x4e, 0x71, 0x68, 0x7d, 0x1d, 0xe0, 0x98, 0x32, 0xb7, 0x7b, 0xd2, - 0xa4, 0x2c, 0xd4, 0x0f, 0x44, 0xa3, 0xad, 0xed, 0xfd, 0x08, 0x83, 0x09, 0xaa, 0xed, 0xfa, 0xa7, - 0x9f, 0x6f, 0x5e, 0xf8, 0xec, 0xf3, 0xcd, 0x0b, 0xbf, 0xf8, 0x7c, 0xf3, 0xc2, 0x0f, 0x27, 0x9b, - 0xb9, 0x4f, 0x27, 0x9b, 0xb9, 0xcf, 0x26, 0x9b, 0xb9, 0x5f, 0x4c, 0x36, 0x73, 0xff, 0x39, 0xd9, - 0xcc, 0xfd, 0xcd, 0x2f, 0x37, 0x2f, 0xfc, 0x51, 0xc9, 0x8c, 0xe8, 0xff, 0x02, 0x00, 0x00, 0xff, - 0xff, 0x1c, 0xa6, 0xc1, 0xf8, 0x86, 0x48, 0x00, 0x00, + // 4708 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x3c, 0x4d, 0x73, 0x63, 0xc7, + 0x71, 0x0b, 0x10, 0x20, 0xc1, 0x26, 0xb8, 0xe4, 0xce, 0x6a, 0x65, 0x88, 0x96, 0x88, 0x0d, 0x5c, + 0x51, 0xd6, 0x2e, 0x1b, 0x94, 0x56, 0x71, 0x4c, 0x2b, 0x15, 0x5b, 0x20, 0x48, 0x6a, 0xb9, 0x8b, + 0xdd, 0xa5, 0xfa, 0x81, 0x52, 0xe5, 0xab, 0xa4, 0xe1, 0xc3, 0x00, 0x78, 0xe2, 0xc3, 0x7b, 0xd8, + 0x99, 0x07, 0xae, 0xe8, 0x2a, 0x27, 0x4e, 0x5c, 0x49, 0x95, 0x2b, 0x55, 0x72, 0x0e, 0x3e, 0xe4, + 0xe4, 0xca, 0x25, 0x87, 0x54, 0x72, 0x48, 0x55, 0xfe, 0x81, 0x73, 0xd1, 0x51, 0xb9, 0xf9, 0x90, + 0xa0, 0x22, 0xfa, 0x94, 0x83, 0x2b, 0xf1, 0x29, 0xa9, 0x3d, 0xa5, 0xe6, 0xe3, 0x7d, 0x02, 0xab, + 0x25, 0x17, 0x2b, 0x6e, 0xaa, 0x7c, 0xc3, 0xeb, 0xee, 0xe9, 0x9e, 0xe9, 0xe9, 0xe9, 0xe9, 0xee, + 0x99, 0x01, 0xdc, 0xea, 0x39, 0x41, 0x7f, 0x74, 0x58, 0xb7, 0xfd, 0xc1, 0x06, 0xe5, 0x3d, 0x7f, + 0xc8, 0xfd, 0x0f, 0xd5, 0x8f, 0x6f, 0xb0, 0x63, 0xe6, 0x05, 0x62, 0x63, 0x78, 0xd4, 0xdb, 0xa0, + 0x43, 0x47, 0x6c, 0x08, 0xe6, 0x09, 0x9f, 0x6f, 0x1c, 0xbf, 0x4e, 0xdd, 0x61, 0x9f, 0xbe, 0xbe, + 0xd1, 0x63, 0x1e, 0xe3, 0x34, 0x60, 0x9d, 0xfa, 0x90, 0xfb, 0x81, 0x4f, 0x36, 0x63, 0x4e, 0xf5, + 0x90, 0x93, 0xfa, 0xf1, 0xbe, 0xe6, 0x54, 0x1f, 0x1e, 0xf5, 0xea, 0x92, 0x53, 0x5d, 0x73, 0xaa, + 0x87, 0x9c, 0xd6, 0xbe, 0x7b, 0xe6, 0x3e, 0xd8, 0xfe, 0x60, 0xe0, 0x7b, 0x59, 0xd1, 0x6b, 0xdf, + 0x48, 0x30, 0xe8, 0xf9, 0x3d, 0x7f, 0x43, 0x81, 0x0f, 0x47, 0x5d, 0xf5, 0xa5, 0x3e, 0xd4, 0x2f, + 0x43, 0x5e, 0x3b, 0xda, 0x14, 0x75, 0xc7, 0x97, 0x2c, 0x37, 0x6c, 0x9f, 0xb3, 0x8d, 0xe3, 0x89, + 0xd1, 0xac, 0xfd, 0x76, 0x4c, 0x33, 0xa0, 0x76, 0xdf, 0xf1, 0x18, 0x3f, 0x89, 0xfb, 0x31, 0x60, + 0x01, 0x9d, 0xd6, 0x6a, 0xe3, 0x71, 0xad, 0xf8, 0xc8, 0x0b, 0x9c, 0x01, 0x9b, 0x68, 0xf0, 0x3b, + 0x4f, 0x6a, 0x20, 0xec, 0x3e, 0x1b, 0xd0, 0x6c, 0xbb, 0xda, 0xa3, 0x02, 0xac, 0x36, 0xde, 0xb3, + 0x5a, 0x74, 0x70, 0xd8, 0xa1, 0x6d, 0xee, 0xf4, 0x7a, 0x8c, 0x93, 0x4d, 0x28, 0x77, 0x47, 0x9e, + 0x1d, 0x38, 0xbe, 0x77, 0x8f, 0x0e, 0x58, 0x25, 0x77, 0x3d, 0x77, 0x63, 0x71, 0xeb, 0x85, 0x4f, + 0xc6, 0xd5, 0x4b, 0xa7, 0xe3, 0x6a, 0x79, 0x37, 0x81, 0xc3, 0x14, 0x25, 0x41, 0x58, 0xa4, 0xb6, + 0xcd, 0x84, 0xb8, 0xc3, 0x4e, 0x2a, 0xf9, 0xeb, 0xb9, 0x1b, 0x4b, 0x37, 0x7f, 0xb3, 0xae, 0xbb, + 0x26, 0xa7, 0xac, 0x2e, 0xb5, 0x54, 0x3f, 0x7e, 0xbd, 0x6e, 0x31, 0x9b, 0xb3, 0xe0, 0x0e, 0x3b, + 0xb1, 0x98, 0xcb, 0xec, 0xc0, 0xe7, 0x5b, 0xcb, 0xa7, 0xe3, 0xea, 0x62, 0x23, 0x6c, 0x8b, 0x31, + 0x1b, 0xc9, 0x53, 0x84, 0xe4, 0x95, 0xb9, 0x73, 0xf3, 0x8c, 0xc0, 0x18, 0xb3, 0x21, 0xaf, 0xc2, + 0x3c, 0x67, 0x3d, 0xc7, 0xf7, 0x2a, 0x05, 0x35, 0xb6, 0xcb, 0x66, 0x6c, 0xf3, 0xa8, 0xa0, 0x68, + 0xb0, 0x64, 0x04, 0x0b, 0x43, 0x7a, 0xe2, 0xfa, 0xb4, 0x53, 0x29, 0x5e, 0x9f, 0xbb, 0xb1, 0x74, + 0xf3, 0x76, 0xfd, 0x69, 0xad, 0xb3, 0x6e, 0xb4, 0xbb, 0x4f, 0x39, 0x1d, 0xb0, 0x80, 0xf1, 0xad, + 0x15, 0x23, 0x74, 0x61, 0x5f, 0x8b, 0xc0, 0x50, 0x16, 0xf9, 0x13, 0x80, 0x61, 0x48, 0x26, 0x2a, + 0xf3, 0xcf, 0x5c, 0x32, 0x31, 0x92, 0x21, 0x02, 0x09, 0x4c, 0x48, 0x24, 0x6f, 0xc2, 0x65, 0xc7, + 0x3b, 0xf6, 0x6d, 0x2a, 0x27, 0xb6, 0x7d, 0x32, 0x64, 0x95, 0x05, 0xa5, 0x26, 0x72, 0x3a, 0xae, + 0x5e, 0xde, 0x4b, 0x61, 0x30, 0x43, 0x49, 0xbe, 0x0a, 0x0b, 0xdc, 0x77, 0x59, 0x03, 0xef, 0x55, + 0x4a, 0xaa, 0x51, 0x34, 0x4c, 0xd4, 0x60, 0x0c, 0xf1, 0xb5, 0x5f, 0xe6, 0xe1, 0x6a, 0x83, 0xf7, + 0xfc, 0xf7, 0x7c, 0x7e, 0xd4, 0x75, 0xfd, 0x87, 0xa1, 0xfd, 0x79, 0x30, 0x2f, 0xfc, 0x11, 0xb7, + 0xb5, 0xe5, 0xcd, 0x34, 0xf4, 0x06, 0x0f, 0x9c, 0x2e, 0xb5, 0x83, 0x96, 0xe9, 0xe2, 0x16, 0xc8, + 0x59, 0xb6, 0x14, 0x77, 0x34, 0x52, 0xc8, 0x2d, 0x58, 0xf4, 0x87, 0x72, 0x59, 0x48, 0x83, 0xc8, + 0xab, 0x4e, 0x7f, 0xcd, 0x74, 0x7a, 0xf1, 0x7e, 0x88, 0x78, 0x34, 0xae, 0x5e, 0x4b, 0x76, 0x36, + 0x42, 0x60, 0xdc, 0x38, 0x33, 0x71, 0x73, 0x17, 0x3e, 0x71, 0x2f, 0x43, 0x81, 0xf2, 0x9e, 0xa8, + 0x14, 0xae, 0xcf, 0xdd, 0x58, 0xdc, 0x2a, 0x9d, 0x8e, 0xab, 0x85, 0x06, 0xef, 0x09, 0x54, 0xd0, + 0xda, 0xaf, 0xe4, 0x62, 0xcf, 0x28, 0x84, 0x58, 0x90, 0x17, 0x6f, 0x18, 0x45, 0xff, 0xee, 0xd9, + 0xbb, 0xaa, 0x3d, 0x68, 0xdd, 0x7a, 0x23, 0x64, 0xb8, 0x35, 0x7f, 0x3a, 0xae, 0xe6, 0xad, 0x37, + 0x30, 0x2f, 0xde, 0x20, 0x35, 0x98, 0x77, 0x3c, 0xd7, 0xf1, 0x98, 0x51, 0xa7, 0xd2, 0xfa, 0x9e, + 0x82, 0xa0, 0xc1, 0x90, 0x0e, 0x14, 0xba, 0x8e, 0xcb, 0xcc, 0x92, 0xde, 0x7d, 0x7a, 0x2d, 0xed, + 0x3a, 0x2e, 0x8b, 0x7a, 0xa1, 0xc6, 0x2c, 0x21, 0xa8, 0xb8, 0x93, 0x0f, 0x60, 0x6e, 0xc4, 0x5d, + 0xb5, 0xcc, 0x97, 0x6e, 0xee, 0x3c, 0xbd, 0x90, 0x03, 0x6c, 0x45, 0x32, 0x16, 0x4e, 0xc7, 0xd5, + 0xb9, 0x03, 0x6c, 0xa1, 0x64, 0x4d, 0x0e, 0x60, 0xd1, 0xf6, 0xbd, 0xae, 0xd3, 0x1b, 0xd0, 0x61, + 0xa5, 0xa8, 0xe4, 0xdc, 0x98, 0xe6, 0x9f, 0x9a, 0x8a, 0xe8, 0x2e, 0x1d, 0x4e, 0xb8, 0xa8, 0x66, + 0xd8, 0x1c, 0x63, 0x4e, 0xb2, 0xe3, 0x3d, 0x27, 0xa8, 0xcc, 0xcf, 0xda, 0xf1, 0xb7, 0x9d, 0x20, + 0xdd, 0xf1, 0xb7, 0x9d, 0x00, 0x25, 0x6b, 0x62, 0x43, 0x89, 0x33, 0xb3, 0xd0, 0x16, 0x94, 0x98, + 0x6f, 0x9f, 0x7b, 0xfe, 0xd1, 0x30, 0xd8, 0x2a, 0x9f, 0x8e, 0xab, 0xa5, 0xf0, 0x0b, 0x23, 0xc6, + 0xb5, 0x7f, 0x2e, 0xc0, 0xb5, 0xc6, 0xf7, 0x46, 0x9c, 0xed, 0x48, 0x06, 0xb7, 0x46, 0x87, 0x22, + 0x5c, 0xe5, 0xd7, 0xa1, 0xd0, 0x7d, 0xd0, 0xf1, 0xcc, 0xee, 0x52, 0x36, 0x96, 0x5d, 0xd8, 0x7d, + 0x67, 0xfb, 0x1e, 0x2a, 0x8c, 0x74, 0x25, 0xfd, 0xd1, 0xa1, 0xda, 0x82, 0xf2, 0x69, 0x57, 0x72, + 0x4b, 0x83, 0x31, 0xc4, 0x93, 0x21, 0x5c, 0x15, 0x7d, 0xca, 0x59, 0x27, 0xda, 0x42, 0x54, 0xb3, + 0x73, 0x6d, 0x17, 0x5f, 0x3a, 0x1d, 0x57, 0xaf, 0x5a, 0x93, 0x5c, 0x70, 0x1a, 0x6b, 0xd2, 0x81, + 0x95, 0x0c, 0xd8, 0x18, 0xd9, 0x19, 0xa5, 0x5d, 0x3d, 0x1d, 0x57, 0x57, 0x32, 0xd2, 0x30, 0xcb, + 0xf2, 0xd7, 0x74, 0x03, 0xaa, 0xfd, 0x4f, 0x01, 0x5e, 0x54, 0x56, 0x63, 0x31, 0x7e, 0xec, 0xd8, + 0x6c, 0x6b, 0x14, 0x99, 0x4d, 0x0f, 0x56, 0x6d, 0xdf, 0xf3, 0x98, 0x0a, 0x3a, 0xac, 0x80, 0x3b, + 0x5e, 0xcf, 0x78, 0xaf, 0x33, 0x2a, 0xfe, 0x85, 0xd3, 0x71, 0x75, 0xb5, 0x99, 0x61, 0x81, 0x13, + 0x4c, 0xc9, 0x06, 0x2c, 0x3e, 0x18, 0xb1, 0x11, 0x4b, 0xd8, 0xdf, 0x95, 0x70, 0x57, 0x78, 0x27, + 0x44, 0x60, 0x4c, 0x23, 0x1b, 0x04, 0xfe, 0xd0, 0xb1, 0x23, 0xcb, 0x4b, 0x34, 0x68, 0x87, 0x08, + 0x8c, 0x69, 0xc8, 0x36, 0xac, 0x8a, 0xd1, 0xa1, 0xb0, 0xb9, 0x33, 0x8c, 0x62, 0x2d, 0x1d, 0x8f, + 0x54, 0x4c, 0xbb, 0x55, 0x2b, 0x83, 0xc7, 0x89, 0x16, 0xe4, 0x00, 0xe6, 0x02, 0x57, 0x18, 0xcf, + 0xf3, 0xe6, 0xb9, 0x57, 0x70, 0xbb, 0x65, 0x69, 0xff, 0xa3, 0xbd, 0x43, 0xbb, 0x65, 0xa1, 0xe4, + 0x97, 0xb4, 0xbc, 0xf9, 0xe7, 0x66, 0x79, 0x0b, 0x17, 0x6e, 0x79, 0x3d, 0xb8, 0xd6, 0xf4, 0xbd, + 0x8e, 0x23, 0xd5, 0x2b, 0x90, 0x09, 0x16, 0x6c, 0x9d, 0xb4, 0x9d, 0x01, 0x93, 0xee, 0xca, 0xe6, + 0xfe, 0x84, 0xbb, 0x6a, 0x72, 0xdf, 0x43, 0x85, 0x21, 0x5f, 0x87, 0x92, 0x0c, 0xb5, 0xbf, 0xe7, + 0x47, 0xdb, 0xde, 0xaa, 0xa1, 0x2a, 0xb5, 0x0d, 0x1c, 0x23, 0x8a, 0xda, 0xc7, 0x39, 0xf8, 0x52, + 0x46, 0x52, 0x93, 0x3b, 0x01, 0xe3, 0x0e, 0x25, 0x02, 0xe6, 0x0f, 0x95, 0x54, 0x63, 0xd9, 0xf7, + 0x9f, 0x5e, 0x01, 0x53, 0x07, 0xa3, 0xf7, 0x63, 0xfd, 0x1b, 0x8d, 0xa8, 0xda, 0x3f, 0x15, 0x61, + 0xb9, 0x39, 0x12, 0x81, 0x3f, 0x08, 0x97, 0xda, 0x86, 0x8c, 0xbc, 0xf9, 0x31, 0xe3, 0x07, 0xd8, + 0x32, 0xe3, 0x8e, 0x0c, 0xda, 0x0a, 0x11, 0x18, 0xd3, 0xc8, 0xb0, 0x5a, 0x30, 0x7b, 0xc4, 0xf5, + 0xf8, 0x4b, 0x71, 0x58, 0x6d, 0x29, 0x28, 0x1a, 0x2c, 0x39, 0x00, 0xb0, 0x19, 0x0f, 0xf4, 0xda, + 0x3c, 0x9f, 0x93, 0xbe, 0x2c, 0xe7, 0xae, 0x19, 0x35, 0xc6, 0x04, 0x23, 0x72, 0x1b, 0x88, 0xee, + 0x8b, 0x5c, 0x17, 0xf7, 0x8f, 0x19, 0xe7, 0x4e, 0x27, 0x5c, 0x51, 0x6b, 0xa6, 0x2b, 0xc4, 0x9a, + 0xa0, 0xc0, 0x29, 0xad, 0x88, 0x80, 0x82, 0x18, 0x32, 0xdb, 0x78, 0xdd, 0x77, 0x66, 0x98, 0x80, + 0xa4, 0x4a, 0xeb, 0xd6, 0x90, 0xd9, 0x3b, 0x5e, 0xc0, 0x4f, 0x62, 0x0b, 0x92, 0x20, 0x54, 0xc2, + 0x9e, 0x7b, 0xdc, 0x9f, 0x58, 0xf3, 0x0b, 0x17, 0xb7, 0xe6, 0xd7, 0xbe, 0x05, 0x8b, 0x91, 0x5e, + 0xc8, 0x2a, 0xcc, 0x1d, 0xb1, 0x13, 0x6d, 0x6e, 0x28, 0x7f, 0x92, 0x17, 0xa0, 0x78, 0x4c, 0xdd, + 0x91, 0x59, 0x54, 0xa8, 0x3f, 0xde, 0xcc, 0x6f, 0xe6, 0x6a, 0xbf, 0xcc, 0x01, 0x6c, 0xd3, 0x80, + 0xee, 0x3a, 0x6e, 0xa0, 0x23, 0x8a, 0x21, 0x0d, 0xfa, 0xd9, 0x25, 0xba, 0x4f, 0x83, 0x3e, 0x2a, + 0x0c, 0xf9, 0x3a, 0x14, 0x02, 0x99, 0xce, 0xe4, 0x53, 0x5e, 0xb6, 0x20, 0x13, 0x97, 0x47, 0xe3, + 0x6a, 0xe9, 0xb6, 0x75, 0xff, 0x9e, 0x4a, 0x6a, 0x14, 0x15, 0xa9, 0x86, 0x82, 0xe7, 0x54, 0x38, + 0xbd, 0x78, 0x3a, 0xae, 0x16, 0xdf, 0x95, 0x00, 0xd3, 0x07, 0xf2, 0x16, 0x80, 0xed, 0x0f, 0xa4, + 0x02, 0x03, 0x9f, 0x1b, 0x43, 0xbb, 0x1e, 0xea, 0xb8, 0x19, 0x61, 0x1e, 0xa5, 0xbe, 0x30, 0xd1, + 0x46, 0xf9, 0x0c, 0x36, 0x18, 0xba, 0x34, 0x60, 0xca, 0x83, 0x27, 0x7d, 0x86, 0x81, 0x63, 0x44, + 0x51, 0xfb, 0x69, 0x0e, 0x8a, 0x2a, 0x8e, 0x22, 0x03, 0x58, 0xb0, 0x7d, 0x2f, 0x60, 0x1f, 0x05, + 0xc6, 0x45, 0xcc, 0x10, 0x3f, 0x2b, 0x8e, 0x4d, 0xcd, 0x6d, 0x6b, 0x49, 0xce, 0x90, 0xf9, 0xc0, + 0x50, 0x86, 0xcc, 0x2b, 0x3a, 0x34, 0xa0, 0x4a, 0x6f, 0x65, 0x1d, 0x63, 0x4b, 0xbd, 0xa3, 0x82, + 0xbe, 0x59, 0xfa, 0x9b, 0xbf, 0xad, 0x5e, 0xfa, 0xc1, 0xbf, 0x5d, 0xbf, 0x54, 0xfb, 0x55, 0x1e, + 0xca, 0x49, 0x76, 0x64, 0x0d, 0xf2, 0x4e, 0xc7, 0x4c, 0x08, 0x98, 0x91, 0xe5, 0xf7, 0xb6, 0x31, + 0xef, 0x74, 0x94, 0xb7, 0xd0, 0xd1, 0x67, 0x3e, 0x9d, 0x84, 0x67, 0xd2, 0xb3, 0x6f, 0xc2, 0x92, + 0x5c, 0x1d, 0xc7, 0x8c, 0x0b, 0x99, 0xa0, 0xe9, 0x9d, 0xf5, 0xaa, 0x21, 0x5e, 0x92, 0x96, 0xf3, + 0xae, 0x46, 0x61, 0x92, 0x4e, 0x5a, 0x83, 0x9a, 0xeb, 0x42, 0xda, 0x1a, 0x12, 0xf3, 0xdb, 0x80, + 0x15, 0xd9, 0x7f, 0x35, 0x48, 0x2f, 0x50, 0xc4, 0x7a, 0x0e, 0xbe, 0x64, 0x88, 0x57, 0xe4, 0x20, + 0x9b, 0x1a, 0xad, 0xda, 0x65, 0xe9, 0x65, 0x88, 0x2a, 0x46, 0x87, 0x1f, 0x32, 0x5b, 0x47, 0xea, + 0x89, 0x10, 0xd5, 0xd2, 0x60, 0x0c, 0xf1, 0xa4, 0x05, 0x05, 0xe9, 0xfc, 0x4d, 0xa8, 0xfd, 0xb5, + 0x84, 0xbb, 0x8b, 0x2a, 0x36, 0xf1, 0x1c, 0x0d, 0x58, 0x40, 0xa5, 0x03, 0x54, 0xde, 0x3a, 0xee, + 0xbb, 0xf4, 0xd7, 0x8a, 0x4b, 0x42, 0xe7, 0x1f, 0x17, 0x60, 0x45, 0xe9, 0x7c, 0x9b, 0x0d, 0x99, + 0xd7, 0x61, 0x9e, 0x7d, 0x22, 0xc7, 0xee, 0xc5, 0x95, 0x9b, 0xa8, 0xbd, 0x8a, 0x20, 0x14, 0x46, + 0x8e, 0x5d, 0xd9, 0x85, 0xd6, 0x75, 0x22, 0xc6, 0x89, 0xc6, 0xbe, 0x93, 0x46, 0x63, 0x96, 0x5e, + 0x6e, 0x0f, 0x0a, 0x34, 0x2d, 0xde, 0xd9, 0x09, 0x11, 0x18, 0xd3, 0x90, 0x63, 0x58, 0xe8, 0xaa, + 0x95, 0x2a, 0x4c, 0xa8, 0x7c, 0x7f, 0x46, 0xa3, 0x8d, 0x47, 0xac, 0x3d, 0x80, 0xb6, 0x5e, 0xfd, + 0x5b, 0x60, 0x28, 0x8c, 0xfc, 0x59, 0x0e, 0x16, 0x03, 0x4e, 0x3d, 0xd1, 0xf5, 0xf9, 0xc0, 0x04, + 0x4a, 0xed, 0x67, 0x26, 0xba, 0x1d, 0x72, 0x66, 0x26, 0x9d, 0x8b, 0x00, 0x18, 0x4b, 0x25, 0x0e, + 0xbc, 0x68, 0xba, 0xd3, 0xf2, 0x7b, 0x8e, 0x4d, 0x5d, 0x5d, 0x3f, 0xf0, 0xb9, 0xb1, 0x9b, 0xd7, + 0x8d, 0xe6, 0x5e, 0xdc, 0x9d, 0x4a, 0xf5, 0x68, 0x5c, 0x5d, 0xc9, 0x80, 0xf0, 0x31, 0x0c, 0x6b, + 0x7f, 0x5f, 0x84, 0x6b, 0x53, 0xd5, 0x43, 0x0e, 0x8d, 0x09, 0x6a, 0x97, 0xb1, 0x3d, 0x83, 0x73, + 0x77, 0x06, 0xcc, 0xa8, 0xbc, 0x94, 0x36, 0xcc, 0xa4, 0x67, 0xca, 0x5f, 0x80, 0x67, 0xea, 0x1a, + 0xcf, 0xa4, 0x6b, 0x2d, 0x33, 0x0c, 0x29, 0xde, 0x47, 0xe2, 0xf5, 0x12, 0xfb, 0x38, 0xe2, 0x40, + 0x91, 0x7d, 0x34, 0xe4, 0xba, 0xb4, 0x32, 0x93, 0xa0, 0x9d, 0x8f, 0x86, 0xdc, 0x08, 0x5a, 0x36, + 0x82, 0x8a, 0x12, 0x26, 0x50, 0x4b, 0x20, 0x1f, 0xc0, 0x55, 0x29, 0x32, 0x6b, 0x27, 0xda, 0x35, + 0xd5, 0x4d, 0x93, 0xab, 0xdb, 0x93, 0x24, 0xd3, 0x8c, 0x64, 0x1a, 0x2b, 0x29, 0x41, 0x8a, 0x9a, + 0x6e, 0x89, 0x91, 0x84, 0x9d, 0x49, 0x92, 0xa9, 0x12, 0xa6, 0xb0, 0x52, 0xbe, 0x5d, 0x65, 0x29, + 0xa6, 0x72, 0x18, 0xfb, 0x76, 0x05, 0x45, 0x83, 0xad, 0x7d, 0x00, 0x6b, 0x8f, 0x5f, 0x4e, 0x72, + 0xf7, 0xf8, 0xf0, 0x41, 0x76, 0xf7, 0xb8, 0xfd, 0x0e, 0xe6, 0x3f, 0x7c, 0x90, 0x90, 0x90, 0xff, + 0x5c, 0x09, 0x3f, 0xcd, 0x01, 0xc4, 0x2a, 0x97, 0x9e, 0x51, 0xf6, 0x37, 0xeb, 0x19, 0x25, 0x05, + 0x2a, 0x0c, 0xf1, 0x60, 0xbe, 0xeb, 0x30, 0xb7, 0x23, 0x2a, 0x79, 0x35, 0xd5, 0x33, 0xd8, 0xaf, + 0x89, 0x74, 0x76, 0x25, 0xbb, 0xb8, 0x83, 0xea, 0x53, 0xa0, 0x91, 0x52, 0x7b, 0x0d, 0xca, 0xc9, + 0x0a, 0xd6, 0x93, 0xa3, 0x98, 0xda, 0x5f, 0x16, 0x61, 0x29, 0x51, 0xd6, 0x21, 0xaf, 0xe8, 0x1a, + 0x97, 0x6e, 0xb0, 0x64, 0x1a, 0xc4, 0x05, 0xaa, 0xef, 0xc0, 0x65, 0xdb, 0xf5, 0x3d, 0xb6, 0xed, + 0x70, 0x15, 0x43, 0x9f, 0x18, 0x8d, 0xbd, 0x68, 0x28, 0x2f, 0x37, 0x53, 0x58, 0xcc, 0x50, 0x13, + 0x1b, 0x8a, 0x36, 0x67, 0x1d, 0x61, 0x02, 0xf5, 0xad, 0x99, 0x6a, 0x51, 0x4d, 0xc9, 0x49, 0x87, + 0x52, 0xea, 0x27, 0x6a, 0xde, 0xe4, 0x0f, 0xa1, 0x2c, 0x44, 0x5f, 0x45, 0xfa, 0x2a, 0x29, 0x38, + 0x57, 0x2d, 0x65, 0xf5, 0x74, 0x5c, 0x2d, 0x5b, 0xd6, 0xad, 0xa8, 0x39, 0xa6, 0x98, 0xc9, 0x28, + 0xab, 0xeb, 0xb8, 0x4c, 0xaa, 0x30, 0x1b, 0x65, 0xed, 0x1a, 0x38, 0x46, 0x14, 0xd2, 0xb2, 0x0e, + 0x39, 0xf5, 0xec, 0xbe, 0x59, 0x10, 0xd1, 0xc4, 0x6d, 0x29, 0x28, 0x1a, 0xac, 0x54, 0x7b, 0x40, + 0x7b, 0xc6, 0xc0, 0x23, 0xb5, 0xb7, 0x69, 0x0f, 0x25, 0x5c, 0xa2, 0x39, 0xeb, 0x9a, 0x22, 0x78, + 0x84, 0x46, 0xd6, 0x45, 0x09, 0x27, 0x03, 0x98, 0xe7, 0x6c, 0xe0, 0x07, 0xac, 0xb2, 0xa8, 0x86, + 0xba, 0x37, 0x93, 0x5a, 0x51, 0xb1, 0x32, 0x89, 0x3c, 0xe8, 0x93, 0x0c, 0x09, 0x41, 0x23, 0x84, + 0x58, 0x70, 0xcd, 0xf1, 0x74, 0xfa, 0xb5, 0xd7, 0xf3, 0x7c, 0xce, 0x6e, 0xf9, 0x42, 0x9d, 0xa8, + 0x80, 0xca, 0xd4, 0x5e, 0x31, 0xfd, 0xbb, 0xb6, 0x37, 0x8d, 0x08, 0xa7, 0xb7, 0xad, 0xfd, 0x63, + 0x0e, 0x4a, 0xe1, 0x9c, 0x92, 0xfb, 0x50, 0x1a, 0x09, 0xc6, 0xa3, 0xb8, 0xe3, 0xcc, 0xb3, 0xa7, + 0x4a, 0x87, 0x07, 0xa6, 0x29, 0x46, 0x4c, 0x24, 0xc3, 0x21, 0x15, 0xe2, 0xa1, 0xcf, 0x3b, 0xe7, + 0x3b, 0x4b, 0x52, 0x0c, 0xf7, 0x4d, 0x53, 0x8c, 0x98, 0xd4, 0xde, 0x81, 0x95, 0x8c, 0xaa, 0xce, + 0x10, 0x28, 0xbd, 0x0c, 0x85, 0x11, 0x77, 0xb5, 0x33, 0x30, 0x25, 0xf5, 0x03, 0x6c, 0x59, 0xa8, + 0xa0, 0xb5, 0xff, 0x9c, 0x87, 0xa5, 0x5b, 0xed, 0xf6, 0x7e, 0x98, 0x32, 0x3f, 0x61, 0x29, 0x26, + 0x12, 0xac, 0xfc, 0x05, 0x16, 0x55, 0x4c, 0x89, 0x68, 0xee, 0x19, 0x97, 0x88, 0x5e, 0x85, 0xf9, + 0x01, 0x0b, 0xfa, 0x7e, 0x27, 0x7b, 0x8a, 0x76, 0x57, 0x41, 0xd1, 0x60, 0x33, 0x69, 0x6d, 0xf1, + 0xc2, 0xd3, 0xda, 0xaf, 0xc2, 0x82, 0x0c, 0x4d, 0xfc, 0x91, 0x0e, 0xd2, 0xe7, 0x62, 0x4d, 0xb5, + 0x35, 0x18, 0x43, 0x3c, 0xe9, 0xc1, 0xe2, 0x21, 0x15, 0x8e, 0xdd, 0x18, 0x05, 0x7d, 0x13, 0xa9, + 0x9f, 0x5f, 0x5f, 0x5b, 0x21, 0x07, 0x1d, 0x0f, 0x46, 0x9f, 0x18, 0xf3, 0x26, 0xdf, 0x87, 0x85, + 0x3e, 0xa3, 0x1d, 0xa9, 0x90, 0x92, 0x52, 0x08, 0x3e, 0xbd, 0x42, 0x12, 0x06, 0x58, 0xbf, 0xa5, + 0x99, 0xea, 0x1a, 0x43, 0x5c, 0x2f, 0xd7, 0x50, 0x0c, 0x65, 0x92, 0x63, 0x58, 0xd6, 0x0b, 0xda, + 0x60, 0x2a, 0x8b, 0xaa, 0x13, 0xbf, 0x77, 0xfe, 0x03, 0xa0, 0x04, 0x97, 0xad, 0x2b, 0xa7, 0xe3, + 0xea, 0x72, 0x12, 0x22, 0x30, 0x2d, 0x66, 0xed, 0x4d, 0x28, 0x27, 0x7b, 0x78, 0xae, 0x6c, 0xff, + 0x2f, 0xe6, 0xe0, 0xca, 0x9d, 0x4d, 0x2b, 0x3c, 0x64, 0xd8, 0xf7, 0x5d, 0xc7, 0x3e, 0x21, 0x7f, + 0x0a, 0xf3, 0x2e, 0x3d, 0x64, 0xae, 0xa8, 0xe4, 0xd4, 0x10, 0xde, 0x7b, 0x7a, 0x3d, 0x4e, 0x30, + 0xaf, 0xb7, 0x14, 0x67, 0xad, 0xcc, 0xc8, 0xba, 0x35, 0x10, 0x8d, 0x58, 0xf2, 0x3e, 0x2c, 0x1c, + 0x52, 0xfb, 0xc8, 0xef, 0x76, 0x8d, 0x97, 0xda, 0x7c, 0x0a, 0x83, 0x51, 0xed, 0x75, 0x88, 0x6b, + 0x3e, 0x30, 0xe4, 0x2a, 0x5d, 0x37, 0xe3, 0xdc, 0xe7, 0xf7, 0x3d, 0x83, 0x32, 0x56, 0xab, 0xd6, + 0x73, 0xc2, 0x75, 0xef, 0x4c, 0x23, 0xc2, 0xe9, 0x6d, 0xd7, 0xbe, 0x0d, 0x4b, 0x89, 0xc1, 0x9d, + 0x6b, 0x1e, 0x7e, 0x36, 0x0f, 0xe5, 0x3b, 0xb4, 0x7b, 0x44, 0xcf, 0xe8, 0xf4, 0xbe, 0x02, 0x45, + 0x55, 0xf3, 0x36, 0x61, 0x47, 0x14, 0xf4, 0xaa, 0x9a, 0x38, 0x6a, 0x9c, 0x4c, 0x26, 0x87, 0x94, + 0x07, 0xaa, 0x54, 0xa9, 0x06, 0x56, 0x8c, 0x93, 0xc9, 0xfd, 0x10, 0x81, 0x31, 0x4d, 0xc6, 0xa9, + 0x14, 0x2e, 0xdc, 0xa9, 0x6c, 0x42, 0x99, 0xb3, 0x07, 0x23, 0x47, 0x1d, 0xd7, 0x1c, 0xe9, 0xfa, + 0x7b, 0x31, 0xbe, 0x24, 0x81, 0x09, 0x1c, 0xa6, 0x28, 0x65, 0x34, 0x62, 0xfb, 0x83, 0x21, 0x67, + 0x42, 0x28, 0x7f, 0x54, 0x8a, 0xa3, 0x91, 0xa6, 0x81, 0x63, 0x44, 0x21, 0xa3, 0xb7, 0xae, 0x3b, + 0x12, 0xfd, 0x5d, 0xc9, 0x43, 0x06, 0xc8, 0xca, 0x2d, 0x15, 0xe3, 0xe8, 0x6d, 0x37, 0x85, 0xc5, + 0x0c, 0x75, 0xe8, 0xfb, 0x4b, 0x5f, 0xdc, 0xf1, 0xc0, 0xe2, 0x05, 0xee, 0x64, 0x0d, 0x58, 0x89, + 0x4c, 0xc0, 0xf1, 0x7a, 0x61, 0x00, 0x93, 0x28, 0x5b, 0xec, 0xa7, 0xd1, 0x98, 0xa5, 0x97, 0xbb, + 0x41, 0x58, 0x4a, 0x5a, 0x4a, 0x97, 0x6c, 0xc2, 0x32, 0x52, 0x88, 0x27, 0xbf, 0x0f, 0x05, 0x41, + 0x85, 0x5b, 0x29, 0x3f, 0xed, 0xe9, 0x78, 0xc3, 0x6a, 0x19, 0xed, 0xa9, 0xc0, 0x41, 0x7e, 0xa3, + 0x62, 0x59, 0xbb, 0x0f, 0xd0, 0xf2, 0x7b, 0xe1, 0x0a, 0x6a, 0xc0, 0x8a, 0xe3, 0x05, 0x8c, 0x1f, + 0x53, 0xd7, 0x62, 0xb6, 0xef, 0x75, 0x84, 0x5a, 0x4d, 0x85, 0x78, 0x58, 0x7b, 0x69, 0x34, 0x66, + 0xe9, 0x6b, 0x7f, 0x37, 0x07, 0x4b, 0xf7, 0x1a, 0x6d, 0xeb, 0x8c, 0x8b, 0x32, 0x51, 0xb8, 0xca, + 0x3f, 0xa1, 0x70, 0x95, 0x98, 0xea, 0xb9, 0xe7, 0x76, 0x12, 0x74, 0xf1, 0x0b, 0xfc, 0x8b, 0x39, + 0x57, 0xab, 0xfd, 0xb8, 0x00, 0xab, 0xf7, 0x87, 0xcc, 0x7b, 0xaf, 0xef, 0x88, 0xa3, 0xc4, 0x59, + 0x78, 0xdf, 0x17, 0x41, 0x36, 0x0c, 0x95, 0x71, 0x36, 0x2a, 0x4c, 0xd2, 0x6a, 0xf3, 0x4f, 0xb0, + 0xda, 0x0d, 0x58, 0x94, 0x91, 0xab, 0x18, 0x52, 0x7b, 0xa2, 0x2e, 0x77, 0x2f, 0x44, 0x60, 0x4c, + 0xa3, 0x6e, 0x6d, 0x8d, 0x82, 0x7e, 0xdb, 0x3f, 0x62, 0xde, 0xf9, 0x12, 0x2f, 0x7d, 0x6b, 0x2b, + 0x6c, 0x8b, 0x31, 0x1b, 0x72, 0x13, 0x80, 0xc6, 0x37, 0xc8, 0x74, 0xd2, 0x15, 0x69, 0xbc, 0x11, + 0xdf, 0x1f, 0x4b, 0x50, 0xfd, 0xba, 0x1e, 0x39, 0x22, 0x94, 0x93, 0x85, 0x82, 0x33, 0x1c, 0x63, + 0x84, 0x59, 0x4b, 0xfe, 0x71, 0x59, 0x4b, 0xed, 0x1f, 0x16, 0x60, 0x79, 0x7f, 0xe4, 0x0a, 0xca, + 0x9f, 0xe5, 0x26, 0xfd, 0xbc, 0xaf, 0x37, 0x25, 0x0c, 0xa4, 0x70, 0x81, 0x06, 0x32, 0x84, 0xab, + 0x81, 0x2b, 0xda, 0x7c, 0x24, 0x82, 0x26, 0xe3, 0x81, 0x30, 0x25, 0x8a, 0xe2, 0xb9, 0x2f, 0x97, + 0xb4, 0x5b, 0x56, 0x96, 0x0b, 0x4e, 0x63, 0x4d, 0x0e, 0x61, 0x2d, 0x70, 0x45, 0xc3, 0x75, 0xfd, + 0x87, 0x61, 0x42, 0x1e, 0xdf, 0x58, 0x30, 0x41, 0x43, 0xcd, 0xf4, 0x77, 0xad, 0xdd, 0xb2, 0x1e, + 0x43, 0x89, 0x9f, 0xc3, 0x85, 0xdc, 0x55, 0xa3, 0x7a, 0x97, 0xba, 0x4e, 0x87, 0x06, 0x2a, 0xa5, + 0x57, 0x36, 0xb5, 0xa0, 0x98, 0x7f, 0x39, 0x2c, 0x02, 0xb6, 0x5b, 0x56, 0x96, 0x04, 0xa7, 0xb5, + 0xfb, 0xa2, 0xe2, 0x8c, 0x0e, 0xac, 0x44, 0x4e, 0xc5, 0xe8, 0x7d, 0xf1, 0xdc, 0xd7, 0x6c, 0x1a, + 0x69, 0x0e, 0x98, 0x65, 0x49, 0xbe, 0x0f, 0x57, 0xe2, 0xfb, 0x1f, 0x26, 0x52, 0x56, 0x81, 0xc5, + 0x2c, 0xd1, 0xfc, 0xb5, 0xd3, 0x71, 0xf5, 0x4a, 0x33, 0xcb, 0x16, 0x27, 0x25, 0xd5, 0xfe, 0x3c, + 0x07, 0x8b, 0x48, 0x03, 0xd6, 0x72, 0x06, 0x4e, 0x40, 0x6e, 0x42, 0x61, 0xe4, 0x39, 0xe1, 0x66, + 0xb0, 0x1e, 0xae, 0xee, 0x03, 0xcf, 0x09, 0x1e, 0x8d, 0xab, 0x97, 0x23, 0x42, 0x26, 0x21, 0xa8, + 0x68, 0x65, 0x00, 0xa1, 0x22, 0x3e, 0x11, 0x88, 0x7d, 0xc6, 0x25, 0x42, 0x2d, 0xe4, 0x62, 0x1c, + 0x40, 0x60, 0x1a, 0x8d, 0x59, 0xfa, 0xda, 0xcf, 0xf2, 0x30, 0x6f, 0xa9, 0x45, 0x42, 0x3e, 0x80, + 0xd2, 0x80, 0x05, 0x54, 0x15, 0xd6, 0x75, 0x29, 0xe7, 0xb5, 0xb3, 0x1d, 0x57, 0xdd, 0x57, 0x11, + 0xc3, 0x5d, 0x16, 0xd0, 0x78, 0x2d, 0xc7, 0x30, 0x8c, 0xb8, 0x92, 0xae, 0x39, 0x5e, 0xcf, 0xcf, + 0x7a, 0x12, 0xa1, 0x7b, 0x6c, 0x0d, 0x99, 0x3d, 0xf5, 0x44, 0xdd, 0x83, 0x79, 0x11, 0xd0, 0x60, + 0x24, 0x66, 0xbf, 0x66, 0x68, 0x24, 0x29, 0x6e, 0x89, 0x6a, 0xb3, 0xfa, 0x46, 0x23, 0xa5, 0xf6, + 0xaf, 0x39, 0x00, 0x4d, 0xd8, 0x72, 0x44, 0x40, 0xfe, 0x68, 0x42, 0x91, 0xf5, 0xb3, 0x29, 0x52, + 0xb6, 0x56, 0x6a, 0x8c, 0x52, 0x83, 0x10, 0x92, 0x50, 0x22, 0x83, 0xa2, 0x13, 0xb0, 0x41, 0x58, + 0xa8, 0x7e, 0x6b, 0xd6, 0xb1, 0xc5, 0x5e, 0x7f, 0x4f, 0xb2, 0x45, 0xcd, 0xbd, 0xf6, 0xc9, 0x7c, + 0x38, 0x26, 0xa9, 0x58, 0xf2, 0xc3, 0x1c, 0x94, 0x3b, 0x61, 0xb9, 0xde, 0x61, 0x61, 0xde, 0xbd, + 0xf7, 0xcc, 0x0e, 0xd4, 0xe2, 0x24, 0x6a, 0x3b, 0x21, 0x06, 0x53, 0x42, 0x89, 0x0f, 0xa5, 0x40, + 0x7b, 0xf0, 0x70, 0xf8, 0x8d, 0x99, 0xf7, 0x82, 0xc4, 0xd9, 0xbb, 0x61, 0x8d, 0x91, 0x10, 0xe2, + 0x26, 0x4e, 0xea, 0x67, 0x2e, 0x84, 0x87, 0x67, 0xfb, 0xba, 0x54, 0x39, 0x79, 0xd2, 0x4f, 0x6e, + 0x03, 0x31, 0x79, 0xfb, 0x2e, 0x75, 0x5c, 0xd6, 0x41, 0x7f, 0xe4, 0xe9, 0x32, 0x5b, 0x29, 0xbe, + 0xca, 0xb2, 0x33, 0x41, 0x81, 0x53, 0x5a, 0xc9, 0x4c, 0x55, 0xf5, 0x67, 0x6b, 0x24, 0x12, 0xc1, + 0x58, 0xa4, 0xe4, 0x9d, 0x04, 0x0e, 0x53, 0x94, 0xe4, 0x06, 0x94, 0x38, 0x1b, 0xba, 0x8e, 0x4d, + 0x75, 0xa6, 0x5a, 0x0c, 0xaf, 0x79, 0x6a, 0x18, 0x46, 0x58, 0xd2, 0x82, 0x17, 0x38, 0x3b, 0x76, + 0x64, 0xfc, 0x79, 0xcb, 0x11, 0x81, 0xcf, 0x4f, 0x94, 0x8b, 0x32, 0xb9, 0x6a, 0xe5, 0x74, 0x5c, + 0x7d, 0x01, 0xa7, 0xe0, 0x71, 0x6a, 0x2b, 0xf2, 0x93, 0x1c, 0x2c, 0xbb, 0x7e, 0xaf, 0xe7, 0x78, + 0x3d, 0x7d, 0x58, 0x62, 0x6a, 0x64, 0xef, 0x3d, 0x0b, 0x3f, 0x51, 0x6f, 0x25, 0x39, 0xeb, 0xda, + 0xce, 0x35, 0xa3, 0x8c, 0xe5, 0x14, 0x0e, 0xd3, 0x9d, 0x58, 0x7b, 0x0b, 0xc8, 0x64, 0xdb, 0x73, + 0x95, 0x4e, 0x7c, 0x28, 0x27, 0xdd, 0x08, 0x79, 0x3f, 0x72, 0x4f, 0xda, 0x3b, 0x7c, 0xeb, 0xfc, + 0x29, 0xe6, 0xe7, 0xfb, 0xa3, 0x3f, 0x86, 0x25, 0xcb, 0xa5, 0xf6, 0x91, 0x25, 0x57, 0x8e, 0xba, + 0x6e, 0x92, 0xaa, 0xd1, 0x27, 0x0e, 0x42, 0xa6, 0x14, 0xe0, 0xaf, 0x43, 0xc1, 0xb1, 0xa3, 0x84, + 0x23, 0x72, 0xaf, 0x7b, 0xb6, 0xef, 0xa1, 0xc2, 0xd4, 0xfe, 0x25, 0x67, 0xf8, 0xb7, 0xfb, 0x9c, + 0xd1, 0x0e, 0xb1, 0xe0, 0xda, 0x80, 0x09, 0x41, 0x7b, 0xac, 0xd1, 0xeb, 0x71, 0xd6, 0x53, 0x57, + 0xcc, 0xef, 0x84, 0xda, 0x89, 0x4b, 0x55, 0x77, 0xa7, 0x11, 0xe1, 0xf4, 0xb6, 0xe4, 0x7d, 0x78, + 0xe9, 0x90, 0xfb, 0xb4, 0x63, 0x53, 0xe9, 0x01, 0x15, 0x45, 0xdb, 0x6f, 0xf6, 0xa9, 0xe7, 0x31, + 0xd7, 0x5c, 0x34, 0xfb, 0x0d, 0xc3, 0xf8, 0xa5, 0xad, 0xc7, 0x11, 0xe2, 0xe3, 0x79, 0xd4, 0xfe, + 0xb7, 0x00, 0x65, 0x3d, 0x0a, 0x13, 0x2b, 0xa7, 0xe3, 0xdc, 0xdc, 0x73, 0x48, 0x3d, 0x41, 0xa8, + 0xfe, 0xa8, 0x8c, 0x2c, 0x7f, 0xee, 0xfb, 0x71, 0x56, 0xd4, 0x18, 0x13, 0x8c, 0x64, 0x0e, 0x69, + 0x1b, 0xb5, 0xcd, 0xa5, 0x73, 0xc8, 0x50, 0x49, 0x21, 0x5e, 0x92, 0x9a, 0xc9, 0x30, 0xb5, 0xfd, + 0x88, 0xd4, 0x68, 0x0f, 0x43, 0x3c, 0xf9, 0x26, 0x2c, 0xd1, 0x20, 0xa0, 0x76, 0x7f, 0x20, 0xb5, + 0x60, 0xbc, 0x4b, 0x74, 0x3d, 0xa7, 0x11, 0xa3, 0x30, 0x49, 0xa7, 0x4e, 0xd9, 0x5c, 0xdf, 0x3e, + 0x12, 0x13, 0xa7, 0x6c, 0x0a, 0x8a, 0x06, 0x4b, 0x06, 0x30, 0x1f, 0x28, 0xe3, 0x32, 0xe5, 0xf8, + 0x19, 0xae, 0xc2, 0x27, 0x2c, 0x35, 0x16, 0xa7, 0xbf, 0xd1, 0x08, 0x91, 0xe2, 0x84, 0x5a, 0x2b, + 0x26, 0x92, 0x9d, 0x55, 0x9c, 0x5e, 0x78, 0xc9, 0x9b, 0x90, 0xf2, 0x1b, 0x8d, 0x90, 0xda, 0x7f, + 0xcf, 0x01, 0xb1, 0x02, 0xea, 0x75, 0x28, 0xef, 0xdc, 0xd9, 0xb4, 0x9e, 0xd7, 0x0b, 0x98, 0x7b, + 0x93, 0x2f, 0x60, 0x5e, 0x9b, 0xf6, 0x02, 0xe6, 0xcb, 0x77, 0x46, 0x87, 0x8c, 0x7b, 0x2c, 0x60, + 0x22, 0xac, 0x94, 0xff, 0xbf, 0x7c, 0x07, 0xd3, 0x85, 0xe5, 0x21, 0x0d, 0xec, 0xbe, 0x15, 0x70, + 0x1a, 0xb0, 0xde, 0x89, 0x31, 0xe2, 0xb7, 0x42, 0x37, 0xbf, 0x9f, 0x44, 0x3e, 0x1a, 0x57, 0x7f, + 0xeb, 0x71, 0xcf, 0xe7, 0x82, 0x93, 0x21, 0x13, 0x75, 0x45, 0xae, 0x2e, 0x80, 0xa5, 0xd9, 0x92, + 0x9b, 0x00, 0xae, 0x73, 0xcc, 0x74, 0x88, 0xab, 0x4c, 0xbf, 0x14, 0xf7, 0xad, 0x15, 0x61, 0x30, + 0x41, 0x55, 0xdb, 0x80, 0xb2, 0x76, 0xd2, 0xe6, 0x00, 0xa3, 0x0a, 0x45, 0x2a, 0x53, 0x34, 0xe5, + 0x67, 0x8a, 0xfa, 0x68, 0x5c, 0xe5, 0x6c, 0xa8, 0xe1, 0xb5, 0x1f, 0x95, 0x20, 0x0a, 0x11, 0x88, + 0x3d, 0x11, 0x51, 0x9e, 0xff, 0xd1, 0xc6, 0x5d, 0xc3, 0x40, 0xef, 0xe6, 0xe1, 0x57, 0x22, 0xb0, + 0x34, 0x17, 0x69, 0x1d, 0x9b, 0x35, 0x6c, 0xdb, 0x1f, 0x99, 0x2b, 0x5e, 0xf9, 0xc9, 0x8b, 0xb4, + 0x69, 0x0a, 0x9c, 0xd2, 0x8a, 0xdc, 0x56, 0xcf, 0x63, 0x02, 0x2a, 0x75, 0x6a, 0x02, 0xa7, 0x57, + 0x1e, 0xf3, 0x3c, 0x46, 0x13, 0x45, 0x6f, 0x62, 0xf4, 0x27, 0xc6, 0xcd, 0xc9, 0x0e, 0x2c, 0x1c, + 0xfb, 0xee, 0x68, 0xc0, 0xc2, 0x7a, 0xe0, 0xda, 0x34, 0x4e, 0xef, 0x2a, 0x92, 0x44, 0x81, 0x4c, + 0x37, 0xc1, 0xb0, 0x2d, 0x61, 0xb0, 0xa2, 0xb2, 0x61, 0x27, 0x38, 0x31, 0xf7, 0x89, 0x4c, 0x2e, + 0xff, 0xea, 0x34, 0x76, 0xfb, 0x7e, 0xc7, 0x4a, 0x53, 0x9b, 0xb7, 0x1b, 0x69, 0x20, 0x66, 0x79, + 0x92, 0x8f, 0x73, 0x50, 0xf6, 0xfc, 0x0e, 0x0b, 0x7d, 0xb3, 0x29, 0x6a, 0xb5, 0x67, 0x0f, 0x1b, + 0xeb, 0xf7, 0x12, 0x6c, 0x75, 0x04, 0x13, 0x85, 0x73, 0x49, 0x14, 0xa6, 0xe4, 0x93, 0x03, 0x58, + 0x0a, 0x7c, 0xd7, 0xac, 0xd1, 0xb0, 0xd2, 0xb5, 0x3e, 0x6d, 0xcc, 0xed, 0x88, 0x2c, 0xf6, 0xe4, + 0x31, 0x4c, 0x60, 0x92, 0x0f, 0xf1, 0x60, 0xd5, 0x19, 0xd0, 0x1e, 0xdb, 0x1f, 0xb9, 0xae, 0xde, + 0x90, 0xc2, 0x78, 0x6d, 0xea, 0x3b, 0x28, 0xe9, 0x88, 0x5c, 0xb3, 0x2e, 0x58, 0x97, 0x71, 0xe6, + 0xd9, 0x2c, 0x7e, 0xf0, 0xb0, 0x97, 0xe1, 0x84, 0x13, 0xbc, 0xc9, 0xdb, 0x70, 0x65, 0xc8, 0x1d, + 0x5f, 0xa9, 0xda, 0xa5, 0x42, 0x07, 0xb5, 0x8b, 0xca, 0x38, 0x5f, 0x32, 0x6c, 0xae, 0xec, 0x67, + 0x09, 0x70, 0xb2, 0x8d, 0x0c, 0x6f, 0x43, 0xa0, 0x4a, 0xf6, 0x4d, 0x78, 0x1b, 0xb6, 0xc5, 0x08, + 0x4b, 0x76, 0xa1, 0x44, 0xbb, 0x5d, 0xc7, 0x93, 0x94, 0x4b, 0xca, 0x54, 0x5e, 0x9e, 0x36, 0xb4, + 0x86, 0xa1, 0xd1, 0x7c, 0xc2, 0x2f, 0x8c, 0xda, 0xae, 0x7d, 0x17, 0xae, 0x4c, 0x4c, 0xdd, 0xb9, + 0x02, 0x48, 0x0b, 0x20, 0xbe, 0x7b, 0x47, 0xbe, 0x02, 0x45, 0x11, 0x50, 0x1e, 0x96, 0x0a, 0xa2, + 0xf4, 0xcd, 0x92, 0x40, 0xd4, 0x38, 0x19, 0xc5, 0x89, 0xc0, 0x1f, 0x66, 0xa3, 0x38, 0x2b, 0xf0, + 0x87, 0xa8, 0x30, 0xb5, 0x4f, 0x0b, 0xb0, 0x10, 0xee, 0x3c, 0x22, 0x91, 0xe6, 0xe4, 0x66, 0xbd, + 0x98, 0x62, 0x98, 0x3e, 0x31, 0xdb, 0x49, 0x6f, 0x17, 0xf9, 0x0b, 0xdf, 0x2e, 0x8e, 0x60, 0x7e, + 0xa8, 0x9c, 0xb1, 0x71, 0x50, 0x6f, 0xcf, 0x2e, 0x5b, 0xb1, 0xd3, 0x7b, 0xad, 0xfe, 0x8d, 0x46, + 0x04, 0x79, 0x00, 0xcb, 0x9c, 0x05, 0xfc, 0x24, 0xb5, 0x37, 0xcd, 0x52, 0x67, 0x52, 0xa7, 0xee, + 0x98, 0x64, 0x89, 0x69, 0x09, 0x64, 0x08, 0x8b, 0x3c, 0xac, 0x1a, 0x19, 0x57, 0xd7, 0x7c, 0xfa, + 0x21, 0x46, 0x05, 0x28, 0xed, 0xa9, 0xa3, 0x4f, 0x8c, 0x85, 0xd4, 0xfe, 0x2b, 0x07, 0xab, 0xd9, + 0x69, 0x20, 0x47, 0x30, 0x27, 0xb8, 0x6d, 0xcc, 0x6a, 0xff, 0xd9, 0xcd, 0xaf, 0x0e, 0x66, 0x74, + 0xe1, 0xd0, 0xe2, 0x36, 0x4a, 0x29, 0xd2, 0xec, 0x3b, 0x4c, 0x04, 0x59, 0xb3, 0xdf, 0x66, 0x22, + 0x40, 0x85, 0x21, 0xad, 0x64, 0xd0, 0x33, 0x97, 0xba, 0xfb, 0x98, 0x0a, 0x7a, 0x5e, 0xca, 0xca, + 0x9b, 0x16, 0xf2, 0xd4, 0x7e, 0x34, 0x07, 0x2f, 0x4e, 0xef, 0x18, 0xf9, 0x0e, 0x5c, 0x8e, 0x6a, + 0x17, 0x27, 0x89, 0x17, 0xf5, 0xd1, 0x11, 0xee, 0x76, 0x0a, 0x8b, 0x19, 0x6a, 0x19, 0x65, 0x98, + 0xeb, 0xae, 0xe1, 0xb3, 0xfa, 0xc4, 0x59, 0x4a, 0x33, 0xc2, 0x60, 0x82, 0x8a, 0x34, 0x60, 0xc5, + 0x7c, 0xb5, 0x93, 0x55, 0x8b, 0xc4, 0x41, 0x69, 0x33, 0x8d, 0xc6, 0x2c, 0xbd, 0xcc, 0x01, 0x64, + 0x34, 0x10, 0xbe, 0x6c, 0x4c, 0xe4, 0x00, 0xdb, 0x1a, 0x8c, 0x21, 0x9e, 0x6c, 0x42, 0x59, 0xfe, + 0x6c, 0xa7, 0x9f, 0x32, 0xc4, 0x75, 0x9c, 0x04, 0x0e, 0x53, 0x94, 0xf1, 0x1b, 0x0b, 0x9d, 0x05, + 0x4c, 0xbe, 0xb1, 0xb8, 0x09, 0x30, 0x12, 0x0c, 0xe9, 0x43, 0xc9, 0xc4, 0x54, 0xa7, 0xa3, 0xc1, + 0x1f, 0x44, 0x18, 0x4c, 0x50, 0xd5, 0x7e, 0x91, 0x83, 0xe5, 0xd4, 0x42, 0x24, 0x5d, 0x98, 0x3b, + 0xda, 0x0c, 0xb3, 0xec, 0x3b, 0xcf, 0xf0, 0x8a, 0x88, 0xb6, 0xba, 0x3b, 0x9b, 0x02, 0xa5, 0x00, + 0xf2, 0x61, 0x94, 0xd0, 0xcf, 0x7c, 0xf9, 0x39, 0x19, 0x24, 0x9a, 0xa0, 0x3d, 0x9d, 0xdb, 0xff, + 0xfb, 0x32, 0xac, 0x64, 0x3c, 0xec, 0x19, 0xee, 0xb3, 0x69, 0x63, 0x32, 0x6f, 0xc2, 0xa6, 0x18, + 0x53, 0xf8, 0x5a, 0x2c, 0x41, 0x45, 0x7a, 0x5a, 0x7b, 0xda, 0x39, 0xb6, 0x66, 0x1a, 0x52, 0x26, + 0xd3, 0xc9, 0xa8, 0xef, 0x87, 0x39, 0x28, 0xd3, 0xc4, 0x23, 0x7b, 0xe3, 0x1b, 0xef, 0xce, 0x92, + 0xfe, 0x4c, 0xfc, 0xbf, 0x80, 0xbe, 0x2e, 0x9a, 0x44, 0x60, 0x4a, 0x28, 0xb1, 0xa1, 0xd0, 0x0f, + 0x82, 0xf0, 0x31, 0xf7, 0xce, 0x33, 0xb9, 0x98, 0xa5, 0x2f, 0x00, 0x48, 0x00, 0x2a, 0xe6, 0xe4, + 0x21, 0x2c, 0xd2, 0x87, 0x42, 0xff, 0xf1, 0x86, 0x79, 0xe5, 0x3d, 0x4b, 0x96, 0x97, 0xf9, 0x0f, + 0x0f, 0x73, 0x32, 0x1b, 0x42, 0x31, 0x96, 0x45, 0x38, 0xcc, 0xdb, 0xea, 0x4d, 0x9a, 0x49, 0xa8, + 0xdf, 0x7e, 0x46, 0x6f, 0xdb, 0xf4, 0x3e, 0x94, 0x02, 0xa1, 0x91, 0x44, 0x7a, 0x50, 0x3c, 0xa2, + 0xdd, 0x23, 0x6a, 0x92, 0xea, 0x19, 0x56, 0x45, 0xf2, 0xe2, 0x91, 0xf6, 0x16, 0x0a, 0x82, 0x9a, + 0xbf, 0x9c, 0x3a, 0x8f, 0x06, 0xc2, 0x9c, 0x11, 0xcd, 0x30, 0x75, 0x89, 0xab, 0x14, 0x7a, 0xea, + 0x24, 0x00, 0x15, 0x73, 0x39, 0x1a, 0x55, 0x55, 0x31, 0x27, 0x44, 0xbb, 0xb3, 0x56, 0x24, 0x92, + 0xa3, 0x51, 0x10, 0xd4, 0xfc, 0xa5, 0x8d, 0xf8, 0xe1, 0x55, 0x01, 0x13, 0x77, 0xce, 0x60, 0x23, + 0xd9, 0x5b, 0x07, 0xda, 0x46, 0x22, 0x28, 0xc6, 0xb2, 0xc8, 0xfb, 0x30, 0xe7, 0xfa, 0x3d, 0x73, + 0xef, 0x65, 0x86, 0xd3, 0x99, 0xf8, 0x8a, 0x8b, 0x5e, 0xe8, 0x2d, 0xbf, 0x87, 0x92, 0x33, 0xf9, + 0xab, 0x1c, 0x5c, 0xa6, 0xa9, 0xbf, 0x05, 0xa8, 0x2c, 0xcf, 0xfa, 0x24, 0x68, 0xea, 0xdf, 0x0c, + 0xe8, 0xff, 0x2c, 0x49, 0xa3, 0x30, 0x23, 0x5a, 0xc5, 0x7f, 0xea, 0xb0, 0xbc, 0x72, 0x79, 0xd6, + 0x25, 0x91, 0x3a, 0x74, 0x37, 0xf1, 0x9f, 0x02, 0xa1, 0x11, 0x41, 0x7e, 0x92, 0x53, 0x5b, 0x73, + 0xf2, 0x55, 0x6e, 0x65, 0x65, 0xe6, 0x57, 0xa6, 0xd3, 0x5f, 0x12, 0xa7, 0x76, 0xfb, 0x24, 0x01, + 0x66, 0xbb, 0x40, 0x7e, 0x9c, 0x83, 0x15, 0x9a, 0x7e, 0x72, 0x5f, 0x59, 0x9d, 0x35, 0x52, 0x9b, + 0xfe, 0x86, 0xdf, 0x1c, 0xca, 0xa6, 0x71, 0x98, 0x95, 0x5e, 0xb3, 0x61, 0x29, 0xf1, 0xaf, 0x1b, + 0x67, 0xb8, 0x16, 0x71, 0x13, 0xe0, 0x98, 0x71, 0xa7, 0x7b, 0xd2, 0x64, 0x3c, 0x30, 0x95, 0xe1, + 0x68, 0x6b, 0x7b, 0x37, 0xc2, 0x60, 0x82, 0x6a, 0xab, 0xfe, 0xc9, 0x67, 0xeb, 0x97, 0x3e, 0xfd, + 0x6c, 0xfd, 0xd2, 0xcf, 0x3f, 0x5b, 0xbf, 0xf4, 0x83, 0xd3, 0xf5, 0xdc, 0x27, 0xa7, 0xeb, 0xb9, + 0x4f, 0x4f, 0xd7, 0x73, 0x3f, 0x3f, 0x5d, 0xcf, 0xfd, 0xc7, 0xe9, 0x7a, 0xee, 0xaf, 0x7f, 0xb1, + 0x7e, 0xe9, 0x0f, 0x4a, 0xe1, 0x88, 0xfe, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xfd, 0x7a, 0x7d, 0xb0, + 0xe8, 0x4a, 0x00, 0x00, } func (m *AWSLambdaTrigger) Marshal() (dAtA []byte, err error) { @@ -3722,6 +3791,75 @@ func (m *SensorStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *SlackSender) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SlackSender) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SlackSender) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i -= len(m.Icon) + copy(dAtA[i:], m.Icon) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Icon))) + i-- + dAtA[i] = 0x12 + i -= len(m.Username) + copy(dAtA[i:], m.Username) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Username))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *SlackThread) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SlackThread) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SlackThread) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i-- + if m.BroadcastMessageToChannel { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + i -= len(m.MessageAggregationKey) + copy(dAtA[i:], m.MessageAggregationKey) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.MessageAggregationKey))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *SlackTrigger) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -3742,6 +3880,36 @@ func (m *SlackTrigger) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + { + size, err := m.Sender.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + { + size, err := m.Thread.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + i -= len(m.Blocks) + copy(dAtA[i:], m.Blocks) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Blocks))) + i-- + dAtA[i] = 0x32 + i -= len(m.Attachments) + copy(dAtA[i:], m.Attachments) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Attachments))) + i-- + dAtA[i] = 0x2a i -= len(m.Message) copy(dAtA[i:], m.Message) i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message))) @@ -5358,6 +5526,31 @@ func (m *SensorStatus) Size() (n int) { return n } +func (m *SlackSender) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Username) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Icon) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *SlackThread) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.MessageAggregationKey) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + return n +} + func (m *SlackTrigger) Size() (n int) { if m == nil { return 0 @@ -5378,6 +5571,14 @@ func (m *SlackTrigger) Size() (n int) { n += 1 + l + sovGenerated(uint64(l)) l = len(m.Message) n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Attachments) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Blocks) + n += 1 + l + sovGenerated(uint64(l)) + l = m.Thread.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Sender.Size() + n += 1 + l + sovGenerated(uint64(l)) return n } @@ -6252,6 +6453,28 @@ func (this *SensorStatus) String() string { }, "") return s } +func (this *SlackSender) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SlackSender{`, + `Username:` + fmt.Sprintf("%v", this.Username) + `,`, + `Icon:` + fmt.Sprintf("%v", this.Icon) + `,`, + `}`, + }, "") + return s +} +func (this *SlackThread) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SlackThread{`, + `MessageAggregationKey:` + fmt.Sprintf("%v", this.MessageAggregationKey) + `,`, + `BroadcastMessageToChannel:` + fmt.Sprintf("%v", this.BroadcastMessageToChannel) + `,`, + `}`, + }, "") + return s +} func (this *SlackTrigger) String() string { if this == nil { return "nil" @@ -6266,6 +6489,10 @@ func (this *SlackTrigger) String() string { `SlackToken:` + strings.Replace(fmt.Sprintf("%v", this.SlackToken), "SecretKeySelector", "v1.SecretKeySelector", 1) + `,`, `Channel:` + fmt.Sprintf("%v", this.Channel) + `,`, `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `Attachments:` + fmt.Sprintf("%v", this.Attachments) + `,`, + `Blocks:` + fmt.Sprintf("%v", this.Blocks) + `,`, + `Thread:` + strings.Replace(strings.Replace(this.Thread.String(), "SlackThread", "SlackThread", 1), `&`, ``, 1) + `,`, + `Sender:` + strings.Replace(strings.Replace(this.Sender.String(), "SlackSender", "SlackSender", 1), `&`, ``, 1) + `,`, `}`, }, "") return s @@ -13362,6 +13589,222 @@ func (m *SensorStatus) Unmarshal(dAtA []byte) error { } return nil } +func (m *SlackSender) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SlackSender: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SlackSender: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Username", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Username = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Icon", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Icon = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SlackThread) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SlackThread: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SlackThread: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MessageAggregationKey", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MessageAggregationKey = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BroadcastMessageToChannel", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.BroadcastMessageToChannel = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *SlackTrigger) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -13525,6 +13968,136 @@ func (m *SlackTrigger) Unmarshal(dAtA []byte) error { } m.Message = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Attachments", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Attachments = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Blocks", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Blocks = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Thread", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Thread.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Sender.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/pkg/apis/sensor/v1alpha1/generated.proto b/pkg/apis/sensor/v1alpha1/generated.proto index 585bc8f920..72e39aff94 100644 --- a/pkg/apis/sensor/v1alpha1/generated.proto +++ b/pkg/apis/sensor/v1alpha1/generated.proto @@ -677,6 +677,26 @@ message SensorStatus { optional github.com.argoproj.argo_events.pkg.apis.common.Status status = 1; } +message SlackSender { + // Username is the Slack application's username + // +optional + optional string username = 1; + + // Icon is the Slack application's icon, e.g. :robot_face: or https://example.com/image.png + // +optional + optional string icon = 2; +} + +message SlackThread { + // MessageAggregationKey allows to aggregate the messages to a thread by some key. + // +optional + optional string messageAggregationKey = 1; + + // BroadcastMessageToChannel allows to also broadcast the message from the thread to the channel + // +optional + optional bool broadcastMessageToChannel = 2; +} + // SlackTrigger refers to the specification of the slack notification trigger. message SlackTrigger { // Parameters is the list of key-value extracted from event's payload that are applied to @@ -687,13 +707,29 @@ message SlackTrigger { // SlackToken refers to the Kubernetes secret that holds the slack token required to send messages. optional k8s.io.api.core.v1.SecretKeySelector slackToken = 2; - // Channel refers to which Slack channel to send slack message. + // Channel refers to which Slack channel to send Slack message. // +optional optional string channel = 3; // Message refers to the message to send to the Slack channel. // +optional optional string message = 4; + + // Attachments is a JSON format string that represents an array of Slack attachments according to the attachments API: https://api.slack.com/reference/messaging/attachments . + // +optional + optional string attachments = 5; + + // Blocks is a JSON format string that represents an array of Slack blocks according to the blocks API: https://api.slack.com/reference/block-kit/blocks . + // +optional + optional string blocks = 6; + + // Thread refers to additional options for sending messages to a Slack thread. + // +optional + optional SlackThread thread = 7; + + // Sender refers to additional configuration of the Slack application that sends the message. + // +optional + optional SlackSender sender = 8; } // StandardK8STrigger is the standard Kubernetes resource trigger diff --git a/pkg/apis/sensor/v1alpha1/openapi_generated.go b/pkg/apis/sensor/v1alpha1/openapi_generated.go index 749f1a0c97..63543072d1 100644 --- a/pkg/apis/sensor/v1alpha1/openapi_generated.go +++ b/pkg/apis/sensor/v1alpha1/openapi_generated.go @@ -62,6 +62,8 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SensorList": schema_pkg_apis_sensor_v1alpha1_SensorList(ref), "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SensorSpec": schema_pkg_apis_sensor_v1alpha1_SensorSpec(ref), "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SensorStatus": schema_pkg_apis_sensor_v1alpha1_SensorStatus(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SlackSender": schema_pkg_apis_sensor_v1alpha1_SlackSender(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SlackThread": schema_pkg_apis_sensor_v1alpha1_SlackThread(ref), "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SlackTrigger": schema_pkg_apis_sensor_v1alpha1_SlackTrigger(ref), "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.StandardK8STrigger": schema_pkg_apis_sensor_v1alpha1_StandardK8STrigger(ref), "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.StatusPolicy": schema_pkg_apis_sensor_v1alpha1_StatusPolicy(ref), @@ -1894,6 +1896,58 @@ func schema_pkg_apis_sensor_v1alpha1_SensorStatus(ref common.ReferenceCallback) } } +func schema_pkg_apis_sensor_v1alpha1_SlackSender(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "username": { + SchemaProps: spec.SchemaProps{ + Description: "Username is the Slack application's username", + Type: []string{"string"}, + Format: "", + }, + }, + "icon": { + SchemaProps: spec.SchemaProps{ + Description: "Icon is the Slack application's icon, e.g. :robot_face: or https://example.com/image.png", + Type: []string{"string"}, + Format: "", + }, + }, + }, + }, + }, + } +} + +func schema_pkg_apis_sensor_v1alpha1_SlackThread(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "messageAggregationKey": { + SchemaProps: spec.SchemaProps{ + Description: "MessageAggregationKey allows to aggregate the messages to a thread by some key.", + Type: []string{"string"}, + Format: "", + }, + }, + "broadcastMessageToChannel": { + SchemaProps: spec.SchemaProps{ + Description: "BroadcastMessageToChannel allows to also broadcast the message from the thread to the channel", + Type: []string{"boolean"}, + Format: "", + }, + }, + }, + }, + }, + } +} + func schema_pkg_apis_sensor_v1alpha1_SlackTrigger(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ @@ -1923,7 +1977,7 @@ func schema_pkg_apis_sensor_v1alpha1_SlackTrigger(ref common.ReferenceCallback) }, "channel": { SchemaProps: spec.SchemaProps{ - Description: "Channel refers to which Slack channel to send slack message.", + Description: "Channel refers to which Slack channel to send Slack message.", Type: []string{"string"}, Format: "", }, @@ -1935,11 +1989,39 @@ func schema_pkg_apis_sensor_v1alpha1_SlackTrigger(ref common.ReferenceCallback) Format: "", }, }, + "attachments": { + SchemaProps: spec.SchemaProps{ + Description: "Attachments is a JSON format string that represents an array of Slack attachments according to the attachments API: https://api.slack.com/reference/messaging/attachments .", + Type: []string{"string"}, + Format: "", + }, + }, + "blocks": { + SchemaProps: spec.SchemaProps{ + Description: "Blocks is a JSON format string that represents an array of Slack blocks according to the blocks API: https://api.slack.com/reference/block-kit/blocks .", + Type: []string{"string"}, + Format: "", + }, + }, + "thread": { + SchemaProps: spec.SchemaProps{ + Description: "Thread refers to additional options for sending messages to a Slack thread.", + Default: map[string]interface{}{}, + Ref: ref("github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SlackThread"), + }, + }, + "sender": { + SchemaProps: spec.SchemaProps{ + Description: "Sender refers to additional configuration of the Slack application that sends the message.", + Default: map[string]interface{}{}, + Ref: ref("github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SlackSender"), + }, + }, }, }, }, Dependencies: []string{ - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.TriggerParameter", "k8s.io/api/core/v1.SecretKeySelector"}, + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SlackSender", "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SlackThread", "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.TriggerParameter", "k8s.io/api/core/v1.SecretKeySelector"}, } } diff --git a/pkg/apis/sensor/v1alpha1/types.go b/pkg/apis/sensor/v1alpha1/types.go index 87872c0853..c23238e750 100644 --- a/pkg/apis/sensor/v1alpha1/types.go +++ b/pkg/apis/sensor/v1alpha1/types.go @@ -677,12 +677,42 @@ type SlackTrigger struct { Parameters []TriggerParameter `json:"parameters,omitempty" protobuf:"bytes,1,rep,name=parameters"` // SlackToken refers to the Kubernetes secret that holds the slack token required to send messages. SlackToken *corev1.SecretKeySelector `json:"slackToken,omitempty" protobuf:"bytes,2,opt,name=slackToken"` - // Channel refers to which Slack channel to send slack message. + // Channel refers to which Slack channel to send Slack message. // +optional Channel string `json:"channel,omitempty" protobuf:"bytes,3,opt,name=channel"` // Message refers to the message to send to the Slack channel. // +optional Message string `json:"message,omitempty" protobuf:"bytes,4,opt,name=message"` + // Attachments is a JSON format string that represents an array of Slack attachments according to the attachments API: https://api.slack.com/reference/messaging/attachments . + // +optional + Attachments string `json:"attachments,omitempty" protobuf:"bytes,5,opt,name=attachments"` + // Blocks is a JSON format string that represents an array of Slack blocks according to the blocks API: https://api.slack.com/reference/block-kit/blocks . + // +optional + Blocks string `json:"blocks,omitempty" protobuf:"bytes,6,opt,name=blocks"` + // Thread refers to additional options for sending messages to a Slack thread. + // +optional + Thread SlackThread `json:"thread,omitempty" protobuf:"bytes,7,opt,name=thread"` + // Sender refers to additional configuration of the Slack application that sends the message. + // +optional + Sender SlackSender `json:"sender,omitempty" protobuf:"bytes,8,opt,name=sender"` +} + +type SlackSender struct { + // Username is the Slack application's username + // +optional + Username string `json:"username,omitempty" protobuf:"bytes,1,opt,name=username"` + // Icon is the Slack application's icon, e.g. :robot_face: or https://example.com/image.png + // +optional + Icon string `json:"icon,omitempty" protobuf:"bytes,2,opt,name=icon"` +} + +type SlackThread struct { + // MessageAggregationKey allows to aggregate the messages to a thread by some key. + // +optional + MessageAggregationKey string `json:"messageAggregationKey,omitempty" protobuf:"bytes,1,opt,name=messageAggregationKey"` + // BroadcastMessageToChannel allows to also broadcast the message from the thread to the channel + // +optional + BroadcastMessageToChannel bool `json:"broadcastMessageToChannel,omitempty" protobuf:"bytes,2,opt,name=broadcastMessageToChannel"` } // OpenWhiskTrigger refers to the specification of the OpenWhisk trigger. diff --git a/pkg/apis/sensor/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/sensor/v1alpha1/zz_generated.deepcopy.go index 16da489eeb..04021f1061 100644 --- a/pkg/apis/sensor/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/sensor/v1alpha1/zz_generated.deepcopy.go @@ -1000,6 +1000,38 @@ func (in *SensorStatus) DeepCopy() *SensorStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SlackSender) DeepCopyInto(out *SlackSender) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SlackSender. +func (in *SlackSender) DeepCopy() *SlackSender { + if in == nil { + return nil + } + out := new(SlackSender) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SlackThread) DeepCopyInto(out *SlackThread) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SlackThread. +func (in *SlackThread) DeepCopy() *SlackThread { + if in == nil { + return nil + } + out := new(SlackThread) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SlackTrigger) DeepCopyInto(out *SlackTrigger) { *out = *in @@ -1015,6 +1047,8 @@ func (in *SlackTrigger) DeepCopyInto(out *SlackTrigger) { *out = new(v1.SecretKeySelector) (*in).DeepCopyInto(*out) } + out.Thread = in.Thread + out.Sender = in.Sender return } diff --git a/sensors/triggers/slack/slack.go b/sensors/triggers/slack/slack.go index adaee5da81..8af532d7c0 100644 --- a/sensors/triggers/slack/slack.go +++ b/sensors/triggers/slack/slack.go @@ -21,9 +21,8 @@ import ( "fmt" "net/http" "strings" - "time" - "github.com/slack-go/slack" + notifications "github.com/argoproj/notifications-engine/pkg/services" "go.uber.org/zap" "github.com/argoproj/argo-events/common" @@ -42,15 +41,30 @@ type SlackTrigger struct { Logger *zap.SugaredLogger // http client to invoke function. httpClient *http.Client + // slackSvc refers to the Slack notification service. + slackSvc notifications.NotificationService } // NewSlackTrigger returns a new Slack trigger context func NewSlackTrigger(sensor *v1alpha1.Sensor, trigger *v1alpha1.Trigger, logger *zap.SugaredLogger, httpClient *http.Client) (*SlackTrigger, error) { + slackTrigger := trigger.Template.Slack + slackToken, err := common.GetSecretFromVolume(slackTrigger.SlackToken) + if err != nil { + return nil, fmt.Errorf("failed to retrieve the slack token, %w", err) + } + + slackSvc := notifications.NewSlackService(notifications.SlackOptions{ + Token: slackToken, + Username: slackTrigger.Sender.Username, + Icon: slackTrigger.Sender.Icon, + }) + return &SlackTrigger{ Sensor: sensor, Trigger: trigger, Logger: logger.With(logging.LabelTriggerType, apicommon.SlackTrigger), httpClient: httpClient, + slackSvc: slackSvc, }, nil } @@ -95,85 +109,45 @@ func (t *SlackTrigger) Execute(ctx context.Context, events map[string]*v1alpha1. return nil, fmt.Errorf("failed to marshal the Slack trigger resource") } - slacktrigger := t.Trigger.Template.Slack + slackTrigger := t.Trigger.Template.Slack - channel := slacktrigger.Channel + channel := slackTrigger.Channel if channel == "" { return nil, fmt.Errorf("no slack channel provided") } channel = strings.TrimPrefix(channel, "#") - message := slacktrigger.Message - if message == "" { - return nil, fmt.Errorf("no slack message to post") + message := slackTrigger.Message + attachments := slackTrigger.Attachments + blocks := slackTrigger.Blocks + if message == "" && attachments == "" && blocks == "" { + return nil, fmt.Errorf("no text to post: At least one of message/attachments/blocks should be provided") } - slackToken, err := common.GetSecretFromVolume(slacktrigger.SlackToken) + t.Logger.Infow("posting to channel...", zap.Any("channelName", channel)) + + notification := notifications.Notification{ + Message: message, + Slack: ¬ifications.SlackNotification{ + GroupingKey: slackTrigger.Thread.MessageAggregationKey, + NotifyBroadcast: slackTrigger.Thread.BroadcastMessageToChannel, + Blocks: blocks, + Attachments: attachments, + }, + } + destination := notifications.Destination{ + Service: "slack", + Recipient: channel, + } + err := t.slackSvc.Send(notification, destination) if err != nil { - return nil, fmt.Errorf("failed to retrieve the slack token, %w", err) + t.Logger.Errorw("unable to post to channel", zap.Any("channelName", channel), zap.Error(err)) + return nil, fmt.Errorf("failed to post to channel %s, %w", channel, err) } - api := slack.New(slackToken, slack.OptionDebug(false)) - - t.Logger.Infow("posting to channel...", zap.Any("channelName", channel)) - for { - channelID, timestamp, err := api.PostMessage(channel, slack.MsgOptionText(message, false)) - if err != nil { - if err.Error() == "not_in_channel" { - isPrivateChannel := false - params := &slack.GetConversationsParameters{ - Limit: 200, - Types: []string{"public_channel", "private_channel"}, - ExcludeArchived: true, - } - - for { - channels, nextCursor, err := api.GetConversations(params) - if err != nil { - switch e := err.(type) { - case *slack.RateLimitedError: - <-time.After(e.RetryAfter) - continue - default: - t.Logger.Errorw("unable to list channels", zap.Error(err)) - return nil, fmt.Errorf("failed to list channels, %w", err) - } - } - for _, c := range channels { - if c.Name == channel { - channelID = c.ID - isPrivateChannel = c.IsPrivate - break - } - } - if nextCursor == "" || channelID != "" { - break - } - params.Cursor = nextCursor - } - if channelID == "" { - return nil, fmt.Errorf("failed to get channelID of %s", channel) - } - if isPrivateChannel { - return nil, fmt.Errorf("cannot join private channel %s", channel) - } - - c, _, _, err := api.JoinConversation(channelID) - if err != nil { - t.Logger.Errorw("unable to join channel...", zap.Any("channelName", channel), zap.Any("channelID", channelID), zap.Error(err)) - return nil, fmt.Errorf("failed to join channel %s, %w", channel, err) - } - t.Logger.Debugw("successfully joined channel", zap.Any("channel", c)) - continue - } else { - t.Logger.Errorw("unable to post to channel...", zap.Any("channelName", channel), zap.Error(err)) - return nil, fmt.Errorf("failed to post to channel %s, %w", channel, err) - } - } - t.Logger.Infow("message successfully sent to channelID with timestamp", zap.Any("message", message), zap.Any("channelID", channelID), zap.Any("timestamp", timestamp)) - t.Logger.Info("finished executing SlackTrigger") - return nil, nil - } + t.Logger.Infow("message successfully sent to channel", zap.Any("message", message), zap.Any("channelName", channel)) + t.Logger.Info("finished executing SlackTrigger") + return nil, nil } // No Policies for SlackTrigger