@scalekit-sdk/node 2.2.0 → 2.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/{reference.md → REFERENCE.md} +530 -77
  2. package/lib/core.js +1 -1
  3. package/package.json +9 -3
  4. package/.github/dependabot.yml +0 -10
  5. package/.nvmrc +0 -1
  6. package/buf.gen.yaml +0 -20
  7. package/jest.config.js +0 -15
  8. package/src/auth.ts +0 -99
  9. package/src/connect.ts +0 -32
  10. package/src/connection.ts +0 -267
  11. package/src/constants/user.ts +0 -22
  12. package/src/core.ts +0 -139
  13. package/src/directory.ts +0 -431
  14. package/src/domain.ts +0 -273
  15. package/src/errors/base-exception.ts +0 -263
  16. package/src/errors/index.ts +0 -3
  17. package/src/errors/specific-exceptions.ts +0 -88
  18. package/src/index.ts +0 -10
  19. package/src/organization.ts +0 -571
  20. package/src/passwordless.ts +0 -139
  21. package/src/permission.ts +0 -310
  22. package/src/pkg/grpc/buf/validate/validate_pb.ts +0 -28
  23. package/src/pkg/grpc/google/api/annotations_pb.ts +0 -28
  24. package/src/pkg/grpc/google/api/field_behavior_pb.ts +0 -28
  25. package/src/pkg/grpc/google/api/visibility_pb.ts +0 -28
  26. package/src/pkg/grpc/protoc-gen-openapiv2/options/annotations_pb.ts +0 -28
  27. package/src/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.ts +0 -257
  28. package/src/pkg/grpc/scalekit/v1/auth/auth_pb.ts +0 -836
  29. package/src/pkg/grpc/scalekit/v1/auth/passwordless_pb.ts +0 -264
  30. package/src/pkg/grpc/scalekit/v1/auth/webauthn_pb.ts +0 -794
  31. package/src/pkg/grpc/scalekit/v1/commons/commons_pb.ts +0 -452
  32. package/src/pkg/grpc/scalekit/v1/connections/connections_pb.ts +0 -2645
  33. package/src/pkg/grpc/scalekit/v1/directories/directories_pb.ts +0 -1393
  34. package/src/pkg/grpc/scalekit/v1/domains/domains_pb.ts +0 -599
  35. package/src/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.ts +0 -311
  36. package/src/pkg/grpc/scalekit/v1/options/options_pb.ts +0 -200
  37. package/src/pkg/grpc/scalekit/v1/organizations/organizations_pb.ts +0 -1141
  38. package/src/pkg/grpc/scalekit/v1/roles/roles_pb.ts +0 -1491
  39. package/src/pkg/grpc/scalekit/v1/sessions/sessions_pb.ts +0 -497
  40. package/src/pkg/grpc/scalekit/v1/users/users_pb.ts +0 -1404
  41. package/src/role.ts +0 -463
  42. package/src/scalekit.ts +0 -800
  43. package/src/session.ts +0 -323
  44. package/src/types/auth.ts +0 -73
  45. package/src/types/organization.ts +0 -12
  46. package/src/types/scalekit.ts +0 -50
  47. package/src/types/user.ts +0 -21
  48. package/src/user.ts +0 -829
  49. package/src/webauthn.ts +0 -99
  50. package/tests/README.md +0 -25
  51. package/tests/connection.test.ts +0 -42
  52. package/tests/directory.test.ts +0 -46
  53. package/tests/domain.test.ts +0 -293
  54. package/tests/organization.test.ts +0 -81
  55. package/tests/passwordless.test.ts +0 -108
  56. package/tests/permission.test.ts +0 -399
  57. package/tests/role.test.ts +0 -323
  58. package/tests/scalekit.test.ts +0 -104
  59. package/tests/setup.ts +0 -34
  60. package/tests/users.test.ts +0 -168
  61. package/tests/utils/test-data.ts +0 -490
  62. package/tsconfig.json +0 -19
@@ -1,1491 +0,0 @@
1
- // @generated by protoc-gen-es v2.11.0 with parameter "target=ts"
2
- // @generated from file scalekit/v1/roles/roles.proto (package scalekit.v1.roles, syntax proto3)
3
- /* eslint-disable */
4
-
5
- import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
6
- import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
7
- import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
8
- import { file_google_api_annotations } from "../../../google/api/annotations_pb";
9
- import { file_google_api_field_behavior } from "../../../google/api/field_behavior_pb";
10
- import { file_google_api_visibility } from "../../../google/api/visibility_pb";
11
- import type { EmptySchema, Timestamp } from "@bufbuild/protobuf/wkt";
12
- import { file_google_protobuf_empty, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
13
- import { file_protoc_gen_openapiv2_options_annotations } from "../../../protoc-gen-openapiv2/options/annotations_pb";
14
- import { file_scalekit_v1_options_options } from "../options/options_pb";
15
- import type { Message } from "@bufbuild/protobuf";
16
-
17
- /**
18
- * Describes the file scalekit/v1/roles/roles.proto.
19
- */
20
- export const file_scalekit_v1_roles_roles: GenFile = /*@__PURE__*/
21
- fileDesc("Ch1zY2FsZWtpdC92MS9yb2xlcy9yb2xlcy5wcm90bxIRc2NhbGVraXQudjEucm9sZXMikQwKBFJvbGUSdQoCaWQYASABKAlCaZJBYzJIVW5pcXVlIHN5c3RlbS1nZW5lcmF0ZWQgaWRlbnRpZmllciBmb3IgdGhlIHJvbGUuIEltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuShcicm9sZV8xMjM0YWJjZDU2NzhlZmdoIuBBAxKPAQoEbmFtZRgCIAEoCUKAAZJBcTJdVW5pcXVlIG5hbWUgaWRlbnRpZmllciBmb3IgdGhlIHJvbGUuIE11c3QgYmUgYWxwaGFudW1lcmljIHdpdGggdW5kZXJzY29yZXMsIDEtMTAwIGNoYXJhY3RlcnMuShAiY29udGVudF9lZGl0b3IiukgJyAEBcgQQARhkEocBCgxkaXNwbGF5X25hbWUYAyABKAlCcZJBYjJOSHVtYW4tcmVhZGFibGUgZGlzcGxheSBuYW1lIGZvciB0aGUgcm9sZS4gVXNlZCBpbiB1c2VyIGludGVyZmFjZXMgYW5kIHJlcG9ydHMuShAiQ29udGVudCBFZGl0b3IiukgJyAEBcgQQARhkErwBCgtkZXNjcmlwdGlvbhgEIAEoCUKmAZJBogEyVURldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSByb2xlJ3MgcHVycG9zZSBhbmQgY2FwYWJpbGl0aWVzLiBNYXhpbXVtIDIwMDAgY2hhcmFjdGVycy5KSSJDYW4gY3JlYXRlLCBlZGl0LCBhbmQgcHVibGlzaCBjb250ZW50IGJ1dCBjYW5ub3QgZGVsZXRlIG9yIG1hbmFnZSB1c2VycyISbQoPZGVmYXVsdF9jcmVhdG9yGAYgASgIQlSSQVEySUluZGljYXRlcyBpZiB0aGlzIHJvbGUgaXMgdGhlIGRlZmF1bHQgY3JlYXRvciByb2xlIGZvciBuZXcgb3JnYW5pemF0aW9ucy5KBHRydWUSYwoOZGVmYXVsdF9tZW1iZXIYByABKAhCS5JBSDJASW5kaWNhdGVzIGlmIHRoaXMgcm9sZSBpcyB0aGUgZGVmYXVsdCBtZW1iZXIgcm9sZSBmb3IgbmV3IHVzZXJzLkoEdHJ1ZRKdAQoHZXh0ZW5kcxgIIAEoCUKGAZJBZDJUTmFtZSBvZiB0aGUgYmFzZSByb2xlIHRoYXQgdGhpcyByb2xlIGV4dGVuZHMuIEVuYWJsZXMgaGllcmFyY2hpY2FsIHJvbGUgaW5oZXJpdGFuY2UuSgwiYWRtaW5fcm9sZSK6SBxyGhABGGQyFF5bYS16QS1aMC05X117MSw2NH0kSACIAQES4gIKC3Blcm1pc3Npb25zGAkgAygLMiEuc2NhbGVraXQudjEucm9sZXMuUm9sZVBlcm1pc3Npb25CqQKSQaUCMnVMaXN0IG9mIHBlcm1pc3Npb25zIHdpdGggcm9sZSBzb3VyY2UgaW5mb3JtYXRpb24uIE9ubHkgaW5jbHVkZWQgd2hlbiAnaW5jbHVkZScgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdC5KqwFbeyJuYW1lIjogInJlYWQ6Y29udGVudCIsICJkZXNjcmlwdGlvbiI6ICJSZWFkIENvbnRlbnQiLCAicm9sZV9uYW1lIjogImFkbWluX3JvbGUifSwgeyJuYW1lIjogIndyaXRlOmNvbnRlbnQiLCAiZGVzY3JpcHRpb24iOiAiV3JpdGUgQ29udGVudCIsICJyb2xlX25hbWUiOiAiZWRpdG9yX3JvbGUifV0SewoVZGVwZW5kZW50X3JvbGVzX2NvdW50GAogASgFQlySQVkyVE51bWJlciBvZiByb2xlcyB0aGF0IGV4dGVuZCBmcm9tIHRoaXMgcm9sZSAoZGVwZW5kZW50IHJvbGVzIGNvdW50KS4gUmVhZC1vbmx5IGZpZWxkLkoBMxJPCgtpc19vcmdfcm9sZRgLIAEoCEI6kkE3Mi9JbmRpY2F0ZXMgaWYgdGhpcyByb2xlIGlzIGFuIG9yZ2FuaXphdGlvbiByb2xlLkoEdHJ1ZUIKCghfZXh0ZW5kc0oECAUQBiKYCQoKQ3JlYXRlUm9sZRLrAQoEbmFtZRgCIAEoCULcAZJBtgEyoQFVbmlxdWUgbmFtZSBpZGVudGlmaWVyIGZvciB0aGUgcm9sZS4gTXVzdCBiZSBhbHBoYW51bWVyaWMgd2l0aCB1bmRlcnNjb3JlcywgMS02NCBjaGFyYWN0ZXJzLiBUaGlzIG5hbWUgaXMgdXNlZCBpbiBBUEkgY2FsbHMgYW5kIGNhbm5vdCBiZSBjaGFuZ2VkIGFmdGVyIGNyZWF0aW9uLkoQImNvbnRlbnRfZWRpdG9yIrpIH8gBAXIaEAEYZDIUXlthLXpBLVowLTlfXXsxLDY0fSQSpQEKDGRpc3BsYXlfbmFtZRgDIAEoCUKOAZJBfzJrSHVtYW4tcmVhZGFibGUgZGlzcGxheSBuYW1lIGZvciB0aGUgcm9sZS4gVXNlZCBpbiB1c2VyIGludGVyZmFjZXMsIHJlcG9ydHMsIGFuZCB1c2VyLWZhY2luZyBjb21tdW5pY2F0aW9ucy5KECJDb250ZW50IEVkaXRvciK6SAnIAQFyBBABGGQS7gEKC2Rlc2NyaXB0aW9uGAQgASgJQtMBkkHHATJqRGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIHJvbGUncyBwdXJwb3NlLCBjYXBhYmlsaXRpZXMsIGFuZCBpbnRlbmRlZCB1c2UgY2FzZXMuIE1heGltdW0gMjAwMCBjaGFyYWN0ZXJzLkpZIkNhbiBjcmVhdGUsIGVkaXQsIGFuZCBwdWJsaXNoIGNvbnRlbnQgYnV0IGNhbm5vdCBkZWxldGUgY29udGVudCBvciBtYW5hZ2UgdXNlciBhY2NvdW50cyK6SAVyAxjQD0gAiAEBEtcBCgdleHRlbmRzGAggASgJQsABkkGdATKQAU5hbWUgb2YgdGhlIGJhc2Ugcm9sZSB0aGF0IHRoaXMgcm9sZSBleHRlbmRzLiBFbmFibGVzIGhpZXJhcmNoaWNhbCByb2xlIGluaGVyaXRhbmNlIHdoZXJlIHRoaXMgcm9sZSBpbmhlcml0cyBhbGwgcGVybWlzc2lvbnMgZnJvbSB0aGUgYmFzZSByb2xlLkoIInZpZXdlciK6SBxyGhABGGQyFF5bYS16QS1aMC05X117MSw2NH0kSAGIAQES+gEKC3Blcm1pc3Npb25zGAkgAygJQuQBkkG+ATKFAUxpc3Qgb2YgcGVybWlzc2lvbiBuYW1lcyB0byBhc3NpZ24gdG8gdGhpcyByb2xlLiBQZXJtaXNzaW9ucyBtdXN0IGV4aXN0IGluIHRoZSBjdXJyZW50IGVudmlyb25tZW50LiBNYXhpbXVtIDEwMCBwZXJtaXNzaW9ucyBwZXIgcm9sZS5KNFsicmVhZDpjb250ZW50IiwgIndyaXRlOmNvbnRlbnQiLCAicHVibGlzaDpjb250ZW50Il26SB+SARwQZCIYchYQARhAMhBeW2EtekEtWjAtOV86XSskQg4KDF9kZXNjcmlwdGlvbkIKCghfZXh0ZW5kc0oECAUQBkoECAYQB0oECAcQCCLuBQoWQ3JlYXRlT3JnYW5pemF0aW9uUm9sZRJuCgRuYW1lGAIgASgJQmCSQTsyJlVuaXF1ZSBuYW1lIG9mIHRoZSBvcmdhbml6YXRpb24ncyByb2xlShEib3JnX3ZpZXdlcl9yb2xlIrpIH8gBAXIaEAEYZDIUXlthLXpBLVowLTlfXXsxLDY0fSQSagoMZGlzcGxheV9uYW1lGAMgASgJQlSSQUUyJ0Rpc3BsYXkgbmFtZSBvZiB0aGUgb3JnYW5pemF0aW9uJ3Mgcm9sZUoaIk9yZ2FuaXphdGlvbiBWaWV3ZXIgUm9sZSK6SAnIAQFyBBABGGQSkwEKC2Rlc2NyaXB0aW9uGAQgASgJQnmSQW4yJkRlc2NyaXB0aW9uIG9mIHRoZSBvcmdhbml6YXRpb24ncyByb2xlSkQiT3JnYW5pemF0aW9uIFZpZXdlciBSb2xlIHdpbGwgYmUgdXNlZCBvbmx5IGZvciB2aWV3aW5nIHRoZSBvYmplY3RzIrpIBXIDGNAPSACIAQESbQoHZXh0ZW5kcxgIIAEoCUJXkkE1MiVCYXNlIHJvbGUgbmFtZSBmb3IgaGllcmFyY2hpY2FsIHJvbGVzSgwiYWRtaW5fcm9sZSK6SBxyGhABGGQyFF5bYS16QS1aMC05X117MSw2NH0kSAGIAQESxAEKC3Blcm1pc3Npb25zGAkgAygJQq4BkkGIATJjTGlzdCBvZiBwZXJtaXNzaW9uIG5hbWVzIHRvIGFzc2lnbiB0byB0aGlzIHJvbGUuIFBlcm1pc3Npb25zIG11c3QgZXhpc3QgaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuSiFbInJlYWQ6dXNlcnMiLCAid3JpdGU6ZG9jdW1lbnRzIl26SB+SARwQZCIYchYQARhAMhBeW2EtekEtWjAtOV86XSskQg4KDF9kZXNjcmlwdGlvbkIKCghfZXh0ZW5kc0oECAUQBkoECAYQB0oECAcQCCLWAgoRQ3JlYXRlUm9sZVJlcXVlc3QSugIKBHJvbGUYAiABKAsyHS5zY2FsZWtpdC52MS5yb2xlcy5DcmVhdGVSb2xlQowCkkGCAjJsUm9sZSBjb25maWd1cmF0aW9uIGRldGFpbHMgaW5jbHVkaW5nIG5hbWUsIGRpc3BsYXkgbmFtZSwgZGVzY3JpcHRpb24sIHBlcm1pc3Npb25zLCBhbmQgaW5oZXJpdGFuY2Ugc2V0dGluZ3MuSpEBeyJuYW1lIjogImNvbnRlbnRfZWRpdG9yIiwgImRpc3BsYXlfbmFtZSI6ICJDb250ZW50IEVkaXRvciIsICJkZXNjcmlwdGlvbiI6ICJDYW4gZWRpdCBjb250ZW50IiwgInBlcm1pc3Npb25zIjogWyJyZWFkOmNvbnRlbnQiLCAid3JpdGU6Y29udGVudCJdfbpIA8gBAUoECAEQAiKUAgoSQ3JlYXRlUm9sZVJlc3BvbnNlEv0BCgRyb2xlGAEgASgLMhcuc2NhbGVraXQudjEucm9sZXMuUm9sZULVAZJB0QEyT1RoZSBjcmVhdGVkIHJvbGUgb2JqZWN0IHdpdGggc3lzdGVtLWdlbmVyYXRlZCBJRCBhbmQgYWxsIGNvbmZpZ3VyYXRpb24gZGV0YWlscy5KfnsiaWQiOiAicm9sZV8xMjM0YWJjZDU2NzhlZmdoIiwgIm5hbWUiOiAiY29udGVudF9lZGl0b3IiLCAiZGlzcGxheV9uYW1lIjogIkNvbnRlbnQgRWRpdG9yIiwgImRlc2NyaXB0aW9uIjogIkNhbiBlZGl0IGNvbnRlbnQifSLUAwoOR2V0Um9sZVJlcXVlc3QStAEKCXJvbGVfbmFtZRgCIAEoCUKgAZJBezJnVW5pcXVlIG5hbWUgaWRlbnRpZmllciBvZiB0aGUgcm9sZSB0byByZXRyaWV2ZS4gTXVzdCBiZSBhbHBoYW51bWVyaWMgd2l0aCB1bmRlcnNjb3JlcywgMS02NCBjaGFyYWN0ZXJzLkoQImNvbnRlbnRfZWRpdG9yIrpIH8gBAXIaEAEYZDIUXlthLXpBLVowLTlfXXsxLDY0fSQS+AEKB2luY2x1ZGUYAyABKAlC4QGSQbgBMqYBSW5jbHVkZSBhZGRpdGlvbmFsIGRhdGEgaW4gdGhlIHJlc3BvbnNlLiBWYWxpZCB2YWx1ZXM6ICdwZXJtaXNzaW9ucycgKGRpcmVjdCBwZXJtaXNzaW9ucyBvbmx5KSwgJ3Blcm1pc3Npb25zOmFsbCcgKGluY2x1ZGVzIGluaGVyaXRlZCBwZXJtaXNzaW9ucyBmcm9tIHJvbGUgaGllcmFyY2h5KUoNInBlcm1pc3Npb25zIrpIInIgUgBSC3Blcm1pc3Npb25zUg9wZXJtaXNzaW9uczphbGxIAIgBAUIKCghfaW5jbHVkZUoECAEQAiK4AgoPR2V0Um9sZVJlc3BvbnNlEqQCCgRyb2xlGAEgASgLMhcuc2NhbGVraXQudjEucm9sZXMuUm9sZUL8AZJB+AEyUVRoZSBjb21wbGV0ZSByb2xlIG9iamVjdCB3aXRoIGFsbCBtZXRhZGF0YSwgcGVybWlzc2lvbnMsIGFuZCBpbmhlcml0YW5jZSBkZXRhaWxzLkqiAXsiaWQiOiAicm9sZV8xMjM0YWJjZDU2NzhlZmdoIiwgIm5hbWUiOiAiY29udGVudF9lZGl0b3IiLCAiZGlzcGxheV9uYW1lIjogIkNvbnRlbnQgRWRpdG9yIiwgInBlcm1pc3Npb25zIjogW3sibmFtZSI6ICJyZWFkOmNvbnRlbnQifV0sICJkZXBlbmRlbnRfcm9sZXNfY291bnQiOiAyfSKfAgoQTGlzdFJvbGVzUmVxdWVzdBL4AQoHaW5jbHVkZRgCIAEoCULhAZJBuAEypgFJbmNsdWRlIGFkZGl0aW9uYWwgZGF0YSBpbiB0aGUgcmVzcG9uc2UuIFZhbGlkIHZhbHVlczogJ3Blcm1pc3Npb25zJyAoZGlyZWN0IHBlcm1pc3Npb25zIG9ubHkpLCAncGVybWlzc2lvbnM6YWxsJyAoaW5jbHVkZXMgaW5oZXJpdGVkIHBlcm1pc3Npb25zIGZyb20gcm9sZSBoaWVyYXJjaHkpSg0icGVybWlzc2lvbnMiukgiciBSAFILcGVybWlzc2lvbnNSD3Blcm1pc3Npb25zOmFsbEgAiAEBQgoKCF9pbmNsdWRlSgQIARACIsICChFMaXN0Um9sZXNSZXNwb25zZRKsAgoFcm9sZXMYASADKAsyFy5zY2FsZWtpdC52MS5yb2xlcy5Sb2xlQoMCkkH/ATJaTGlzdCBvZiBhbGwgcm9sZXMgaW4gdGhlIGVudmlyb25tZW50IHdpdGggdGhlaXIgbWV0YWRhdGEgYW5kIG9wdGlvbmFsbHkgdGhlaXIgcGVybWlzc2lvbnMuSqABW3siaWQiOiAicm9sZV8xMjM0YWJjZDU2NzhlZmdoIiwgIm5hbWUiOiAiYWRtaW4iLCAiZGlzcGxheV9uYW1lIjogIkFkbWluaXN0cmF0b3IifSwgeyJpZCI6ICJyb2xlXzk4NzZ6eXh3NTQzMnZ1dHMiLCAibmFtZSI6ICJ2aWV3ZXIiLCAiZGlzcGxheV9uYW1lIjogIlZpZXdlciJ9XSKtCAoKVXBkYXRlUm9sZRKvAQoMZGlzcGxheV9uYW1lGAEgASgJQpMBkkGGATJrSHVtYW4tcmVhZGFibGUgZGlzcGxheSBuYW1lIGZvciB0aGUgcm9sZS4gVXNlZCBpbiB1c2VyIGludGVyZmFjZXMsIHJlcG9ydHMsIGFuZCB1c2VyLWZhY2luZyBjb21tdW5pY2F0aW9ucy5KFyJTZW5pb3IgQ29udGVudCBFZGl0b3IiukgGcgQQARhkSACIAQES9wEKC2Rlc2NyaXB0aW9uGAIgASgJQtwBkkHOATJqRGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIHJvbGUncyBwdXJwb3NlLCBjYXBhYmlsaXRpZXMsIGFuZCBpbnRlbmRlZCB1c2UgY2FzZXMuIE1heGltdW0gMjAwMCBjaGFyYWN0ZXJzLkpgIkNhbiBjcmVhdGUsIGVkaXQsIHB1Ymxpc2gsIGFuZCBhcHByb3ZlIGNvbnRlbnQuIENhbm5vdCBkZWxldGUgY29udGVudCBvciBtYW5hZ2UgdXNlciBhY2NvdW50cy4iukgHcgUQARjQD0gBiAEBEt8BCgdleHRlbmRzGAYgASgJQsgBkkGlATKQAU5hbWUgb2YgdGhlIGJhc2Ugcm9sZSB0aGF0IHRoaXMgcm9sZSBleHRlbmRzLiBFbmFibGVzIGhpZXJhcmNoaWNhbCByb2xlIGluaGVyaXRhbmNlIHdoZXJlIHRoaXMgcm9sZSBpbmhlcml0cyBhbGwgcGVybWlzc2lvbnMgZnJvbSB0aGUgYmFzZSByb2xlLkoQImNvbnRlbnRfZWRpdG9yIrpIHHIaEAEYZDIUXlthLXpBLVowLTlfXXsxLDY0fSRIAogBARLRAgoLcGVybWlzc2lvbnMYByADKAlCuwKSQZUCMskBTGlzdCBvZiBwZXJtaXNzaW9uIG5hbWVzIHRvIGFzc2lnbiB0byB0aGlzIHJvbGUuIFdoZW4gcHJvdmlkZWQsIHRoaXMgcmVwbGFjZXMgYWxsIGV4aXN0aW5nIHJvbGUtcGVybWlzc2lvbiBtYXBwaW5ncy4gUGVybWlzc2lvbnMgbXVzdCBleGlzdCBpbiB0aGUgY3VycmVudCBlbnZpcm9ubWVudC4gTWF4aW11bSAxMDAgcGVybWlzc2lvbnMgcGVyIHJvbGUuSkdbInJlYWQ6Y29udGVudCIsICJ3cml0ZTpjb250ZW50IiwgInB1Ymxpc2g6Y29udGVudCIsICJhcHByb3ZlOmNvbnRlbnQiXbpIH5IBHBBkIhhyFhABGEAyEF5bYS16QS1aMC05XzpdKyRCDwoNX2Rpc3BsYXlfbmFtZUIOCgxfZGVzY3JpcHRpb25CCgoIX2V4dGVuZHNKBAgDEARKBAgEEAVKBAgFEAYimwMKEVVwZGF0ZVJvbGVSZXF1ZXN0ErIBCglyb2xlX25hbWUYAiABKAlCngGSQXkyZVVuaXF1ZSBuYW1lIGlkZW50aWZpZXIgb2YgdGhlIHJvbGUgdG8gdXBkYXRlLiBNdXN0IGJlIGFscGhhbnVtZXJpYyB3aXRoIHVuZGVyc2NvcmVzLCAxLTY0IGNoYXJhY3RlcnMuShAiY29udGVudF9lZGl0b3IiukgfyAEBchoQARhkMhReW2EtekEtWjAtOV9dezEsNjR9JBLKAQoEcm9sZRgDIAEoCzIdLnNjYWxla2l0LnYxLnJvbGVzLlVwZGF0ZVJvbGVCnAGSQZIBMj5Sb2xlIGZpZWxkcyB0byB1cGRhdGUuIE9ubHkgc3BlY2lmaWVkIGZpZWxkcyB3aWxsIGJlIG1vZGlmaWVkLkpQeyJkaXNwbGF5X25hbWUiOiAiU2VuaW9yIEVkaXRvciIsICJkZXNjcmlwdGlvbiI6ICJDYW4gZWRpdCBhbmQgYXBwcm92ZSBjb250ZW50In26SAPIAQFKBAgBEAIikAIKElVwZGF0ZVJvbGVSZXNwb25zZRL5AQoEcm9sZRgBIAEoCzIXLnNjYWxla2l0LnYxLnJvbGVzLlJvbGVC0QGSQc0BMj9UaGUgdXBkYXRlZCByb2xlIG9iamVjdCB3aXRoIGFsbCBjdXJyZW50IGNvbmZpZ3VyYXRpb24gZGV0YWlscy5KiQF7ImlkIjogInJvbGVfMTIzNGFiY2Q1Njc4ZWZnaCIsICJuYW1lIjogImNvbnRlbnRfZWRpdG9yIiwgImRpc3BsYXlfbmFtZSI6ICJTZW5pb3IgRWRpdG9yIiwgImRlc2NyaXB0aW9uIjogIkNhbiBlZGl0IGFuZCBhcHByb3ZlIGNvbnRlbnQifSKOBAoRRGVsZXRlUm9sZVJlcXVlc3QSrAEKCXJvbGVfbmFtZRgCIAEoCUKYAZJBczJlVW5pcXVlIG5hbWUgaWRlbnRpZmllciBvZiB0aGUgcm9sZSB0byBkZWxldGUuIE11c3QgYmUgYWxwaGFudW1lcmljIHdpdGggdW5kZXJzY29yZXMsIDEtNjQgY2hhcmFjdGVycy5KCiJvbGRfcm9sZSK6SB/IAQFyGhABGGQyFF5bYS16QS1aMC05X117MSw2NH0kEooBChByZWFzc2lnbl9yb2xlX2lkGAMgASgJQmsYAZJBRzI2Um9sZSBuYW1lIHRvIHJlYXNzaWduIHVzZXJzIHRvIHdoZW4gZGVsZXRpbmcgdGhpcyByb2xlSg0ibWVtYmVyX3JvbGUiukgcchoQARhkMhReW2EtekEtWjAtOV9dezEsNjR9JEgAiAEBEooBChJyZWFzc2lnbl9yb2xlX25hbWUYBCABKAlCaZJBRzI2Um9sZSBuYW1lIHRvIHJlYXNzaWduIHVzZXJzIHRvIHdoZW4gZGVsZXRpbmcgdGhpcyByb2xlSg0ibWVtYmVyX3JvbGUiukgcchoQARhkMhReW2EtekEtWjAtOV9dezEsNjR9JEgBiAEBQhMKEV9yZWFzc2lnbl9yb2xlX2lkQhUKE19yZWFzc2lnbl9yb2xlX25hbWVKBAgBEAIi3wEKHUNyZWF0ZU9yZ2FuaXphdGlvblJvbGVSZXF1ZXN0El8KBm9yZ19pZBgBIAEoCUJPkkE+MiVVbmlxdWUgaWRlbnRpZmllciBvZiB0aGUgb3JnYW5pemF0aW9uShUib3JnXzEyMTMxMjQzNDEyMzMxMiK6SAtyCRABGCA6A29yZxJdCgRyb2xlGAIgASgLMikuc2NhbGVraXQudjEucm9sZXMuQ3JlYXRlT3JnYW5pemF0aW9uUm9sZUIkkkEbMhlPcmdhbml6YXRpb24gcm9sZSBkZXRhaWxzukgDyAEBIkcKHkNyZWF0ZU9yZ2FuaXphdGlvblJvbGVSZXNwb25zZRIlCgRyb2xlGAEgASgLMhcuc2NhbGVraXQudjEucm9sZXMuUm9sZSLRAwoaR2V0T3JnYW5pemF0aW9uUm9sZVJlcXVlc3QSXwoGb3JnX2lkGAEgASgJQk+SQT4yJVVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBvcmdhbml6YXRpb25KFSJvcmdfMTIxMzEyNDM0MTIzMzEyIrpIC3IJEAEYIDoDb3JnEl8KCXJvbGVfbmFtZRgCIAEoCUJMkkEnMhdVbmlxdWUgbmFtZSBvZiB0aGUgcm9sZUoMImFkbWluX3JvbGUiukgfyAEBchoQARhkMhReW2EtekEtWjAtOV9dezEsNjR9JBLkAQoHaW5jbHVkZRgDIAEoCULNAZJBpAEykgFJbmNsdWRlIGFkZGl0aW9uYWwgZGF0YSBpbiB0aGUgcmVzcG9uc2UuIFZhbGlkIHZhbHVlczogJ3Blcm1pc3Npb25zJyAoZGlyZWN0IHBlcm1pc3Npb25zIG9ubHkpLCAncGVybWlzc2lvbnM6YWxsJyAoaW5jbHVkZXMgaW5oZXJpdGVkIHBlcm1pc3Npb25zKUoNInBlcm1pc3Npb25zIrpIInIgUgBSC3Blcm1pc3Npb25zUg9wZXJtaXNzaW9uczphbGxIAIgBAUIKCghfaW5jbHVkZSJEChtHZXRPcmdhbml6YXRpb25Sb2xlUmVzcG9uc2USJQoEcm9sZRgBIAEoCzIXLnNjYWxla2l0LnYxLnJvbGVzLlJvbGUi0gQKHExpc3RPcmdhbml6YXRpb25Sb2xlc1JlcXVlc3QSYgoGb3JnX2lkGAEgASgJQlKSQT4yJVVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBvcmdhbml6YXRpb25KFSJvcmdfMTIxMzEyNDM0MTIzMzEyIrpIDsgBAXIJEAEYIDoDb3JnEuQBCgdpbmNsdWRlGAIgASgJQs0BkkGkATKSAUluY2x1ZGUgYWRkaXRpb25hbCBkYXRhIGluIHRoZSByZXNwb25zZS4gVmFsaWQgdmFsdWVzOiAncGVybWlzc2lvbnMnIChkaXJlY3QgcGVybWlzc2lvbnMgb25seSksICdwZXJtaXNzaW9uczphbGwnIChpbmNsdWRlcyBpbmhlcml0ZWQgcGVybWlzc2lvbnMpSg0icGVybWlzc2lvbnMiukgiciBSAFILcGVybWlzc2lvbnNSD3Blcm1pc3Npb25zOmFsbEgAiAEBOtoBkkHWAQqwASoXTGlzdCBvcmdhbml6YXRpb24gcm9sZXMyiwFSZXRyaWV2ZXMgYSBwYWdpbmF0ZWQgbGlzdCBvZiBhbGwgcm9sZXMgd2l0aGluIHRoZSBvcmdhbml6YXRpb24uIFVzZSB0aGUgcGFnZV90b2tlbiBmcm9tIHRoZSByZXNwb25zZSB0byBhY2Nlc3Mgc3Vic2VxdWVudCBwYWdlcyBvZiByZXN1bHRz0gEGb3JnX2lkMiF7Im9yZ19pZCIgOiAib3JnXzg3NTY4NjU2ODU3NjIiIH1CCgoIX2luY2x1ZGUiYwodTGlzdE9yZ2FuaXphdGlvblJvbGVzUmVzcG9uc2USQgoFcm9sZXMYASADKAsyFy5zY2FsZWtpdC52MS5yb2xlcy5Sb2xlQhqSQRcyFUxpc3Qgb2Ygcm9sZXMgb2JqZWN0cyK0AgodVXBkYXRlT3JnYW5pemF0aW9uUm9sZVJlcXVlc3QSXwoGb3JnX2lkGAEgASgJQk+SQT4yJVVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBvcmdhbml6YXRpb25KFSJvcmdfMTIxMzEyNDM0MTIzMzEyIrpIC3IJEAEYIDoDb3JnEl8KCXJvbGVfbmFtZRgCIAEoCUJMkkEnMhdVbmlxdWUgbmFtZSBvZiB0aGUgcm9sZUoMImFkbWluX3JvbGUiukgfyAEBchoQARhkMhReW2EtekEtWjAtOV9dezEsNjR9JBJRCgRyb2xlGAMgASgLMh0uc2NhbGVraXQudjEucm9sZXMuVXBkYXRlUm9sZUIkkkEbMhlPcmdhbml6YXRpb24gcm9sZSBkZXRhaWxzukgDyAEBIkcKHlVwZGF0ZU9yZ2FuaXphdGlvblJvbGVSZXNwb25zZRIlCgRyb2xlGAEgASgLMhcuc2NhbGVraXQudjEucm9sZXMuUm9sZSKFAwodRGVsZXRlT3JnYW5pemF0aW9uUm9sZVJlcXVlc3QSXwoGb3JnX2lkGAEgASgJQk+SQT4yJVVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBvcmdhbml6YXRpb25KFSJvcmdfMTIxMzEyNDM0MTIzMzEyIrpIC3IJEAEYIDoDb3JnEl8KCXJvbGVfbmFtZRgCIAEoCUJMkkEnMhdVbmlxdWUgbmFtZSBvZiB0aGUgcm9sZUoMImFkbWluX3JvbGUiukgfyAEBchoQARhkMhReW2EtekEtWjAtOV9dezEsNjR9JBKKAQoScmVhc3NpZ25fcm9sZV9uYW1lGAMgASgJQmmSQUcyNlJvbGUgbmFtZSB0byByZWFzc2lnbiB1c2VycyB0byB3aGVuIGRlbGV0aW5nIHRoaXMgcm9sZUoNIm1lbWJlcl9yb2xlIrpIHHIaEAEYZDIUXlthLXpBLVowLTlfXXsxLDY0fSRIAIgBAUIVChNfcmVhc3NpZ25fcm9sZV9uYW1lIoEBChhHZXRSb2xlVXNlcnNDb3VudFJlcXVlc3QSXwoJcm9sZV9uYW1lGAIgASgJQkySQScyF1VuaXF1ZSBuYW1lIG9mIHRoZSByb2xlSgwiYWRtaW5fcm9sZSK6SB/IAQFyGhABGGQyFF5bYS16QS1aMC05X117MSw2NH0kSgQIARACImQKGUdldFJvbGVVc2Vyc0NvdW50UmVzcG9uc2USRwoFY291bnQYASABKANCOJJBLjIoTnVtYmVyIG9mIHVzZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZUoCMTC6SAQaAiAAIu4BCiRHZXRPcmdhbml6YXRpb25Sb2xlVXNlcnNDb3VudFJlcXVlc3QSWAoGb3JnX2lkGAEgASgJQkiSQTkyJVVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBvcmdhbml6YXRpb25KECJvcmdfMTIzNDU2Nzg5MCK6SAnIAQFyBBABGGQSbAoJcm9sZV9uYW1lGAIgASgJQlmSQTQyJFVuaXF1ZSBuYW1lIG9mIHRoZSBvcmdhbml6YXRpb24gcm9sZUoMImFkbWluX3JvbGUiukgfyAEBchoQARhkMhReW2EtekEtWjAtOV9dezEsNjR9JCJ8CiVHZXRPcmdhbml6YXRpb25Sb2xlVXNlcnNDb3VudFJlc3BvbnNlElMKBWNvdW50GAEgASgDQkSSQToyNU51bWJlciBvZiB1c2VycyBhc3NvY2lhdGVkIHdpdGggdGhlIG9yZ2FuaXphdGlvbiByb2xlSgE1ukgEGgIgACKqCQoZVXBkYXRlRGVmYXVsdFJvbGVzUmVxdWVzdBKOAgoPZGVmYXVsdF9jcmVhdG9yGAIgASgLMiQuc2NhbGVraXQudjEucm9sZXMuVXBkYXRlRGVmYXVsdFJvbGVCzgEYAZJByAEySkRlZmF1bHQgY3JlYXRvciByb2xlIChkZXByZWNhdGVkIC0gdXNlIGRlZmF1bHRfY3JlYXRvcl9yb2xlIGZpZWxkIGluc3RlYWQpSnp7ImlkIjogInJvbGVfMTIzNDU2Nzg5MCIsICJuYW1lIjogImNyZWF0b3IiLCAiZGlzcGxheV9uYW1lIjogIkNyZWF0b3IgUm9sZSIsICJkZXNjcmlwdGlvbiI6ICJSb2xlIGZvciBjcmVhdGluZyByZXNvdXJjZXMifRKGAgoOZGVmYXVsdF9tZW1iZXIYAyABKAsyJC5zY2FsZWtpdC52MS5yb2xlcy5VcGRhdGVEZWZhdWx0Um9sZULHARgBkkHBATJIRGVmYXVsdCBtZW1iZXIgcm9sZSAoZGVwcmVjYXRlZCAtIHVzZSBkZWZhdWx0X21lbWJlcl9yb2xlIGZpZWxkIGluc3RlYWQpSnV7ImlkIjogInJvbGVfMDk4NzY1NDMyMSIsICJuYW1lIjogIm1lbWJlciIsICJkaXNwbGF5X25hbWUiOiAiTWVtYmVyIFJvbGUiLCAiZGVzY3JpcHRpb24iOiAiUm9sZSBmb3IgcmVndWxhciBtZW1iZXJzIn0SogIKFGRlZmF1bHRfY3JlYXRvcl9yb2xlGAQgASgJQv4BkkHbATLNAU5hbWUgb2YgdGhlIHJvbGUgdG8gc2V0IGFzIHRoZSBkZWZhdWx0IGNyZWF0b3Igcm9sZS4gVGhpcyByb2xlIHdpbGwgYmUgYXV0b21hdGljYWxseSBhc3NpZ25lZCB0byB1c2VycyB3aG8gY3JlYXRlIG5ldyByZXNvdXJjZXMgaW4gdGhlIGVudmlyb25tZW50LiBNdXN0IGJlIGEgdmFsaWQgcm9sZSBuYW1lIHRoYXQgZXhpc3RzIGluIHRoZSBlbnZpcm9ubWVudC5KCSJjcmVhdG9yIrpIHHIaEAAYZDIUXlthLXpBLVowLTlfXXsxLDY0fSRIAIgBARKWAgoTZGVmYXVsdF9tZW1iZXJfcm9sZRgFIAEoCULzAZJB0AEywwFOYW1lIG9mIHRoZSByb2xlIHRvIHNldCBhcyB0aGUgZGVmYXVsdCBtZW1iZXIgcm9sZS4gVGhpcyByb2xlIHdpbGwgYmUgYXV0b21hdGljYWxseSBhc3NpZ25lZCB0byBuZXcgdXNlcnMgd2hlbiB0aGV5IGpvaW4gdGhlIGVudmlyb25tZW50LiBNdXN0IGJlIGEgdmFsaWQgcm9sZSBuYW1lIHRoYXQgZXhpc3RzIGluIHRoZSBlbnZpcm9ubWVudC5KCCJtZW1iZXIiukgcchoQABhkMhReW2EtekEtWjAtOV9dezEsNjR9JEgBiAEBQhcKFV9kZWZhdWx0X2NyZWF0b3Jfcm9sZUIWChRfZGVmYXVsdF9tZW1iZXJfcm9sZUoECAEQAiKBAgolVXBkYXRlRGVmYXVsdE9yZ2FuaXphdGlvblJvbGVzUmVxdWVzdBJiCgZvcmdfaWQYASABKAlCUpJBPjIlVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIG9yZ2FuaXphdGlvbkoVIm9yZ18xMjEzMTI0MzQxMjMzMTIiukgOyAEBcgkQARggOgNvcmcSdAoTZGVmYXVsdF9tZW1iZXJfcm9sZRgCIAEoCUJXkkEyMiZVbmlxdWUgbmFtZSBvZiB0aGUgZGVmYXVsdCBtZW1iZXIgcm9sZUoIIm1lbWJlciK6SB/IAQFyGhABGGQyFF5bYS16QS1aMC05X117MSw2NH0kIqcFChpVcGRhdGVEZWZhdWx0Um9sZXNSZXNwb25zZRLGAgoPZGVmYXVsdF9jcmVhdG9yGAEgASgLMhcuc2NhbGVraXQudjEucm9sZXMuUm9sZUKTApJBjwIykAFUaGUgcm9sZSB0aGF0IGlzIG5vdyBzZXQgYXMgdGhlIGRlZmF1bHQgY3JlYXRvciByb2xlIGZvciB0aGUgZW52aXJvbm1lbnQuIENvbnRhaW5zIGNvbXBsZXRlIHJvbGUgaW5mb3JtYXRpb24gaW5jbHVkaW5nIHBlcm1pc3Npb25zIGFuZCBtZXRhZGF0YS5KensiaWQiOiAicm9sZV8xMjM0NTY3ODkwIiwgIm5hbWUiOiAiY3JlYXRvciIsICJkaXNwbGF5X25hbWUiOiAiQ3JlYXRvciBSb2xlIiwgImRlc2NyaXB0aW9uIjogIlJvbGUgZm9yIGNyZWF0aW5nIHJlc291cmNlcyJ9Er8CCg5kZWZhdWx0X21lbWJlchgCIAEoCzIXLnNjYWxla2l0LnYxLnJvbGVzLlJvbGVCjQKSQYkCMo8BVGhlIHJvbGUgdGhhdCBpcyBub3cgc2V0IGFzIHRoZSBkZWZhdWx0IG1lbWJlciByb2xlIGZvciB0aGUgZW52aXJvbm1lbnQuIENvbnRhaW5zIGNvbXBsZXRlIHJvbGUgaW5mb3JtYXRpb24gaW5jbHVkaW5nIHBlcm1pc3Npb25zIGFuZCBtZXRhZGF0YS5KdXsiaWQiOiAicm9sZV8wOTg3NjU0MzIxIiwgIm5hbWUiOiAibWVtYmVyIiwgImRpc3BsYXlfbmFtZSI6ICJNZW1iZXIgUm9sZSIsICJkZXNjcmlwdGlvbiI6ICJSb2xlIGZvciByZWd1bGFyIG1lbWJlcnMifSL1AQomVXBkYXRlRGVmYXVsdE9yZ2FuaXphdGlvblJvbGVzUmVzcG9uc2USygEKDmRlZmF1bHRfbWVtYmVyGAIgASgLMhcuc2NhbGVraXQudjEucm9sZXMuUm9sZUKYAZJBlAEyG1VwZGF0ZWQgZGVmYXVsdCBtZW1iZXIgcm9sZUp1eyJpZCI6ICJyb2xlXzA5ODc2NTQzMjEiLCAibmFtZSI6ICJtZW1iZXIiLCAiZGlzcGxheV9uYW1lIjogIk1lbWJlciBSb2xlIiwgImRlc2NyaXB0aW9uIjogIlJvbGUgZm9yIHJlZ3VsYXIgbWVtYmVycyJ9IpQBChFVcGRhdGVEZWZhdWx0Um9sZRIbCgJpZBgBIAEoCUIPukgMcgoQARggOgRyb2xlElkKBG5hbWUYAiABKAlCRpJBJDIXVW5pcXVlIG5hbWUgb2YgdGhlIHJvbGVKCSJjcmVhdG9yIrpIHHIaEAAYZDIUXlthLXpBLVowLTlfXXsxLDY0fSRIAIgBAUIHCgVfbmFtZSLAAgoKUGVybWlzc2lvbhIbCgJpZBgBIAEoCUIPukgMcgoQARggOgRwZXJtEiwKBG5hbWUYAiABKAlCHrpIG8gBAXIWEAEYZDIQXlthLXpBLVowLTlfOl0rJBIdCgtkZXNjcmlwdGlvbhgDIAEoCUIIukgFcgMY0A8SLwoLY3JlYXRlX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KC3VwZGF0ZV90aW1lGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJmChZpc19zY2FsZWtpdF9wZXJtaXNzaW9uGAYgASgIQkaSQUMyO0luZGljYXRlcyB3aGV0aGVyIHRoaXMgcGVybWlzc2lvbiBpcyBwcmVkZWZpbmVkIGJ5IFNjYWxla2l0SgR0cnVlIt0CCg5Sb2xlUGVybWlzc2lvbhIbCgJpZBgBIAEoCUIPukgMcgoQARggOgRwZXJtEiwKBG5hbWUYAiABKAlCHrpIG8gBAXIWEAEYZDIQXlthLXpBLVowLTlfOl0rJBIdCgtkZXNjcmlwdGlvbhgDIAEoCUIIukgFcgMY0A8SLwoLY3JlYXRlX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KC3VwZGF0ZV90aW1lGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJ/Cglyb2xlX25hbWUYBiABKAlCbJJBRzI3TmFtZSBvZiB0aGUgcm9sZSBmcm9tIHdoaWNoIHRoaXMgcGVybWlzc2lvbiB3YXMgc291cmNlZEoMImFkbWluX3JvbGUiukgfyAEBchoQARhkMhReW2EtekEtWjAtOV9dezEsNjR9JCLuAQoQQ3JlYXRlUGVybWlzc2lvbhJoCgRuYW1lGAEgASgJQlqSQTQyIFVuaXF1ZSBuYW1lL0lEIG9mIHRoZSBwZXJtaXNzaW9uShAicmVhZDpkb2N1bWVudHMiukggyAEBchsQARhkMhVeW2EtekEtWjAtOV86XXsxLDY0fSQScAoLZGVzY3JpcHRpb24YAiABKAlCW5JBUDIdRGVzY3JpcHRpb24gb2YgdGhlIHBlcm1pc3Npb25KLyJBbGxvd3MgdXNlciB0byByZWFkIGRvY3VtZW50cyBmcm9tIHRoZSBzeXN0ZW0iukgFcgMY0A8iWgoXQ3JlYXRlUGVybWlzc2lvblJlcXVlc3QSPwoKcGVybWlzc2lvbhgBIAEoCzIjLnNjYWxla2l0LnYxLnJvbGVzLkNyZWF0ZVBlcm1pc3Npb25CBrpIA8gBASJNChhDcmVhdGVQZXJtaXNzaW9uUmVzcG9uc2USMQoKcGVybWlzc2lvbhgBIAEoCzIdLnNjYWxla2l0LnYxLnJvbGVzLlBlcm1pc3Npb24ieAoUR2V0UGVybWlzc2lvblJlcXVlc3QSYAoPcGVybWlzc2lvbl9uYW1lGAEgASgJQkeSQSYyFk5hbWUgb2YgdGhlIHBlcm1pc3Npb25KDCJyZWFkOnVzZXJzIrpIG8gBAXIWEAEYQDIQXlthLXpBLVowLTlfOl0rJCJKChVHZXRQZXJtaXNzaW9uUmVzcG9uc2USMQoKcGVybWlzc2lvbhgBIAEoCzIdLnNjYWxla2l0LnYxLnJvbGVzLlBlcm1pc3Npb24ivAEKF1VwZGF0ZVBlcm1pc3Npb25SZXF1ZXN0EmAKD3Blcm1pc3Npb25fbmFtZRgBIAEoCUJHkkEmMhZOYW1lIG9mIHRoZSBwZXJtaXNzaW9uSgwicmVhZF91c2VycyK6SBvIAQFyFhABGEAyEF5bYS16QS1aMC05XzpdKyQSPwoKcGVybWlzc2lvbhgDIAEoCzIjLnNjYWxla2l0LnYxLnJvbGVzLkNyZWF0ZVBlcm1pc3Npb25CBrpIA8gBASJNChhVcGRhdGVQZXJtaXNzaW9uUmVzcG9uc2USMQoKcGVybWlzc2lvbhgBIAEoCzIdLnNjYWxla2l0LnYxLnJvbGVzLlBlcm1pc3Npb24i7gMKFkxpc3RQZXJtaXNzaW9uc1JlcXVlc3QSWQoKcGFnZV90b2tlbhgBIAEoCUJAkkE9MitQYWdlIHRva2VuIHRvIHJldHJpZXZlIG5leHQgcGFnZSBvZiByZXN1bHRzSg4idG9rZW5fYWJjMTIzIkgAiAEBElwKCXBhZ2Vfc2l6ZRgCIAEoDUJEkkE4MjJOdW1iZXIgb2YgcGVybWlzc2lvbnMgdG8gcmV0dXJuIHBlciBwYWdlIChtYXggMTAwKUoCNTC6SAYqBBhkKAFIAYgBARL9AQoEdHlwZRgDIAEoDjIhLnNjYWxla2l0LnYxLnJvbGVzLlBlcm1pc3Npb25UeXBlQssBkkHHATK/AUZpbHRlciBwZXJtaXNzaW9ucyBieSB0eXBlOiBBTEwsIFNDQUxFS0lULCBvciBFTlZJUk9OTUVOVCwgd2hlcmUgU0NBTEVLSVQgYXJlIHByZWRlZmluZWQgU2NhbGVraXQgcGVybWlzc2lvbnMgYW5kIEVOVklST05NRU5UIGFyZSBjdXN0b20gcGVybWlzc2lvbnMgY3JlYXRlZCBpbiB0aGUgZW52aXJvbm1lbnQsIGRlZmF1bHQgaXMgQUxMSgNBTExCDQoLX3BhZ2VfdG9rZW5CDAoKX3BhZ2Vfc2l6ZSLCAgoXTGlzdFBlcm1pc3Npb25zUmVzcG9uc2USMgoLcGVybWlzc2lvbnMYASADKAsyHS5zY2FsZWtpdC52MS5yb2xlcy5QZXJtaXNzaW9uElgKD3ByZXZfcGFnZV90b2tlbhgCIAEoCUI/kkE8MipUb2tlbiB0byByZXRyaWV2ZSBwcmV2aW91cyBwYWdlIG9mIHJlc3VsdHNKDiJ0b2tlbl9kZWY0NTYiElQKD25leHRfcGFnZV90b2tlbhgDIAEoCUI7kkE4MiZUb2tlbiB0byByZXRyaWV2ZSBuZXh0IHBhZ2Ugb2YgcmVzdWx0c0oOInRva2VuX2RlZjQ1NiISQwoKdG90YWxfc2l6ZRgEIAEoDUIvkkEsMiVUb3RhbCBudW1iZXIgb2YgcGVybWlzc2lvbnMgYXZhaWxhYmxlSgMxNTAiewoXRGVsZXRlUGVybWlzc2lvblJlcXVlc3QSYAoPcGVybWlzc2lvbl9uYW1lGAEgASgJQkeSQSYyFk5hbWUgb2YgdGhlIHBlcm1pc3Npb25KDCJyZWFkX3VzZXJzIrpIG8gBAXIWEAEYQDIQXlthLXpBLVowLTlfOl0rJCJrChpMaXN0Um9sZVBlcm1pc3Npb25zUmVxdWVzdBJNCglyb2xlX25hbWUYASABKAlCOpJBGTIQTmFtZSBvZiB0aGUgcm9sZUoFYWRtaW66SBvIAQFyFhABGEAyEF5bYS16QS1aMC05Xy1dKyQiiQEKG0xpc3RSb2xlUGVybWlzc2lvbnNSZXNwb25zZRJqCgtwZXJtaXNzaW9ucxgBIAMoCzIdLnNjYWxla2l0LnYxLnJvbGVzLlBlcm1pc3Npb25CNpJBMzIxTGlzdCBvZiBwZXJtaXNzaW9ucyBkaXJlY3RseSBhc3NpZ25lZCB0byB0aGUgcm9sZSLfAQobQWRkUGVybWlzc2lvbnNUb1JvbGVSZXF1ZXN0Ek0KCXJvbGVfbmFtZRgBIAEoCUI6kkEZMhBOYW1lIG9mIHRoZSByb2xlSgVhZG1pbrpIG8gBAXIWEAEYQDIQXlthLXpBLVowLTlfOl0rJBJxChBwZXJtaXNzaW9uX25hbWVzGAIgAygJQleSQS0yK0xpc3Qgb2YgcGVybWlzc2lvbiBuYW1lcyB0byBhZGQgdG8gdGhlIHJvbGW6SCTIAQGSAR4IARBkIhhyFhABGEAyEF5bYS16QS1aMC05XzpdKyQilQEKHEFkZFBlcm1pc3Npb25zVG9Sb2xlUmVzcG9uc2USdQoLcGVybWlzc2lvbnMYASADKAsyHS5zY2FsZWtpdC52MS5yb2xlcy5QZXJtaXNzaW9uQkGSQT4yPExpc3Qgb2YgYWxsIHBlcm1pc3Npb25zIGJlbG9uZ2luZyB0byB0aGUgcm9sZSBhZnRlciBhZGRpdGlvbiLZAQofUmVtb3ZlUGVybWlzc2lvbkZyb21Sb2xlUmVxdWVzdBJMCglyb2xlX25hbWUYASABKAlCOZJBGTIQTmFtZSBvZiB0aGUgcm9sZUoFYWRtaW66SBrIAQFyFRABGEAyD15bYS16QS1aMC05X10rJBJoCg9wZXJtaXNzaW9uX25hbWUYAiABKAlCT5JBLjIgTmFtZSBvZiB0aGUgcGVybWlzc2lvbiB0byByZW1vdmVKCnJlYWRfdXNlcnO6SBvIAQFyFhABGEAyEF5bYS16QS1aMC05XzpdKyQicwojTGlzdEVmZmVjdGl2ZVJvbGVQZXJtaXNzaW9uc1JlcXVlc3QSTAoJcm9sZV9uYW1lGAEgASgJQjmSQRkyEE5hbWUgb2YgdGhlIHJvbGVKBWFkbWluukgayAEBchUQARhAMg9eW2EtekEtWjAtOV9dKyQirQEKJExpc3RFZmZlY3RpdmVSb2xlUGVybWlzc2lvbnNSZXNwb25zZRKEAQoLcGVybWlzc2lvbnMYASADKAsyHS5zY2FsZWtpdC52MS5yb2xlcy5QZXJtaXNzaW9uQlCSQU0yS0xpc3Qgb2YgYWxsIGVmZmVjdGl2ZSBwZXJtaXNzaW9ucyBpbmNsdWRpbmcgdGhvc2UgaW5oZXJpdGVkIGZyb20gYmFzZSByb2xlcyJuChlMaXN0RGVwZW5kZW50Um9sZXNSZXF1ZXN0ElEKCXJvbGVfbmFtZRgBIAEoCUI+kkEeMhVOYW1lIG9mIHRoZSBiYXNlIHJvbGVKBWFkbWluukgayAEBchUQARhAMg9eW2EtekEtWjAtOV9dKyQiYgoaTGlzdERlcGVuZGVudFJvbGVzUmVzcG9uc2USRAoFcm9sZXMYASADKAsyFy5zY2FsZWtpdC52MS5yb2xlcy5Sb2xlQhySQRkyF0xpc3Qgb2YgZGVwZW5kZW50IHJvbGVzIvMBChVEZWxldGVSb2xlQmFzZVJlcXVlc3QS2QEKCXJvbGVfbmFtZRgBIAEoCULFAZJBpAEykQFVbmlxdWUgbmFtZSBpZGVudGlmaWVyIG9mIHRoZSByb2xlIHdob3NlIGJhc2UgaW5oZXJpdGFuY2UgcmVsYXRpb25zaGlwIHNob3VsZCBiZSByZW1vdmVkLiBNdXN0IGJlIGFscGhhbnVtZXJpYyB3aXRoIHVuZGVyc2NvcmVzLCAxLTY0IGNoYXJhY3RlcnMuSg5jb250ZW50X2VkaXRvcrpIGsgBAXIVEAEYQDIPXlthLXpBLVowLTlfXSskIvcBCiFEZWxldGVPcmdhbml6YXRpb25Sb2xlQmFzZVJlcXVlc3QSXgoGb3JnX2lkGAEgASgJQk6SQT0yJFVuaXF1ZSBpZGVudGlmaWVyIHRvIGFuIE9yZ2FuaXphdGlvbkoVIm9yZ18xMjEzMTI0MzQxMjMzMTIiukgLcgkQARggOgNvcmcScgoJcm9sZV9uYW1lGAIgASgJQl+SQToyMU5hbWUgb2YgdGhlIG9yZ2FuaXphdGlvbiByb2xlIHRvIHJlbW92ZSBiYXNlIGZyb21KBWFkbWluukgfyAEBchoQARhkMhReW2EtekEtWjAtOV9dezEsNjR9JCo4Cg5QZXJtaXNzaW9uVHlwZRIHCgNBTEwQABIMCghTQ0FMRUtJVBABEg8KC0VOVklST05NRU5UEAIy67sBCgxSb2xlc1NlcnZpY2USzwUKCkNyZWF0ZVJvbGUSJC5zY2FsZWtpdC52MS5yb2xlcy5DcmVhdGVSb2xlUmVxdWVzdBolLnNjYWxla2l0LnYxLnJvbGVzLkNyZWF0ZVJvbGVSZXNwb25zZSLzBJJBzgQKBVJvbGVzEh5DcmVhdGUgbmV3IHJvbGUgaW4gZW52aXJvbm1lbnQaiANDcmVhdGVzIGEgbmV3IHJvbGUgd2l0aGluIHRoZSBlbnZpcm9ubWVudCB3aXRoIHNwZWNpZmllZCBwZXJtaXNzaW9ucyBhbmQgbWV0YWRhdGEuIFVzZSB0aGlzIGVuZHBvaW50IHRvIGRlZmluZSBjdXN0b20gcm9sZXMgdGhhdCBjYW4gYmUgYXNzaWduZWQgdG8gdXNlcnMgb3IgZ3JvdXBzLiBZb3UgY2FuIGNyZWF0ZSBoaWVyYXJjaGljYWwgcm9sZXMgYnkgZXh0ZW5kaW5nIGV4aXN0aW5nIHJvbGVzLCBhc3NpZ24gc3BlY2lmaWMgcGVybWlzc2lvbnMsIGFuZCBjb25maWd1cmUgZGlzcGxheSBpbmZvcm1hdGlvbi4gUm9sZXMgYXJlIHRoZSBmb3VuZGF0aW9uIG9mIHlvdXIgYWNjZXNzIGNvbnRyb2wgc3lzdGVtIGFuZCBkZXRlcm1pbmUgd2hhdCBhY3Rpb25zIHVzZXJzIGNhbiBwZXJmb3JtLkqZAQoDMjAxEpEBCmRSb2xlIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LiBSZXR1cm5zIHRoZSBjb21wbGV0ZSByb2xlIG9iamVjdCB3aXRoIHN5c3RlbS1nZW5lcmF0ZWQgSUQgYW5kIHRpbWVzdGFtcHMuEikKJxolLnNjYWxla2l0LnYxLnJvbGVzLkNyZWF0ZVJvbGVSZXNwb25zZYK1GAIYRILT5JMCFToEcm9sZSINL2FwaS92MS9yb2xlcxKyBQoKVXBkYXRlUm9sZRIkLnNjYWxla2l0LnYxLnJvbGVzLlVwZGF0ZVJvbGVSZXF1ZXN0GiUuc2NhbGVraXQudjEucm9sZXMuVXBkYXRlUm9sZVJlc3BvbnNlItYEkkGlBAoFUm9sZXMSF1VwZGF0ZSByb2xlIGluZm9ybWF0aW9uGvYCTW9kaWZpZXMgYW4gZXhpc3Rpbmcgcm9sZSdzIHByb3BlcnRpZXMgaW5jbHVkaW5nIGRpc3BsYXkgbmFtZSwgZGVzY3JpcHRpb24sIHBlcm1pc3Npb25zLCBhbmQgaW5oZXJpdGFuY2UuIFVzZSB0aGlzIGVuZHBvaW50IHRvIHVwZGF0ZSByb2xlIG1ldGFkYXRhLCBjaGFuZ2UgcGVybWlzc2lvbiBhc3NpZ25tZW50cywgb3IgbW9kaWZ5IHJvbGUgaGllcmFyY2h5LiBPbmx5IHRoZSBmaWVsZHMgeW91IHNwZWNpZnkgd2lsbCBiZSB1cGRhdGVkLCBsZWF2aW5nIG90aGVyIHByb3BlcnRpZXMgdW5jaGFuZ2VkLiBXaGVuIHVwZGF0aW5nIHBlcm1pc3Npb25zLCB0aGUgbmV3IGxpc3QgcmVwbGFjZXMgYWxsIGV4aXN0aW5nIHBlcm1pc3Npb25zIGZvciB0aGUgcm9sZS5KiQEKAzIwMBKBAQpUUm9sZSB1cGRhdGVkIHN1Y2Nlc3NmdWxseS4gUmV0dXJucyB0aGUgbW9kaWZpZWQgcm9sZSBvYmplY3Qgd2l0aCB1cGRhdGVkIHRpbWVzdGFtcHMuEikKJxolLnNjYWxla2l0LnYxLnJvbGVzLlVwZGF0ZVJvbGVSZXNwb25zZYK1GAIYRILT5JMCIToEcm9sZRoZL2FwaS92MS9yb2xlcy97cm9sZV9uYW1lfRL/BAoHR2V0Um9sZRIhLnNjYWxla2l0LnYxLnJvbGVzLkdldFJvbGVSZXF1ZXN0GiIuc2NhbGVraXQudjEucm9sZXMuR2V0Um9sZVJlc3BvbnNlIqwEkkGBBAoFUm9sZXMSEEdldCByb2xlIGRldGFpbHMaqQJSZXRyaWV2ZXMgY29tcGxldGUgaW5mb3JtYXRpb24gZm9yIGEgc3BlY2lmaWMgcm9sZSBpbmNsdWRpbmcgbWV0YWRhdGEgYW5kIGluaGVyaXRhbmNlIGRldGFpbHMgKGJhc2Ugcm9sZSBhbmQgZGVwZW5kZW50IHJvbGUgY291bnQpLiBVc2UgdGhpcyBlbmRwb2ludCB0byBhdWRpdCByb2xlIGNvbmZpZ3VyYXRpb24gYW5kIHVuZGVyc3RhbmQgdGhlIHJvbGUncyBwbGFjZSBpbiB0aGUgaGllcmFyY2h5LiBUbyB2aWV3IHRoZSByb2xlJ3MgcGVybWlzc2lvbnMsIHVzZSB0aGUgTGlzdFJvbGVQZXJtaXNzaW9ucyBlbmRwb2ludC5KuQEKAzIwMBKxAQqGAVN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgcm9sZSBkZXRhaWxzLiBSZXR1cm5zIHRoZSByb2xlIG9iamVjdCBpbmNsdWRpbmcgbWV0YWRhdGEgYW5kIGluaGVyaXRhbmNlIGRldGFpbHMuIFBlcm1pc3Npb25zIGFyZSBub3QgaW5jbHVkZWQuEiYKJBoiLnNjYWxla2l0LnYxLnJvbGVzLkdldFJvbGVSZXNwb25zZYK1GAIYRILT5JMCGxIZL2FwaS92MS9yb2xlcy97cm9sZV9uYW1lfRKJBgoJTGlzdFJvbGVzEiMuc2NhbGVraXQudjEucm9sZXMuTGlzdFJvbGVzUmVxdWVzdBokLnNjYWxla2l0LnYxLnJvbGVzLkxpc3RSb2xlc1Jlc3BvbnNlIrAFkkGRBQoFUm9sZXMSHUxpc3QgYWxsIHJvbGVzIGluIGVudmlyb25tZW50GsQDUmV0cmlldmVzIGEgY29tcHJlaGVuc2l2ZSBsaXN0IG9mIGFsbCByb2xlcyBhdmFpbGFibGUgd2l0aGluIHRoZSBzcGVjaWZpZWQgZW52aXJvbm1lbnQgaW5jbHVkaW5nIG9yZ2FuaXphdGlvbiByb2xlcy4gVXNlIHRoaXMgZW5kcG9pbnQgdG8gdmlldyBhbGwgcm9sZSBkZWZpbml0aW9ucywgaW5jbHVkaW5nIGN1c3RvbSByb2xlcyBhbmQgdGhlaXIgY29uZmlndXJhdGlvbnMuIFlvdSBjYW4gb3B0aW9uYWxseSBpbmNsdWRlIHBlcm1pc3Npb24gZGV0YWlscyBmb3IgZWFjaCByb2xlIHRvIHVuZGVyc3RhbmQgdGhlaXIgY2FwYWJpbGl0aWVzLiBUaGlzIGlzIHVzZWZ1bCBmb3Igcm9sZSBtYW5hZ2VtZW50LCBhdWRpdGluZyBvcmdhbml6YXRpb24gYWNjZXNzIGNvbnRyb2xzLCBvciB1bmRlcnN0YW5kaW5nIHRoZSBhdmFpbGFibGUgYWNjZXNzIGxldmVscyB3aXRoaW4gdGhlIG9yZ2FuaXphdGlvbi5KoQEKAzIwMBKZAQptU3VjY2Vzc2Z1bGx5IHJldHJpZXZlZCBsaXN0IG9mIHJvbGVzLiBSZXR1cm5zIGFsbCByb2xlcyB3aXRoIHRoZWlyIG1ldGFkYXRhIGFuZCBvcHRpb25hbGx5IHRoZWlyIHBlcm1pc3Npb25zLhIoCiYaJC5zY2FsZWtpdC52MS5yb2xlcy5MaXN0Um9sZXNSZXNwb25zZYK1GAIYZILT5JMCDxINL2FwaS92MS9yb2xlcxKsBgoKRGVsZXRlUm9sZRIkLnNjYWxla2l0LnYxLnJvbGVzLkRlbGV0ZVJvbGVSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5It8FkkG0BQoFUm9sZXMSHkRlbGV0ZSByb2xlIGFuZCByZWFzc2lnbiB1c2Vycxq7BFBlcm1hbmVudGx5IHJlbW92ZXMgYSByb2xlIGZyb20gdGhlIGVudmlyb25tZW50IGFuZCByZWFzc2lnbnMgdXNlcnMgd2hvIGhhZCB0aGF0IHJvbGUgdG8gYSBkaWZmZXJlbnQgcm9sZS4gVXNlIHRoaXMgZW5kcG9pbnQgd2hlbiB5b3UgbmVlZCB0byBjbGVhbiB1cCB1bnVzZWQgcm9sZXMgb3IgcmVzdHJ1Y3R1cmUgeW91ciBhY2Nlc3MgY29udHJvbCBzeXN0ZW0uIFRoZSByb2xlIGNhbm5vdCBiZSBkZWxldGVkIGlmIGl0IGhhcyBkZXBlbmRlbnQgcm9sZXMgKHJvbGVzIHRoYXQgZXh0ZW5kIGl0KSB1bmxlc3MgeW91IHNwZWNpZnkgYSByZXBsYWNlbWVudCByb2xlLiBJZiB1c2VycyBhcmUgYXNzaWduZWQgdG8gdGhlIHJvbGUgYmVpbmcgZGVsZXRlZCwgeW91IG11c3QgcHJvdmlkZSBhIHJlYXNzaWduX3JvbGVfbmFtZSB0byBtb3ZlIHRob3NlIHVzZXJzIHRvIGEgZGlmZmVyZW50IHJvbGUgYmVmb3JlIGRlbGV0aW9uIGNhbiBwcm9jZWVkLiBUaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lLCBzbyBlbnN1cmUgbm8gY3JpdGljYWwgdXNlcnMgZGVwZW5kIG9uIHRoZSByb2xlIGJlZm9yZSBkZWxldGlvbi5KTQoDMjAwEkYKRFJvbGUgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQgYW5kIHVzZXJzIHJlYXNzaWduZWQuIE5vIGNvbnRlbnQgcmV0dXJuZWQugrUYAhhEgtPkkwIbKhkvYXBpL3YxL3JvbGVzL3tyb2xlX25hbWV9EtwGChZDcmVhdGVPcmdhbml6YXRpb25Sb2xlEjAuc2NhbGVraXQudjEucm9sZXMuQ3JlYXRlT3JnYW5pemF0aW9uUm9sZVJlcXVlc3QaMS5zY2FsZWtpdC52MS5yb2xlcy5DcmVhdGVPcmdhbml6YXRpb25Sb2xlUmVzcG9uc2Ui3AWSQaAFCgVSb2xlcxIYQ3JlYXRlIG9yZ2FuaXphdGlvbiByb2xlGscDQ3JlYXRlcyBhIG5ldyByb2xlIHdpdGhpbiB0aGUgc3BlY2lmaWVkIG9yZ2FuaXphdGlvbiB3aXRoIGJhc2ljIGNvbmZpZ3VyYXRpb24gaW5jbHVkaW5nIG5hbWUsIGRpc3BsYXkgbmFtZSwgZGVzY3JpcHRpb24sIGFuZCBwZXJtaXNzaW9ucy4gVXNlIHRoaXMgZW5kcG9pbnQgdG8gZGVmaW5lIGN1c3RvbSByb2xlcyB0aGF0IGNhbiBiZSBhc3NpZ25lZCB0byB1c2VycyB3aXRoaW4gdGhlIG9yZ2FuaXphdGlvbi4gWW91IGNhbiBjcmVhdGUgaGllcmFyY2hpY2FsIHJvbGVzIGJ5IGV4dGVuZGluZyBleGlzdGluZyByb2xlcyBhbmQgYXNzaWduIHNwZWNpZmljIHBlcm1pc3Npb25zIHRvIGNvbnRyb2wgYWNjZXNzIGxldmVscy4gVGhlIHJvbGUgd2lsbCBiZSBzY29wZWQgdG8gdGhlIG9yZ2FuaXphdGlvbiBhbmQgY2FuIGJlIHVzZWQgZm9yIG9yZ2FuaXphdGlvbi1zcGVjaWZpYyBhY2Nlc3MgY29udHJvbC5KsgEKAzIwMRKqAQpxT3JnYW5pemF0aW9uIHJvbGUgY3JlYXRlZCBzdWNjZXNzZnVsbHkuIFJldHVybnMgdGhlIGNvbXBsZXRlIHJvbGUgb2JqZWN0IHdpdGggc3lzdGVtLWdlbmVyYXRlZCBJRCBhbmQgdGltZXN0YW1wcy4SNQozGjEuc2NhbGVraXQudjEucm9sZXMuQ3JlYXRlT3JnYW5pemF0aW9uUm9sZVJlc3BvbnNlgrUYAhhEgtPkkwIsOgRyb2xlIiQvYXBpL3YxL29yZ2FuaXphdGlvbnMve29yZ19pZH0vcm9sZXMStQYKFlVwZGF0ZU9yZ2FuaXphdGlvblJvbGUSMC5zY2FsZWtpdC52MS5yb2xlcy5VcGRhdGVPcmdhbml6YXRpb25Sb2xlUmVxdWVzdBoxLnNjYWxla2l0LnYxLnJvbGVzLlVwZGF0ZU9yZ2FuaXphdGlvblJvbGVSZXNwb25zZSK1BZJB7QQKBVJvbGVzEhhVcGRhdGUgb3JnYW5pemF0aW9uIHJvbGUapANNb2RpZmllcyBhbiBleGlzdGluZyBvcmdhbml6YXRpb24gcm9sZSdzIHByb3BlcnRpZXMgaW5jbHVkaW5nIGRpc3BsYXkgbmFtZSwgZGVzY3JpcHRpb24sIHBlcm1pc3Npb25zLCBhbmQgaW5oZXJpdGFuY2Ugc2V0dGluZ3MuIFVzZSB0aGlzIGVuZHBvaW50IHRvIHVwZGF0ZSByb2xlIG1ldGFkYXRhLCBjaGFuZ2UgcGVybWlzc2lvbiBhc3NpZ25tZW50cywgb3IgbW9kaWZ5IHJvbGUgaGllcmFyY2h5IHdpdGhpbiB0aGUgb3JnYW5pemF0aW9uLiBPbmx5IHRoZSBmaWVsZHMgeW91IHNwZWNpZnkgd2lsbCBiZSB1cGRhdGVkLCBsZWF2aW5nIG90aGVyIHByb3BlcnRpZXMgdW5jaGFuZ2VkLiBXaGVuIHVwZGF0aW5nIHBlcm1pc3Npb25zLCB0aGUgbmV3IGxpc3QgcmVwbGFjZXMgYWxsIGV4aXN0aW5nIHBlcm1pc3Npb25zIGZvciB0aGUgcm9sZS5KogEKAzIwMBKaAQphT3JnYW5pemF0aW9uIHJvbGUgdXBkYXRlZCBzdWNjZXNzZnVsbHkuIFJldHVybnMgdGhlIG1vZGlmaWVkIHJvbGUgb2JqZWN0IHdpdGggdXBkYXRlZCB0aW1lc3RhbXBzLhI1CjMaMS5zY2FsZWtpdC52MS5yb2xlcy5VcGRhdGVPcmdhbml6YXRpb25Sb2xlUmVzcG9uc2WCtRgCGESC0+STAjg6BHJvbGUaMC9hcGkvdjEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9yb2xlcy97cm9sZV9uYW1lfRKgBwoTR2V0T3JnYW5pemF0aW9uUm9sZRItLnNjYWxla2l0LnYxLnJvbGVzLkdldE9yZ2FuaXphdGlvblJvbGVSZXF1ZXN0Gi4uc2NhbGVraXQudjEucm9sZXMuR2V0T3JnYW5pemF0aW9uUm9sZVJlc3BvbnNlIqkGkkHnBQoFUm9sZXMSHUdldCBvcmdhbml6YXRpb24gcm9sZSBkZXRhaWxzGr8DUmV0cmlldmVzIGNvbXBsZXRlIGluZm9ybWF0aW9uIGZvciBhIHNwZWNpZmljIG9yZ2FuaXphdGlvbiByb2xlIGluY2x1ZGluZyBtZXRhZGF0YSwgaW5oZXJpdGFuY2UgZGV0YWlscywgYW5kIG9wdGlvbmFsbHkgcGVybWlzc2lvbnMuIFVzZSB0aGlzIGVuZHBvaW50IHRvIGF1ZGl0IHJvbGUgY29uZmlndXJhdGlvbiBhbmQgdW5kZXJzdGFuZCB0aGUgcm9sZSdzIHBsYWNlIGluIHRoZSBvcmdhbml6YXRpb24ncyByb2xlIGhpZXJhcmNoeS4gWW91IGNhbiBpbmNsdWRlIHBlcm1pc3Npb24gZGV0YWlscyB0byBzZWUgd2hhdCBjYXBhYmlsaXRpZXMgdGhlIHJvbGUgcHJvdmlkZXMuIFRoaXMgb3BlcmF0aW9uIGlzIHVzZWZ1bCBmb3Igcm9sZSBtYW5hZ2VtZW50LCB1c2VyIGFzc2lnbm1lbnQgZGVjaXNpb25zLCBvciB1bmRlcnN0YW5kaW5nIG9yZ2FuaXphdGlvbiBhY2Nlc3MgY29udHJvbHMuSvwBCgMyMDAS9AEKvQFTdWNjZXNzZnVsbHkgcmV0cmlldmVkIG9yZ2FuaXphdGlvbiByb2xlIGRldGFpbHMuIFJldHVybnMgdGhlIHJvbGUgb2JqZWN0IGluY2x1ZGluZyBtZXRhZGF0YSBhbmQgaW5oZXJpdGFuY2UgZGV0YWlscy4gUGVybWlzc2lvbnMgYXJlIGluY2x1ZGVkIG9ubHkgd2hlbiByZXF1ZXN0ZWQgdmlhIHRoZSBpbmNsdWRlIHBhcmFtZXRlci4SMgowGi4uc2NhbGVraXQudjEucm9sZXMuR2V0T3JnYW5pemF0aW9uUm9sZVJlc3BvbnNlgrUYAhhkgtPkkwIyEjAvYXBpL3YxL29yZ2FuaXphdGlvbnMve29yZ19pZH0vcm9sZXMve3JvbGVfbmFtZX0SowYKFUxpc3RPcmdhbml6YXRpb25Sb2xlcxIvLnNjYWxla2l0LnYxLnJvbGVzLkxpc3RPcmdhbml6YXRpb25Sb2xlc1JlcXVlc3QaMC5zY2FsZWtpdC52MS5yb2xlcy5MaXN0T3JnYW5pemF0aW9uUm9sZXNSZXNwb25zZSKmBZJB8AQKBVJvbGVzEhdMaXN0IG9yZ2FuaXphdGlvbiByb2xlcxqQA1JldHJpZXZlcyBhbGwgZW52aXJvbm1lbnQgcm9sZXMgYW5kIG9yZ2FuaXphdGlvbiBzcGVjaWZpYyByb2xlcy4gVXNlIHRoaXMgZW5kcG9pbnQgdG8gdmlldyBhbGwgcm9sZSBkZWZpbml0aW9ucywgaW5jbHVkaW5nIGN1c3RvbSByb2xlcyBhbmQgdGhlaXIgY29uZmlndXJhdGlvbnMuIFlvdSBjYW4gb3B0aW9uYWxseSBpbmNsdWRlIHBlcm1pc3Npb24gZGV0YWlscyBmb3IgZWFjaCByb2xlIHRvIHVuZGVyc3RhbmQgdGhlaXIgY2FwYWJpbGl0aWVzLiBUaGlzIGlzIHVzZWZ1bCBmb3Igcm9sZSBtYW5hZ2VtZW50LCBhdWRpdGluZyBvcmdhbml6YXRpb24gYWNjZXNzIGNvbnRyb2xzLCBvciB1bmRlcnN0YW5kaW5nIHRoZSBhdmFpbGFibGUgYWNjZXNzIGxldmVscyB3aXRoaW4gdGhlIG9yZ2FuaXphdGlvbi5KugEKAzIwMBKyAQp6U3VjY2Vzc2Z1bGx5IHJldHJpZXZlZCBsaXN0IG9mIG9yZ2FuaXphdGlvbiByb2xlcy4gUmV0dXJucyBhbGwgcm9sZXMgd2l0aCB0aGVpciBtZXRhZGF0YSBhbmQgb3B0aW9uYWxseSB0aGVpciBwZXJtaXNzaW9ucy4SNAoyGjAuc2NhbGVraXQudjEucm9sZXMuTGlzdE9yZ2FuaXphdGlvblJvbGVzUmVzcG9uc2WCtRgCGGSC0+STAiYSJC9hcGkvdjEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9yb2xlcxKKBgoWRGVsZXRlT3JnYW5pemF0aW9uUm9sZRIwLnNjYWxla2l0LnYxLnJvbGVzLkRlbGV0ZU9yZ2FuaXphdGlvblJvbGVSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IqUFkkHjBAoFUm9sZXMSGERlbGV0ZSBvcmdhbml6YXRpb24gcm9sZRrWA1Blcm1hbmVudGx5IHJlbW92ZXMgYSByb2xlIGZyb20gdGhlIG9yZ2FuaXphdGlvbiBhbmQgb3B0aW9uYWxseSByZWFzc2lnbnMgdXNlcnMgd2hvIGhhZCB0aGF0IHJvbGUgdG8gYSBkaWZmZXJlbnQgcm9sZS4gVXNlIHRoaXMgZW5kcG9pbnQgd2hlbiB5b3UgbmVlZCB0byBjbGVhbiB1cCB1bnVzZWQgcm9sZXMgb3IgcmVzdHJ1Y3R1cmUgeW91ciBvcmdhbml6YXRpb24ncyBhY2Nlc3MgY29udHJvbCBzeXN0ZW0uIElmIHVzZXJzIGFyZSBhc3NpZ25lZCB0byB0aGUgcm9sZSBiZWluZyBkZWxldGVkLCB5b3UgY2FuIHByb3ZpZGUgYSByZWFzc2lnbl9yb2xlX25hbWUgdG8gbW92ZSB0aG9zZSB1c2VycyB0byBhIGRpZmZlcmVudCByb2xlIGJlZm9yZSBkZWxldGlvbi4gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSwgc28gZW5zdXJlIG5vIGNyaXRpY2FsIHVzZXJzIGRlcGVuZCBvbiB0aGUgcm9sZSBiZWZvcmUgZGVsZXRpb24uSmcKAzIwMBJgCl5Pcmdhbml6YXRpb24gcm9sZSBzdWNjZXNzZnVsbHkgZGVsZXRlZCBhbmQgdXNlcnMgcmVhc3NpZ25lZCBpZiBzcGVjaWZpZWQuIE5vIGNvbnRlbnQgcmV0dXJuZWQugrUYAhhEgtPkkwIyKjAvYXBpL3YxL29yZ2FuaXphdGlvbnMve29yZ19pZH0vcm9sZXMve3JvbGVfbmFtZX0S2wgKEUdldFJvbGVVc2Vyc0NvdW50Eisuc2NhbGVraXQudjEucm9sZXMuR2V0Um9sZVVzZXJzQ291bnRSZXF1ZXN0Giwuc2NhbGVraXQudjEucm9sZXMuR2V0Um9sZVVzZXJzQ291bnRSZXNwb25zZSLqB5JBswcKBVJvbGVzEhxSZXRyaWV2ZSB1c2VyIGNvdW50IGZvciByb2xlGpMFUmV0cmlldmVzIHRoZSB0b3RhbCBudW1iZXIgb2YgdXNlcnMgY3VycmVudGx5IGFzc2lnbmVkIHRvIHRoZSBzcGVjaWZpZWQgcm9sZSB3aXRoaW4gdGhlIGVudmlyb25tZW50LiBVc2UgdGhpcyBlbmRwb2ludCB0byBtb25pdG9yIHJvbGUgdXNhZ2UsIGVuZm9yY2UgdXNlciBsaW1pdHMsIG9yIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHJvbGUgYXNzaWdubWVudHMuIFByb3ZpZGUgdGhlIHJvbGUncyB1bmlxdWUgbmFtZSBhcyBhIHBhdGggcGFyYW1ldGVyLCBhbmQgdGhlIHJlc3BvbnNlIHdpbGwgaW5jbHVkZSB0aGUgY3VycmVudCB1c2VyIGNvdW50IGZvciB0aGF0IHJvbGUuIFRoaXMgb3BlcmF0aW9uIGlzIHJlYWQtb25seSBhbmQgZG9lcyBub3QgbW9kaWZ5IGFueSBkYXRhIG9yIHVzZXIgYXNzaWdubWVudHMuIFRoZSBjb3VudCByZWZsZWN0cyBhbGwgdXNlcnMgd2hvIGhhdmUgdGhlIHJvbGUgZWl0aGVyIGRpcmVjdGx5IGFzc2lnbmVkIG9yIGluaGVyaXRlZCB0aHJvdWdoIG9yZ2FuaXphdGlvbiBtZW1iZXJzaGlwLiBUaGlzIGluZm9ybWF0aW9uIGlzIHVzZWZ1bCBmb3IgY2FwYWNpdHkgcGxhbm5pbmcsIHNlY3VyaXR5IGF1ZGl0aW5nLCBvciB1bmRlcnN0YW5kaW5nIHRoZSBpbXBhY3Qgb2Ygcm9sZSBjaGFuZ2VzIGFjcm9zcyB5b3VyIHVzZXIgYmFzZS5K9QEKAzIwMBLtAQq4AVN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgdXNlciBjb3VudCBmb3IgdGhlIHNwZWNpZmllZCByb2xlLiBSZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgdXNlcnMgY3VycmVudGx5IGFzc2lnbmVkIHRvIHRoZSByb2xlLCBpbmNsdWRpbmcgYm90aCBkaXJlY3QgYXNzaWdubWVudHMgYW5kIGluaGVyaXRlZCBhc3NpZ25tZW50cy4SMAouGiwuc2NhbGVraXQudjEucm9sZXMuR2V0Um9sZVVzZXJzQ291bnRSZXNwb25zZYK1GAIYRILT5JMCJxIlL2FwaS92MS9yb2xlcy97cm9sZV9uYW1lfS91c2Vyczpjb3VudBKyBwodR2V0T3JnYW5pemF0aW9uUm9sZVVzZXJzQ291bnQSNy5zY2FsZWtpdC52MS5yb2xlcy5HZXRPcmdhbml6YXRpb25Sb2xlVXNlcnNDb3VudFJlcXVlc3QaOC5zY2FsZWtpdC52MS5yb2xlcy5HZXRPcmdhbml6YXRpb25Sb2xlVXNlcnNDb3VudFJlc3BvbnNlIp0GkkHABQoFUm9sZXMSIEdldCBvcmdhbml6YXRpb24gcm9sZSB1c2VyIGNvdW50GsADUmV0cmlldmVzIHRoZSB0b3RhbCBudW1iZXIgb2YgdXNlcnMgY3VycmVudGx5IGFzc2lnbmVkIHRvIHRoZSBzcGVjaWZpZWQgb3JnYW5pemF0aW9uIHJvbGUuIFVzZSB0aGlzIGVuZHBvaW50IHRvIG1vbml0b3Igb3JnYW5pemF0aW9uIHJvbGUgdXNhZ2UsIGVuZm9yY2UgdXNlciBsaW1pdHMsIG9yIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHJvbGUgYXNzaWdubWVudHMgd2l0aGluIHRoZSBvcmdhbml6YXRpb24uIFByb3ZpZGUgdGhlIG9yZ2FuaXphdGlvbiBJRCBhbmQgcm9sZSBuYW1lIGFzIHBhdGggcGFyYW1ldGVycy4gVGhlIHJlc3BvbnNlIGluY2x1ZGVzIHRoZSB1c2VyIGNvdW50IGZvciB0aGUgcmVxdWVzdGVkIG9yZ2FuaXphdGlvbiByb2xlLiBUaGlzIG9wZXJhdGlvbiBpcyByZWFkLW9ubHkgYW5kIGRvZXMgbm90IG1vZGlmeSBhbnkgZGF0YSBvciB1c2VyIGFzc2lnbm1lbnRzLkrRAQoDMjAwEskBCogBU3VjY2Vzc2Z1bGx5IHJldHJpZXZlZCB1c2VyIGNvdW50IGZvciB0aGUgc3BlY2lmaWVkIG9yZ2FuaXphdGlvbiByb2xlLiBSZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgdXNlcnMgY3VycmVudGx5IGFzc2lnbmVkIHRvIHRoZSByb2xlLhI8CjoaOC5zY2FsZWtpdC52MS5yb2xlcy5HZXRPcmdhbml6YXRpb25Sb2xlVXNlcnNDb3VudFJlc3BvbnNlgrUYAhhk+tLkkwIJEgdQUkVWSUVXgtPkkwI+EjwvYXBpL3YxL29yZ2FuaXphdGlvbnMve29yZ19pZH0vcm9sZXMve3JvbGVfbmFtZX0vdXNlcnM6Y291bnQSngYKElVwZGF0ZURlZmF1bHRSb2xlcxIsLnNjYWxla2l0LnYxLnJvbGVzLlVwZGF0ZURlZmF1bHRSb2xlc1JlcXVlc3QaLS5zY2FsZWtpdC52MS5yb2xlcy5VcGRhdGVEZWZhdWx0Um9sZXNSZXNwb25zZSKqBZJB3wQKBVJvbGVzEiRTZXQgZGVmYXVsdCBjcmVhdG9yIGFuZCBtZW1iZXIgcm9sZXMazwNVcGRhdGVzIHRoZSBkZWZhdWx0IGNyZWF0b3IgYW5kIG1lbWJlciByb2xlcyBmb3IgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuIFVzZSB0aGlzIGVuZHBvaW50IHRvIGNvbmZpZ3VyZSB3aGljaCByb2xlcyBhcmUgYXV0b21hdGljYWxseSBhc3NpZ25lZCB0byBuZXcgdXNlcnMgd2hlbiB0aGV5IGpvaW4gdGhlIGVudmlyb25tZW50LiBZb3UgY2FuIHNwZWNpZnkgcm9sZSBuYW1lcyBmb3IgYm90aCBjcmVhdG9yIGFuZCBtZW1iZXIgZGVmYXVsdCByb2xlcy4gVGhlIHN5c3RlbSB3aWxsIHZhbGlkYXRlIHRoYXQgdGhlIHNwZWNpZmllZCByb2xlcyBleGlzdCBhbmQgdXBkYXRlIHRoZSBlbnZpcm9ubWVudCBzZXR0aW5ncyBhY2NvcmRpbmdseS4gUmV0dXJucyB0aGUgdXBkYXRlZCBkZWZhdWx0IHJvbGUgb2JqZWN0cyBpbmNsdWRpbmcgdGhlaXIgY29tcGxldGUgcm9sZSBpbmZvcm1hdGlvbiBhbmQgcGVybWlzc2lvbnMuSl4KAzIwMBJXCiJEZWZhdWx0IHJvbGVzIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5EjEKLxotLnNjYWxla2l0LnYxLnJvbGVzLlVwZGF0ZURlZmF1bHRSb2xlc1Jlc3BvbnNlgrUYAhhEgtPkkwI7OgEqWho6ASoyFS9hcGkvdjEvcm9sZXMvZGVmYXVsdDIaL2FwaS92MS9yb2xlczpzZXRfZGVmYXVsdHMSywYKHlVwZGF0ZURlZmF1bHRPcmdhbml6YXRpb25Sb2xlcxI4LnNjYWxla2l0LnYxLnJvbGVzLlVwZGF0ZURlZmF1bHRPcmdhbml6YXRpb25Sb2xlc1JlcXVlc3QaOS5zY2FsZWtpdC52MS5yb2xlcy5VcGRhdGVEZWZhdWx0T3JnYW5pemF0aW9uUm9sZXNSZXNwb25zZSKzBZJB7QQKBVJvbGVzEh5TZXQgZGVmYXVsdCBvcmdhbml6YXRpb24gcm9sZXMa+AJVcGRhdGVzIHRoZSBkZWZhdWx0IG1lbWJlciByb2xlIGZvciB0aGUgc3BlY2lmaWVkIG9yZ2FuaXphdGlvbi4gVXNlIHRoaXMgZW5kcG9pbnQgdG8gY29uZmlndXJlIHdoaWNoIHJvbGUgaXMgYXV0b21hdGljYWxseSBhc3NpZ25lZCB0byBuZXcgdXNlcnMgd2hlbiB0aGV5IGpvaW4gdGhlIG9yZ2FuaXphdGlvbi4gVGhlIHN5c3RlbSB3aWxsIHZhbGlkYXRlIHRoYXQgdGhlIHNwZWNpZmllZCByb2xlIGV4aXN0cyBhbmQgdXBkYXRlIHRoZSBvcmdhbml6YXRpb24gc2V0dGluZ3MgYWNjb3JkaW5nbHkuIFRoaXMgY29uZmlndXJhdGlvbiBhZmZlY3RzIGFsbCBuZXcgdXNlciBpbnZpdGF0aW9ucyBhbmQgbWVtYmVyc2hpcHMgd2l0aGluIHRoZSBvcmdhbml6YXRpb24uSsgBCgMyMDASwAEKf0RlZmF1bHQgb3JnYW5pemF0aW9uIHJvbGVzIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5LiBSZXR1cm5zIHRoZSB1cGRhdGVkIGRlZmF1bHQgbWVtYmVyIHJvbGUgb2JqZWN0IHdpdGggY29tcGxldGUgcm9sZSBpbmZvcm1hdGlvbi4SPQo7Gjkuc2NhbGVraXQudjEucm9sZXMuVXBkYXRlRGVmYXVsdE9yZ2FuaXphdGlvblJvbGVzUmVzcG9uc2WCtRgCGESC0+STAjY6ASoyMS9hcGkvdjEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9yb2xlczpzZXRfZGVmYXVsdHMSpAgKEkxpc3REZXBlbmRlbnRSb2xlcxIsLnNjYWxla2l0LnYxLnJvbGVzLkxpc3REZXBlbmRlbnRSb2xlc1JlcXVlc3QaLS5zY2FsZWtpdC52MS5yb2xlcy5MaXN0RGVwZW5kZW50Um9sZXNSZXNwb25zZSKwB5JB+gYKBVJvbGVzEhRMaXN0IGRlcGVuZGVudCByb2xlcxr8BFJldHJpZXZlcyBhbGwgcm9sZXMgdGhhdCBkaXJlY3RseSBleHRlbmQgdGhlIHNwZWNpZmllZCBiYXNlIHJvbGUgdGhyb3VnaCBpbmhlcml0YW5jZS4gVXNlIHRoaXMgZW5kcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgcm9sZSBoaWVyYXJjaHkgYW5kIGlkZW50aWZ5IHdoaWNoIHJvbGVzIGluaGVyaXQgcGVybWlzc2lvbnMgZnJvbSBhIHBhcnRpY3VsYXIgYmFzZSByb2xlLiBQcm92aWRlIHRoZSBiYXNlIHJvbGUgbmFtZSBhcyBhIHBhdGggcGFyYW1ldGVyLCBhbmQgdGhlIHJlc3BvbnNlIHdpbGwgaW5jbHVkZSBhbGwgZGVwZW5kZW50IHJvbGVzIHdpdGggdGhlaXIgbWV0YWRhdGEgYW5kIHBlcm1pc3Npb24gaW5mb3JtYXRpb24uIFRoaXMgb3BlcmF0aW9uIGlzIHVzZWZ1bCBmb3IgYXVkaXRpbmcgcm9sZSBpbmhlcml0YW5jZSByZWxhdGlvbnNoaXBzLCB1bmRlcnN0YW5kaW5nIHRoZSBpbXBhY3Qgb2YgY2hhbmdlcyB0byBiYXNlIHJvbGVzLCBvciBtYW5hZ2luZyByb2xlIGhpZXJhcmNoaWVzIGVmZmVjdGl2ZWx5LiBSZXR1cm5zIGEgbGlzdCBvZiBkZXBlbmRlbnQgcm9sZSBvYmplY3RzIGluY2x1ZGluZyB0aGVpciBuYW1lcywgZGlzcGxheSBuYW1lcywgZGVzY3JpcHRpb25zLCBhbmQgcGVybWlzc2lvbiBkZXRhaWxzLkrbAQoDMjAwEtMBCp0BU3VjY2Vzc2Z1bGx5IHJldHJpZXZlZCBkZXBlbmRlbnQgcm9sZXMuIFJldHVybnMgYSBsaXN0IG9mIGFsbCByb2xlcyB0aGF0IGV4dGVuZCB0aGUgc3BlY2lmaWVkIGJhc2Ugcm9sZSwgaW5jbHVkaW5nIHRoZWlyIG1ldGFkYXRhIGFuZCBwZXJtaXNzaW9uIGluZm9ybWF0aW9uLhIxCi8aLS5zY2FsZWtpdC52MS5yb2xlcy5MaXN0RGVwZW5kZW50Um9sZXNSZXNwb25zZYK1GAIYZILT5JMCJhIkL2FwaS92MS9yb2xlcy97cm9sZV9uYW1lfS9kZXBlbmRlbnRzErcGCg5EZWxldGVSb2xlQmFzZRIoLnNjYWxla2l0LnYxLnJvbGVzLkRlbGV0ZVJvbGVCYXNlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSLiBZJBsgUKBVJvbGVzEiREZWxldGUgcm9sZSBpbmhlcml0YW5jZSByZWxhdGlvbnNoaXAahgRSZW1vdmVzIHRoZSBiYXNlIHJvbGUgaW5oZXJpdGFuY2UgcmVsYXRpb25zaGlwIGZvciBhIHNwZWNpZmllZCByb2xlLCBlZmZlY3RpdmVseSBlbGltaW5hdGluZyBhbGwgaW5oZXJpdGVkIHBlcm1pc3Npb25zIGZyb20gdGhlIGJhc2Ugcm9sZS4gVXNlIHRoaXMgZW5kcG9pbnQgd2hlbiB5b3Ugd2FudCB0byBicmVhayB0aGUgaGllcmFyY2hpY2FsIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHJvbGVzIGFuZCByZW1vdmUgaW5oZXJpdGVkIHBlcm1pc3Npb25zLiBUaGUgcm9sZSB3aWxsIHJldGFpbiBvbmx5IGl0cyBkaXJlY3RseSBhc3NpZ25lZCBwZXJtaXNzaW9ucyBhZnRlciB0aGlzIG9wZXJhdGlvbi4gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSwgc28gZW5zdXJlIHRoZSByb2xlIGhhcyBzdWZmaWNpZW50IGRpcmVjdCBwZXJtaXNzaW9ucyBiZWZvcmUgcmVtb3ZpbmcgaW5oZXJpdGFuY2UuIFJldHVybnMgbm8gY29udGVudCBvbiBzdWNjZXNzZnVsIHJlbW92YWwgb2YgdGhlIGJhc2UgcmVsYXRpb25zaGlwLkp6CgMyMDAScwpxQmFzZSByb2xlIGluaGVyaXRhbmNlIHJlbGF0aW9uc2hpcCBzdWNjZXNzZnVsbHkgcmVtb3ZlZC4gVGhlIHJvbGUgbm93IGhhcyBvbmx5IGl0cyBkaXJlY3RseSBhc3NpZ25lZCBwZXJtaXNzaW9ucy6CtRgCGESC0+STAiAqHi9hcGkvdjEvcm9sZXMve3JvbGVfbmFtZX0vYmFzZRLmBgoaRGVsZXRlT3JnYW5pemF0aW9uUm9sZUJhc2USNC5zY2FsZWtpdC52MS5yb2xlcy5EZWxldGVPcmdhbml6YXRpb25Sb2xlQmFzZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHki+QWSQaMFCgVSb2xlcxIkUmVtb3ZlIG9yZ2FuaXphdGlvbiByb2xlIGluaGVyaXRhbmNlGugDUmVtb3ZlcyB0aGUgYmFzZSByb2xlIGluaGVyaXRhbmNlIHJlbGF0aW9uc2hpcCBmb3IgYSBzcGVjaWZpZWQgb3JnYW5pemF0aW9uIHJvbGUsIGVmZmVjdGl2ZWx5IGVsaW1pbmF0aW5nIGFsbCBpbmhlcml0ZWQgcGVybWlzc2lvbnMgZnJvbSB0aGUgYmFzZSByb2xlLiBVc2UgdGhpcyBlbmRwb2ludCB3aGVuIHlvdSB3YW50IHRvIGJyZWFrIHRoZSBoaWVyYXJjaGljYWwgcmVsYXRpb25zaGlwIGJldHdlZW4gcm9sZXMgYW5kIHJlbW92ZSBpbmhlcml0ZWQgcGVybWlzc2lvbnMgd2l0aGluIHRoZSBvcmdhbml6YXRpb24uIFRoZSByb2xlIHdpbGwgcmV0YWluIG9ubHkgaXRzIGRpcmVjdGx5IGFzc2lnbmVkIHBlcm1pc3Npb25zIGFmdGVyIHRoaXMgb3BlcmF0aW9uLiBUaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lLCBzbyBlbnN1cmUgdGhlIHJvbGUgaGFzIHN1ZmZpY2llbnQgZGlyZWN0IHBlcm1pc3Npb25zIGJlZm9yZSByZW1vdmluZyBpbmhlcml0YW5jZS5KiAEKAzIwMBKAAQp+T3JnYW5pemF0aW9uIHJvbGUgYmFzZSBpbmhlcml0YW5jZSByZWxhdGlvbnNoaXAgc3VjY2Vzc2Z1bGx5IHJlbW92ZWQuIFRoZSByb2xlIG5vdyBoYXMgb25seSBpdHMgZGlyZWN0bHkgYXNzaWduZWQgcGVybWlzc2lvbnMugrUYAhhE+tLkkwIJEgdQUkVWSUVXgtPkkwI3KjUvYXBpL3YxL29yZ2FuaXphdGlvbnMve29yZ19pZH0vcm9sZXMve3JvbGVfbmFtZX0vYmFzZRLPBwoQQ3JlYXRlUGVybWlzc2lvbhIqLnNjYWxla2l0LnYxLnJvbGVzLkNyZWF0ZVBlcm1pc3Npb25SZXF1ZXN0Gisuc2NhbGVraXQudjEucm9sZXMuQ3JlYXRlUGVybWlzc2lvblJlc3BvbnNlIuEGkkGwBgoLUGVybWlzc2lvbnMSFUNyZWF0ZSBuZXcgcGVybWlzc2lvbhrGBENyZWF0ZXMgYSBuZXcgcGVybWlzc2lvbiB0aGF0IHJlcHJlc2VudHMgYSBzcGVjaWZpYyBhY3Rpb24gdXNlcnMgY2FuIHBlcmZvcm0gd2l0aGluIHRoZSBlbnZpcm9ubWVudC4gVXNlIHRoaXMgZW5kcG9pbnQgdG8gZGVmaW5lIGdyYW51bGFyIGFjY2VzcyBjb250cm9scyBmb3IgeW91ciBSQkFDIHN5c3RlbS4gWW91IGNhbiBwcm92aWRlIGEgdW5pcXVlIHBlcm1pc3Npb24gbmFtZSBmb2xsb3dpbmcgdGhlIGZvcm1hdCAnYWN0aW9uOnJlc291cmNlJyAoZm9yIGV4YW1wbGUsICdyZWFkOmRvY3VtZW50cycsICd3cml0ZTp1c2VycycpIGFuZCBhbiBvcHRpb25hbCBkZXNjcmlwdGlvbiBleHBsYWluaW5nIHRoZSBwZXJtaXNzaW9uJ3MgcHVycG9zZS4gVGhlIHBlcm1pc3Npb24gbmFtZSBtdXN0IGJlIHVuaXF1ZSBhY3Jvc3MgdGhlIGVudmlyb25tZW50IGFuZCBmb2xsb3dzIGFscGhhbnVtZXJpYyBuYW1pbmcgY29udmVudGlvbnMgd2l0aCBjb2xvbnMgYW5kIHVuZGVyc2NvcmVzLiBSZXR1cm5zIHRoZSBjcmVhdGVkIHBlcm1pc3Npb24gb2JqZWN0IGluY2x1ZGluZyBzeXN0ZW0tZ2VuZXJhdGVkIElEIGFuZCB0aW1lc3RhbXBzLkrAAQoDMjAxErgBCoQBUGVybWlzc2lvbiBjcmVhdGVkIHN1Y2Nlc3NmdWxseS4gUmV0dXJucyB0aGUgY29tcGxldGUgcGVybWlzc2lvbiBvYmplY3Qgd2l0aCBzeXN0ZW0tZ2VuZXJhdGVkIElELCBuYW1lLCBkZXNjcmlwdGlvbiwgYW5kIHRpbWVzdGFtcHMuEi8KLRorLnNjYWxla2l0LnYxLnJvbGVzLkNyZWF0ZVBlcm1pc3Npb25SZXNwb25zZYK1GAIYRILT5JMCIToKcGVybWlzc2lvbiITL2FwaS92MS9wZXJtaXNzaW9ucxK9BwoNR2V0UGVybWlzc2lvbhInLnNjYWxla2l0LnYxLnJvbGVzLkdldFBlcm1pc3Npb25SZXF1ZXN0Giguc2NhbGVraXQudjEucm9sZXMuR2V0UGVybWlzc2lvblJlc3BvbnNlItgGkkGhBgoLUGVybWlzc2lvbnMSG1JldHJpZXZlIHBlcm1pc3Npb24gZGV0YWlscxqqBFJldHJpZXZlcyBjb21wbGV0ZSBpbmZvcm1hdGlvbiBmb3IgYSBzcGVjaWZpYyBwZXJtaXNzaW9uIGJ5IGl0cyB1bmlxdWUgbmFtZSBpZGVudGlmaWVyLiBVc2UgdGhpcyBlbmRwb2ludCB0byB2aWV3IHBlcm1pc3Npb24gZGV0YWlscyBpbmNsdWRpbmcgZGVzY3JpcHRpb24sIGNyZWF0aW9uIHRpbWUsIGFuZCBsYXN0IHVwZGF0ZSB0aW1lLiBQcm92aWRlIHRoZSBwZXJtaXNzaW9uIG5hbWUgaW4gdGhlIHBhdGggcGFyYW1ldGVyIGZvbGxvd2luZyB0aGUgZm9ybWF0ICdhY3Rpb246cmVzb3VyY2UnIChmb3IgZXhhbXBsZSwgJ3JlYWQ6ZG9jdW1lbnRzJykuIFRoaXMgb3BlcmF0aW9uIGlzIHVzZWZ1bCBmb3IgYXVkaXRpbmcgcGVybWlzc2lvbiBkZWZpbml0aW9ucywgdW5kZXJzdGFuZGluZyBwZXJtaXNzaW9uIHB1cnBvc2VzLCBvciB2ZXJpZnlpbmcgcGVybWlzc2lvbiBleGlzdGVuY2UgYmVmb3JlIGFzc2lnbm1lbnQuIFJldHVybnMgdGhlIGNvbXBsZXRlIHBlcm1pc3Npb24gb2JqZWN0IHdpdGggYWxsIG1ldGFkYXRhIGFuZCBzeXN0ZW0tZ2VuZXJhdGVkIHRpbWVzdGFtcHMuSscBCgMyMDASvwEKjgFTdWNjZXNzZnVsbHkgcmV0cmlldmVkIHBlcm1pc3Npb24gZGV0YWlscy4gUmV0dXJucyB0aGUgY29tcGxldGUgcGVybWlzc2lvbiBvYmplY3QgaW5jbHVkaW5nIG5hbWUsIGRlc2NyaXB0aW9uLCBjcmVhdGlvbiB0aW1lLCBhbmQgdXBkYXRlIHRpbWUuEiwKKhooLnNjYWxla2l0LnYxLnJvbGVzLkdldFBlcm1pc3Npb25SZXNwb25zZYK1GAIYRILT5JMCJxIlL2FwaS92MS9wZXJtaXNzaW9ucy97cGVybWlzc2lvbl9uYW1lfRKDCAoQVXBkYXRlUGVybWlzc2lvbhIqLnNjYWxla2l0LnYxLnJvbGVzLlVwZGF0ZVBlcm1pc3Npb25SZXF1ZXN0Gisuc2NhbGVraXQudjEucm9sZXMuVXBkYXRlUGVybWlzc2lvblJlc3BvbnNlIpUHkkHSBgoLUGVybWlzc2lvbnMSGVVwZGF0ZSBwZXJtaXNzaW9uIGRldGFpbHMa+QRNb2RpZmllcyBhbiBleGlzdGluZyBwZXJtaXNzaW9uJ3MgYXR0cmlidXRlcyBpbmNsdWRpbmcgZGVzY3JpcHRpb24gYW5kIG1ldGFkYXRhLiBVc2UgdGhpcyBlbmRwb2ludCB0byB1cGRhdGUgcGVybWlzc2lvbiBkZXNjcmlwdGlvbnMgb3IgY2xhcmlmeSBwZXJtaXNzaW9uIHB1cnBvc2VzIGFmdGVyIGNyZWF0aW9uLiBUaGUgcGVybWlzc2lvbiBpcyBpZGVudGlmaWVkIGJ5IGl0cyB1bmlxdWUgbmFtZSBpbiB0aGUgcGF0aCBwYXJhbWV0ZXIsIGFuZCBvbmx5IHRoZSBmaWVsZHMgeW91IHNwZWNpZnkgaW4gdGhlIHJlcXVlc3QgYm9keSB3aWxsIGJlIHVwZGF0ZWQuIE5vdGUgdGhhdCB0aGUgcGVybWlzc2lvbiBuYW1lIGl0c2VsZiBjYW5ub3QgYmUgY2hhbmdlZCBhcyBpdCBzZXJ2ZXMgYXMgdGhlIGltbXV0YWJsZSBpZGVudGlmaWVyLiBUaGlzIG9wZXJhdGlvbiBpcyB1c2VmdWwgZm9yIG1haW50YWluaW5nIGNsZWFyIGRvY3VtZW50YXRpb24gb2YgcGVybWlzc2lvbiBwdXJwb3NlcyBvciB1cGRhdGluZyBkZXNjcmlwdGlvbnMgdG8gcmVmbGVjdCBjaGFuZ2VzIGluIHN5c3RlbSBmdW5jdGlvbmFsaXR5LiBSZXR1cm5zIHRoZSB1cGRhdGVkIHBlcm1pc3Npb24gb2JqZWN0IHdpdGggbW9kaWZpZWQgdGltZXN0YW1wcy5KqwEKAzIwMBKjAQpwUGVybWlzc2lvbiB1cGRhdGVkIHN1Y2Nlc3NmdWxseS4gUmV0dXJucyB0aGUgbW9kaWZpZWQgcGVybWlzc2lvbiBvYmplY3Qgd2l0aCB1cGRhdGVkIGRlc2NyaXB0aW9uIGFuZCB0aW1lc3RhbXBzLhIvCi0aKy5zY2FsZWtpdC52MS5yb2xlcy5VcGRhdGVQZXJtaXNzaW9uUmVzcG9uc2WCtRgCGESC0+STAjM6CnBlcm1pc3Npb24aJS9hcGkvdjEvcGVybWlzc2lvbnMve3Blcm1pc3Npb25fbmFtZX0S8QcKD0xpc3RQZXJtaXNzaW9ucxIpLnNjYWxla2l0LnYxLnJvbGVzLkxpc3RQZXJtaXNzaW9uc1JlcXVlc3QaKi5zY2FsZWtpdC52MS5yb2xlcy5MaXN0UGVybWlzc2lvbnNSZXNwb25zZSKGB5JB4QYKC1Blcm1pc3Npb25zEhRMaXN0IGFsbCBwZXJtaXNzaW9ucxrrBFJldHJpZXZlcyBhIGNvbXByZWhlbnNpdmUsIHBhZ2luYXRlZCBsaXN0IG9mIGFsbCBwZXJtaXNzaW9ucyBhdmFpbGFibGUgd2l0aGluIHRoZSBlbnZpcm9ubWVudC4gVXNlIHRoaXMgZW5kcG9pbnQgdG8gdmlldyBhbGwgcGVybWlzc2lvbiBkZWZpbml0aW9ucyBmb3IgYXVkaXRpbmcsIHJvbGUgbWFuYWdlbWVudCwgb3IgdW5kZXJzdGFuZGluZyB0aGUgY29tcGxldGUgc2V0IG9mIGF2YWlsYWJsZSBhY2Nlc3MgY29udHJvbHMuIFRoZSByZXNwb25zZSBpbmNsdWRlcyBwYWdpbmF0aW9uIHRva2VucyB0byBuYXZpZ2F0ZSB0aHJvdWdoIGxhcmdlIHNldHMgb2YgcGVybWlzc2lvbnMgZWZmaWNpZW50bHkuIEVhY2ggcGVybWlzc2lvbiBvYmplY3QgY29udGFpbnMgdGhlIHBlcm1pc3Npb24gbmFtZSwgZGVzY3JpcHRpb24sIGNyZWF0aW9uIHRpbWUsIGFuZCBsYXN0IHVwZGF0ZSB0aW1lLiBUaGlzIG9wZXJhdGlvbiBpcyB1c2VmdWwgZm9yIGJ1aWxkaW5nIHBlcm1pc3Npb24gc2VsZWN0aW9uIGludGVyZmFjZXMsIGF1ZGl0aW5nIHBlcm1pc3Npb24gdXNhZ2UsIG9yIHVuZGVyc3RhbmRpbmcgdGhlIHNjb3BlIG9mIGF2YWlsYWJsZSBhY2Nlc3MgY29udHJvbHMgaW4geW91ciBSQkFDIHN5c3RlbS5KzQEKAzIwMBLFAQqSAVN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgdGhlIGxpc3Qgb2YgcGVybWlzc2lvbnMuIFJldHVybnMgYSBwYWdpbmF0ZWQgbGlzdCBvZiBwZXJtaXNzaW9uIG9iamVjdHMgd2l0aCBtZXRhZGF0YSBhbmQgcGFnaW5hdGlvbiB0b2tlbnMgZm9yIG5hdmlnYXRpb24uEi4KLBoqLnNjYWxla2l0LnYxLnJvbGVzLkxpc3RQZXJtaXNzaW9uc1Jlc3BvbnNlgrUYAhhEgtPkkwIVEhMvYXBpL3YxL3Blcm1pc3Npb25zEtAGChBEZWxldGVQZXJtaXNzaW9uEiouc2NhbGVraXQudjEucm9sZXMuRGVsZXRlUGVybWlzc2lvblJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHki9wWSQcAFCgtQZXJtaXNzaW9ucxIRRGVsZXRlIHBlcm1pc3Npb24a3QRQZXJtYW5lbnRseSByZW1vdmVzIGEgcGVybWlzc2lvbiBmcm9tIHRoZSBlbnZpcm9ubWVudCB1c2luZyBpdHMgdW5pcXVlIG5hbWUgaWRlbnRpZmllci4gVXNlIHRoaXMgZW5kcG9pbnQgd2hlbiB5b3UgbmVlZCB0byBjbGVhbiB1cCB1bnVzZWQgcGVybWlzc2lvbnMgb3IgcmVtb3ZlIGFjY2VzcyBjb250cm9scyB0aGF0IGFyZSBubyBsb25nZXIgcmVsZXZhbnQuIFRoZSBwZXJtaXNzaW9uIGlzIGlkZW50aWZpZWQgYnkgaXRzIG5hbWUgaW4gdGhlIHBhdGggcGFyYW1ldGVyIGZvbGxvd2luZyB0aGUgZm9ybWF0ICdhY3Rpb246cmVzb3VyY2UnLiBUaGlzIG9wZXJhdGlvbiBjYW5ub3QgYmUgdW5kb25lLCBzbyBlbnN1cmUgbm8gYWN0aXZlIHJvbGVzIGRlcGVuZCBvbiB0aGUgcGVybWlzc2lvbiBiZWZvcmUgZGVsZXRpb24uIElmIHRoZSBwZXJtaXNzaW9uIGlzIGN1cnJlbnRseSBhc3NpZ25lZCB0byBhbnkgcm9sZXMsIHlvdSBtYXkgbmVlZCB0byByZW1vdmUgdGhvc2UgYXNzaWdubWVudHMgZmlyc3Qgb3IgdXBkYXRlIHRoZSByb2xlcyB0byB1c2UgYWx0ZXJuYXRpdmUgcGVybWlzc2lvbnMuIFJldHVybnMgbm8gY29udGVudCBvbiBzdWNjZXNzZnVsIGRlbGV0aW9uLko+CgMyMDASNwo1UGVybWlzc2lvbiBzdWNjZXNzZnVsbHkgZGVsZXRlZC4gTm8gY29udGVudCByZXR1cm5lZC6CtRgCGESC0+STAicqJS9hcGkvdjEvcGVybWlzc2lvbnMve3Blcm1pc3Npb25fbmFtZX0SgAkKE0xpc3RSb2xlUGVybWlzc2lvbnMSLS5zY2FsZWtpdC52MS5yb2xlcy5MaXN0Um9sZVBlcm1pc3Npb25zUmVxdWVzdBouLnNjYWxla2l0LnYxLnJvbGVzLkxpc3RSb2xlUGVybWlzc2lvbnNSZXNwb25zZSKJCJJB0gcKBVJvbGVzEhlMaXN0IHBlcm1pc3Npb25zIGZvciByb2xlGtcFUmV0cmlldmVzIGFsbCBwZXJtaXNzaW9ucyBkaXJlY3RseSBhc3NpZ25lZCB0byB0aGUgc3BlY2lmaWVkIHJvbGUsIGV4Y2x1ZGluZyBwZXJtaXNzaW9ucyBpbmhlcml0ZWQgZnJvbSBiYXNlIHJvbGVzLiBVc2UgdGhpcyBlbmRwb2ludCB0byB2aWV3IHRoZSBleHBsaWNpdCBwZXJtaXNzaW9uIGFzc2lnbm1lbnRzIGZvciBhIHJvbGUsIHdoaWNoIGlzIHVzZWZ1bCBmb3IgdW5kZXJzdGFuZGluZyBkaXJlY3Qgcm9sZSBjYXBhYmlsaXRpZXMsIGF1ZGl0aW5nIHBlcm1pc3Npb24gYXNzaWdubWVudHMsIG9yIG1hbmFnaW5nIHJvbGUtcGVybWlzc2lvbiByZWxhdGlvbnNoaXBzLiBQcm92aWRlIHRoZSByb2xlIG5hbWUgYXMgYSBwYXRoIHBhcmFtZXRlciwgYW5kIHRoZSByZXNwb25zZSB3aWxsIGluY2x1ZGUgb25seSB0aGUgcGVybWlzc2lvbnMgdGhhdCBhcmUgZGlyZWN0bHkgYXNzaWduZWQgdG8gdGhhdCByb2xlLiBUaGlzIG9wZXJhdGlvbiBkb2VzIG5vdCBpbmNsdWRlIGluaGVyaXRlZCBwZXJtaXNzaW9ucyBmcm9tIHJvbGUgaGllcmFyY2hpZXMgLSB1c2UgTGlzdEVmZmVjdGl2ZVJvbGVQZXJtaXNzaW9ucyB0byBzZWUgdGhlIGNvbXBsZXRlIHNldCBvZiBwZXJtaXNzaW9ucyBpbmNsdWRpbmcgaW5oZXJpdGFuY2UuIFJldHVybnMgYSBsaXN0IG9mIHBlcm1pc3Npb24gb2JqZWN0cyB3aXRoIHRoZWlyIG5hbWVzLCBkZXNjcmlwdGlvbnMsIGFuZCBhc3NpZ25tZW50IG1ldGFkYXRhLkrTAQoDMjAwEssBCpQBU3VjY2Vzc2Z1bGx5IHJldHJpZXZlZCByb2xlIHBlcm1pc3Npb25zLiBSZXR1cm5zIGEgbGlzdCBvZiBhbGwgcGVybWlzc2lvbnMgZGlyZWN0bHkgYXNzaWduZWQgdG8gdGhlIHNwZWNpZmllZCByb2xlLCBleGNsdWRpbmcgaW5oZXJpdGVkIHBlcm1pc3Npb25zLhIyCjAaLi5zY2FsZWtpdC52MS5yb2xlcy5MaXN0Um9sZVBlcm1pc3Npb25zUmVzcG9uc2WCtRgCGESC0+STAicSJS9hcGkvdjEvcm9sZXMve3JvbGVfbmFtZX0vcGVybWlzc2lvbnMS+ggKFEFkZFBlcm1pc3Npb25zVG9Sb2xlEi4uc2NhbGVraXQudjEucm9sZXMuQWRkUGVybWlzc2lvbnNUb1JvbGVSZXF1ZXN0Gi8uc2NhbGVraXQudjEucm9sZXMuQWRkUGVybWlzc2lvbnNUb1JvbGVSZXNwb25zZSKACJJBxgcKBVJvbGVzEhdBZGQgcGVybWlzc2lvbnMgdG8gcm9sZRq9BUFkZHMgb25lIG9yIG1vcmUgcGVybWlzc2lvbnMgdG8gdGhlIHNwZWNpZmllZCByb2xlIHdoaWxlIHByZXNlcnZpbmcgZXhpc3RpbmcgcGVybWlzc2lvbiBhc3NpZ25tZW50cy4gVXNlIHRoaXMgZW5kcG9pbnQgdG8gZ3JhbnQgYWRkaXRpb25hbCBjYXBhYmlsaXRpZXMgdG8gYSByb2xlIHdpdGhvdXQgYWZmZWN0aW5nIGl0cyBjdXJyZW50IHBlcm1pc3Npb24gc2V0LiBQcm92aWRlIHRoZSByb2xlIG5hbWUgYXMgYSBwYXRoIHBhcmFtZXRlciBhbmQgYSBsaXN0IG9mIHBlcm1pc3Npb24gbmFtZXMgaW4gdGhlIHJlcXVlc3QgYm9keS4gVGhlIHN5c3RlbSB3aWxsIHZhbGlkYXRlIHRoYXQgYWxsIHNwZWNpZmllZCBwZXJtaXNzaW9ucyBleGlzdCBpbiB0aGUgZW52aXJvbm1lbnQgYW5kIGFkZCB0aGVtIHRvIHRoZSByb2xlLiBFeGlzdGluZyBwZXJtaXNzaW9uIGFzc2lnbm1lbnRzIHJlbWFpbiB1bmNoYW5nZWQsIG1ha2luZyB0aGlzIG9wZXJhdGlvbiBzYWZlIGZvciBpbmNyZW1lbnRhbCBwZXJtaXNzaW9uIG1hbmFnZW1lbnQuIFRoaXMgaXMgdXNlZnVsIGZvciBncmFkdWFsbHkgZXhwYW5kaW5nIHJvbGUgY2FwYWJpbGl0aWVzIG9yIGFkZGluZyBuZXcgcGVybWlzc2lvbnMgYXMgeW91ciBzeXN0ZW0gZXZvbHZlcy4gUmV0dXJucyB0aGUgdXBkYXRlZCBsaXN0IG9mIGFsbCBwZXJtaXNzaW9ucyBub3cgYXNzaWduZWQgdG8gdGhlIHJvbGUuSuMBCgMyMDAS2wEKowFQZXJtaXNzaW9ucyBhZGRlZCB0byByb2xlIHN1Y2Nlc3NmdWxseS4gUmV0dXJucyB0aGUgY29tcGxldGUgbGlzdCBvZiBhbGwgcGVybWlzc2lvbnMgbm93IGFzc2lnbmVkIHRvIHRoZSByb2xlLCBpbmNsdWRpbmcgYm90aCBleGlzdGluZyBhbmQgbmV3bHkgYWRkZWQgcGVybWlzc2lvbnMuEjMKMRovLnNjYWxla2l0LnYxLnJvbGVzLkFkZFBlcm1pc3Npb25zVG9Sb2xlUmVzcG9uc2WCtRgCGESC0+STAio6ASoiJS9hcGkvdjEvcm9sZXMve3JvbGVfbmFtZX0vcGVybWlzc2lvbnMStwcKGFJlbW92ZVBlcm1pc3Npb25Gcm9tUm9sZRIyLnNjYWxla2l0LnYxLnJvbGVzLlJlbW92ZVBlcm1pc3Npb25Gcm9tUm9sZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkizgaSQYUGCgVSb2xlcxIbUmVtb3ZlIHBlcm1pc3Npb24gZnJvbSByb2xlGpQFUmVtb3ZlcyBhIHNwZWNpZmljIHBlcm1pc3Npb24gZnJvbSB0aGUgc3BlY2lmaWVkIHJvbGUsIHJldm9raW5nIHRoYXQgY2FwYWJpbGl0eSBmcm9tIGFsbCB1c2VycyBhc3NpZ25lZCB0byB0aGUgcm9sZS4gVXNlIHRoaXMgZW5kcG9pbnQgdG8gcmVzdHJpY3Qgcm9sZSBjYXBhYmlsaXRpZXMgb3IgcmVtb3ZlIHVubmVjZXNzYXJ5IHBlcm1pc3Npb25zLiBQcm92aWRlIGJvdGggdGhlIHJvbGUgbmFtZSBhbmQgcGVybWlzc2lvbiBuYW1lIGFzIHBhdGggcGFyYW1ldGVycy4gVGhpcyBvcGVyYXRpb24gb25seSBhZmZlY3RzIHRoZSBkaXJlY3QgcGVybWlzc2lvbiBhc3NpZ25tZW50IGFuZCBkb2VzIG5vdCBpbXBhY3QgcGVybWlzc2lvbnMgaW5oZXJpdGVkIGZyb20gYmFzZSByb2xlcy4gSWYgdGhlIHBlcm1pc3Npb24gaXMgaW5oZXJpdGVkIHRocm91Z2ggcm9sZSBoaWVyYXJjaHksIHlvdSBtYXkgbmVlZCB0byBtb2RpZnkgdGhlIGJhc2Ugcm9sZSBpbnN0ZWFkLiBUaGlzIGlzIHVzZWZ1bCBmb3IgZmluZS10dW5pbmcgcm9sZSBwZXJtaXNzaW9ucywgaW1wbGVtZW50aW5nIGxlYXN0LXByaXZpbGVnZSBhY2Nlc3MgY29udHJvbHMsIG9yIHJlbW92aW5nIGRlcHJlY2F0ZWQgcGVybWlzc2lvbnMuIFJldHVybnMgbm8gY29udGVudCBvbiBzdWNjZXNzZnVsIHJlbW92YWwuSkgKAzIwMBJBCj9QZXJtaXNzaW9uIHJlbW92ZWQgZnJvbSByb2xlIHN1Y2Nlc3NmdWxseS4gTm8gY29udGVudCByZXR1cm5lZC6CtRgCGESC0+STAjkqNy9hcGkvdjEvcm9sZXMve3JvbGVfbmFtZX0vcGVybWlzc2lvbnMve3Blcm1pc3Npb25fbmFtZX0S3wkKHExpc3RFZmZlY3RpdmVSb2xlUGVybWlzc2lvbnMSNi5zY2FsZWtpdC52MS5yb2xlcy5MaXN0RWZmZWN0aXZlUm9sZVBlcm1pc3Npb25zUmVxdWVzdBo3LnNjYWxla2l0LnYxLnJvbGVzLkxpc3RFZmZlY3RpdmVSb2xlUGVybWlzc2lvbnNSZXNwb25zZSLNCJJBkggKBVJvbGVzEiNMaXN0IGVmZmVjdGl2ZSBwZXJtaXNzaW9ucyBmb3Igcm9sZRrZBVJldHJpZXZlcyB0aGUgY29tcGxldGUgc2V0IG9mIGVmZmVjdGl2ZSBwZXJtaXNzaW9ucyBmb3IgYSByb2xlLCBpbmNsdWRpbmcgYm90aCBkaXJlY3RseSBhc3NpZ25lZCBwZXJtaXNzaW9ucyBhbmQgcGVybWlzc2lvbnMgaW5oZXJpdGVkIGZyb20gYmFzZSByb2xlcyB0aHJvdWdoIHRoZSByb2xlIGhpZXJhcmNoeS4gVXNlIHRoaXMgZW5kcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBzY29wZSBvZiBjYXBhYmlsaXRpZXMgYXZhaWxhYmxlIHRvIHVzZXJzIGFzc2lnbmVkIHRvIGEgc3BlY2lmaWMgcm9sZS4gUHJvdmlkZSB0aGUgcm9sZSBuYW1lIGFzIGEgcGF0aCBwYXJhbWV0ZXIsIGFuZCB0aGUgcmVzcG9uc2Ugd2lsbCBpbmNsdWRlIGFsbCBwZXJtaXNzaW9ucyB0aGF0IGFwcGx5IHRvIHRoZSByb2xlLCBhY2NvdW50aW5nIGZvciBpbmhlcml0YW5jZSByZWxhdGlvbnNoaXBzLiBUaGlzIG9wZXJhdGlvbiBpcyBlc3NlbnRpYWwgZm9yIGF1ZGl0aW5nIHJvbGUgY2FwYWJpbGl0aWVzLCB1bmRlcnN0YW5kaW5nIHBlcm1pc3Npb24gaW5oZXJpdGFuY2UsIG9yIHZlcmlmeWluZyB0aGUgY29tcGxldGUgYWNjZXNzIHNjb3BlIGJlZm9yZSByb2xlIGFzc2lnbm1lbnQuIFJldHVybnMgYSBjb21wcmVoZW5zaXZlIGxpc3Qgb2YgcGVybWlzc2lvbiBuYW1lcyByZXByZXNlbnRpbmcgdGhlIGZ1bGwgc2V0IG9mIGVmZmVjdGl2ZSBwZXJtaXNzaW9ucyBmb3IgdGhlIHNwZWNpZmllZCByb2xlLkqHAgoDMjAwEv8BCr8BU3VjY2Vzc2Z1bGx5IHJldHJpZXZlZCBlZmZlY3RpdmUgcGVybWlzc2lvbnMuIFJldHVybnMgdGhlIGNvbXBsZXRlIGxpc3Qgb2YgYWxsIHBlcm1pc3Npb25zIHRoYXQgYXBwbHkgdG8gdGhlIHJvbGUsIGluY2x1ZGluZyBib3RoIGRpcmVjdCBhc3NpZ25tZW50cyBhbmQgaW5oZXJpdGVkIHBlcm1pc3Npb25zIGZyb20gYmFzZSByb2xlcy4SOwo5Gjcuc2NhbGVraXQudjEucm9sZXMuTGlzdEVmZmVjdGl2ZVJvbGVQZXJtaXNzaW9uc1Jlc3BvbnNlgrUYAhhEgtPkkwIrEikvYXBpL3YxL3JvbGVzL3tyb2xlX25hbWV9L3Blcm1pc3Npb25zOmFsbBriApJB3gIKBVJvbGVzEtQCUm9sZS1iYXNlZCBhY2Nlc3MgY29udHJvbCAoUkJBQykgZm9yIGRlZmluaW5nIGFuZCBtYW5hZ2luZyBwZXJtaXNzaW9ucyBpbiBhbiBlbnZpcm9ubWVudC4gQ3JlYXRlIGFuZCB1cGRhdGUgY3VzdG9tIHJvbGVzIHdpdGggZXhwbGljaXQgcGVybWlzc2lvbnMsIG1vZGVsIHJvbGUgaGllcmFyY2hpZXMgdGhyb3VnaCBpbmhlcml0YW5jZSwgdmlldyBkZXBlbmRlbnQgcm9sZXMsIG1hbmFnZSByb2xlLXBlcm1pc3Npb24gYXNzaWdubWVudHMsIGFuZCBsaXN0IHJvbGVzIGFuZCBwZXJtaXNzaW9ucy4gQWxzbyBwcm92aWRlcyBhIHV0aWxpdHkgdG8gY291bnQgdXNlcnMgYXNzaWduZWQgdG8gYSByb2xlLkIxWi9naXRodWIuY29tL3NjYWxla2l0LWluYy9zY2FsZWtpdC9wa2cvZ3JwYy9yb2xlc2IGcHJvdG8z", [file_buf_validate_validate, file_google_api_annotations, file_google_api_field_behavior, file_google_api_visibility, file_google_protobuf_empty, file_google_protobuf_timestamp, file_protoc_gen_openapiv2_options_annotations, file_scalekit_v1_options_options]);
22
-
23
- /**
24
- * @generated from message scalekit.v1.roles.Role
25
- */
26
- export type Role = Message<"scalekit.v1.roles.Role"> & {
27
- /**
28
- * @generated from field: string id = 1;
29
- */
30
- id: string;
31
-
32
- /**
33
- * @generated from field: string name = 2;
34
- */
35
- name: string;
36
-
37
- /**
38
- * @generated from field: string display_name = 3;
39
- */
40
- displayName: string;
41
-
42
- /**
43
- * @generated from field: string description = 4;
44
- */
45
- description: string;
46
-
47
- /**
48
- * @generated from field: bool default_creator = 6;
49
- */
50
- defaultCreator: boolean;
51
-
52
- /**
53
- * @generated from field: bool default_member = 7;
54
- */
55
- defaultMember: boolean;
56
-
57
- /**
58
- * @generated from field: optional string extends = 8;
59
- */
60
- extends?: string;
61
-
62
- /**
63
- * @generated from field: repeated scalekit.v1.roles.RolePermission permissions = 9;
64
- */
65
- permissions: RolePermission[];
66
-
67
- /**
68
- * @generated from field: int32 dependent_roles_count = 10;
69
- */
70
- dependentRolesCount: number;
71
-
72
- /**
73
- * @generated from field: bool is_org_role = 11;
74
- */
75
- isOrgRole: boolean;
76
- };
77
-
78
- /**
79
- * Describes the message scalekit.v1.roles.Role.
80
- * Use `create(RoleSchema)` to create a new message.
81
- */
82
- export const RoleSchema: GenMessage<Role> = /*@__PURE__*/
83
- messageDesc(file_scalekit_v1_roles_roles, 0);
84
-
85
- /**
86
- * @generated from message scalekit.v1.roles.CreateRole
87
- */
88
- export type CreateRole = Message<"scalekit.v1.roles.CreateRole"> & {
89
- /**
90
- * @generated from field: string name = 2;
91
- */
92
- name: string;
93
-
94
- /**
95
- * @generated from field: string display_name = 3;
96
- */
97
- displayName: string;
98
-
99
- /**
100
- * @generated from field: optional string description = 4;
101
- */
102
- description?: string;
103
-
104
- /**
105
- * @generated from field: optional string extends = 8;
106
- */
107
- extends?: string;
108
-
109
- /**
110
- * @generated from field: repeated string permissions = 9;
111
- */
112
- permissions: string[];
113
- };
114
-
115
- /**
116
- * Describes the message scalekit.v1.roles.CreateRole.
117
- * Use `create(CreateRoleSchema)` to create a new message.
118
- */
119
- export const CreateRoleSchema: GenMessage<CreateRole> = /*@__PURE__*/
120
- messageDesc(file_scalekit_v1_roles_roles, 1);
121
-
122
- /**
123
- * @generated from message scalekit.v1.roles.CreateOrganizationRole
124
- */
125
- export type CreateOrganizationRole = Message<"scalekit.v1.roles.CreateOrganizationRole"> & {
126
- /**
127
- * @generated from field: string name = 2;
128
- */
129
- name: string;
130
-
131
- /**
132
- * @generated from field: string display_name = 3;
133
- */
134
- displayName: string;
135
-
136
- /**
137
- * @generated from field: optional string description = 4;
138
- */
139
- description?: string;
140
-
141
- /**
142
- * @generated from field: optional string extends = 8;
143
- */
144
- extends?: string;
145
-
146
- /**
147
- * @generated from field: repeated string permissions = 9;
148
- */
149
- permissions: string[];
150
- };
151
-
152
- /**
153
- * Describes the message scalekit.v1.roles.CreateOrganizationRole.
154
- * Use `create(CreateOrganizationRoleSchema)` to create a new message.
155
- */
156
- export const CreateOrganizationRoleSchema: GenMessage<CreateOrganizationRole> = /*@__PURE__*/
157
- messageDesc(file_scalekit_v1_roles_roles, 2);
158
-
159
- /**
160
- * @generated from message scalekit.v1.roles.CreateRoleRequest
161
- */
162
- export type CreateRoleRequest = Message<"scalekit.v1.roles.CreateRoleRequest"> & {
163
- /**
164
- * @generated from field: scalekit.v1.roles.CreateRole role = 2;
165
- */
166
- role?: CreateRole;
167
- };
168
-
169
- /**
170
- * Describes the message scalekit.v1.roles.CreateRoleRequest.
171
- * Use `create(CreateRoleRequestSchema)` to create a new message.
172
- */
173
- export const CreateRoleRequestSchema: GenMessage<CreateRoleRequest> = /*@__PURE__*/
174
- messageDesc(file_scalekit_v1_roles_roles, 3);
175
-
176
- /**
177
- * @generated from message scalekit.v1.roles.CreateRoleResponse
178
- */
179
- export type CreateRoleResponse = Message<"scalekit.v1.roles.CreateRoleResponse"> & {
180
- /**
181
- * @generated from field: scalekit.v1.roles.Role role = 1;
182
- */
183
- role?: Role;
184
- };
185
-
186
- /**
187
- * Describes the message scalekit.v1.roles.CreateRoleResponse.
188
- * Use `create(CreateRoleResponseSchema)` to create a new message.
189
- */
190
- export const CreateRoleResponseSchema: GenMessage<CreateRoleResponse> = /*@__PURE__*/
191
- messageDesc(file_scalekit_v1_roles_roles, 4);
192
-
193
- /**
194
- * @generated from message scalekit.v1.roles.GetRoleRequest
195
- */
196
- export type GetRoleRequest = Message<"scalekit.v1.roles.GetRoleRequest"> & {
197
- /**
198
- * @generated from field: string role_name = 2;
199
- */
200
- roleName: string;
201
-
202
- /**
203
- * @generated from field: optional string include = 3;
204
- */
205
- include?: string;
206
- };
207
-
208
- /**
209
- * Describes the message scalekit.v1.roles.GetRoleRequest.
210
- * Use `create(GetRoleRequestSchema)` to create a new message.
211
- */
212
- export const GetRoleRequestSchema: GenMessage<GetRoleRequest> = /*@__PURE__*/
213
- messageDesc(file_scalekit_v1_roles_roles, 5);
214
-
215
- /**
216
- * @generated from message scalekit.v1.roles.GetRoleResponse
217
- */
218
- export type GetRoleResponse = Message<"scalekit.v1.roles.GetRoleResponse"> & {
219
- /**
220
- * @generated from field: scalekit.v1.roles.Role role = 1;
221
- */
222
- role?: Role;
223
- };
224
-
225
- /**
226
- * Describes the message scalekit.v1.roles.GetRoleResponse.
227
- * Use `create(GetRoleResponseSchema)` to create a new message.
228
- */
229
- export const GetRoleResponseSchema: GenMessage<GetRoleResponse> = /*@__PURE__*/
230
- messageDesc(file_scalekit_v1_roles_roles, 6);
231
-
232
- /**
233
- * @generated from message scalekit.v1.roles.ListRolesRequest
234
- */
235
- export type ListRolesRequest = Message<"scalekit.v1.roles.ListRolesRequest"> & {
236
- /**
237
- * @generated from field: optional string include = 2;
238
- */
239
- include?: string;
240
- };
241
-
242
- /**
243
- * Describes the message scalekit.v1.roles.ListRolesRequest.
244
- * Use `create(ListRolesRequestSchema)` to create a new message.
245
- */
246
- export const ListRolesRequestSchema: GenMessage<ListRolesRequest> = /*@__PURE__*/
247
- messageDesc(file_scalekit_v1_roles_roles, 7);
248
-
249
- /**
250
- * @generated from message scalekit.v1.roles.ListRolesResponse
251
- */
252
- export type ListRolesResponse = Message<"scalekit.v1.roles.ListRolesResponse"> & {
253
- /**
254
- * @generated from field: repeated scalekit.v1.roles.Role roles = 1;
255
- */
256
- roles: Role[];
257
- };
258
-
259
- /**
260
- * Describes the message scalekit.v1.roles.ListRolesResponse.
261
- * Use `create(ListRolesResponseSchema)` to create a new message.
262
- */
263
- export const ListRolesResponseSchema: GenMessage<ListRolesResponse> = /*@__PURE__*/
264
- messageDesc(file_scalekit_v1_roles_roles, 8);
265
-
266
- /**
267
- * @generated from message scalekit.v1.roles.UpdateRole
268
- */
269
- export type UpdateRole = Message<"scalekit.v1.roles.UpdateRole"> & {
270
- /**
271
- * @generated from field: optional string display_name = 1;
272
- */
273
- displayName?: string;
274
-
275
- /**
276
- * @generated from field: optional string description = 2;
277
- */
278
- description?: string;
279
-
280
- /**
281
- * @generated from field: optional string extends = 6;
282
- */
283
- extends?: string;
284
-
285
- /**
286
- * @generated from field: repeated string permissions = 7;
287
- */
288
- permissions: string[];
289
- };
290
-
291
- /**
292
- * Describes the message scalekit.v1.roles.UpdateRole.
293
- * Use `create(UpdateRoleSchema)` to create a new message.
294
- */
295
- export const UpdateRoleSchema: GenMessage<UpdateRole> = /*@__PURE__*/
296
- messageDesc(file_scalekit_v1_roles_roles, 9);
297
-
298
- /**
299
- * @generated from message scalekit.v1.roles.UpdateRoleRequest
300
- */
301
- export type UpdateRoleRequest = Message<"scalekit.v1.roles.UpdateRoleRequest"> & {
302
- /**
303
- * @generated from field: string role_name = 2;
304
- */
305
- roleName: string;
306
-
307
- /**
308
- * @generated from field: scalekit.v1.roles.UpdateRole role = 3;
309
- */
310
- role?: UpdateRole;
311
- };
312
-
313
- /**
314
- * Describes the message scalekit.v1.roles.UpdateRoleRequest.
315
- * Use `create(UpdateRoleRequestSchema)` to create a new message.
316
- */
317
- export const UpdateRoleRequestSchema: GenMessage<UpdateRoleRequest> = /*@__PURE__*/
318
- messageDesc(file_scalekit_v1_roles_roles, 10);
319
-
320
- /**
321
- * @generated from message scalekit.v1.roles.UpdateRoleResponse
322
- */
323
- export type UpdateRoleResponse = Message<"scalekit.v1.roles.UpdateRoleResponse"> & {
324
- /**
325
- * @generated from field: scalekit.v1.roles.Role role = 1;
326
- */
327
- role?: Role;
328
- };
329
-
330
- /**
331
- * Describes the message scalekit.v1.roles.UpdateRoleResponse.
332
- * Use `create(UpdateRoleResponseSchema)` to create a new message.
333
- */
334
- export const UpdateRoleResponseSchema: GenMessage<UpdateRoleResponse> = /*@__PURE__*/
335
- messageDesc(file_scalekit_v1_roles_roles, 11);
336
-
337
- /**
338
- * @generated from message scalekit.v1.roles.DeleteRoleRequest
339
- */
340
- export type DeleteRoleRequest = Message<"scalekit.v1.roles.DeleteRoleRequest"> & {
341
- /**
342
- * @generated from field: string role_name = 2;
343
- */
344
- roleName: string;
345
-
346
- /**
347
- * @generated from field: optional string reassign_role_id = 3 [deprecated = true];
348
- * @deprecated
349
- */
350
- reassignRoleId?: string;
351
-
352
- /**
353
- * @generated from field: optional string reassign_role_name = 4;
354
- */
355
- reassignRoleName?: string;
356
- };
357
-
358
- /**
359
- * Describes the message scalekit.v1.roles.DeleteRoleRequest.
360
- * Use `create(DeleteRoleRequestSchema)` to create a new message.
361
- */
362
- export const DeleteRoleRequestSchema: GenMessage<DeleteRoleRequest> = /*@__PURE__*/
363
- messageDesc(file_scalekit_v1_roles_roles, 12);
364
-
365
- /**
366
- * @generated from message scalekit.v1.roles.CreateOrganizationRoleRequest
367
- */
368
- export type CreateOrganizationRoleRequest = Message<"scalekit.v1.roles.CreateOrganizationRoleRequest"> & {
369
- /**
370
- * @generated from field: string org_id = 1;
371
- */
372
- orgId: string;
373
-
374
- /**
375
- * @generated from field: scalekit.v1.roles.CreateOrganizationRole role = 2;
376
- */
377
- role?: CreateOrganizationRole;
378
- };
379
-
380
- /**
381
- * Describes the message scalekit.v1.roles.CreateOrganizationRoleRequest.
382
- * Use `create(CreateOrganizationRoleRequestSchema)` to create a new message.
383
- */
384
- export const CreateOrganizationRoleRequestSchema: GenMessage<CreateOrganizationRoleRequest> = /*@__PURE__*/
385
- messageDesc(file_scalekit_v1_roles_roles, 13);
386
-
387
- /**
388
- * @generated from message scalekit.v1.roles.CreateOrganizationRoleResponse
389
- */
390
- export type CreateOrganizationRoleResponse = Message<"scalekit.v1.roles.CreateOrganizationRoleResponse"> & {
391
- /**
392
- * @generated from field: scalekit.v1.roles.Role role = 1;
393
- */
394
- role?: Role;
395
- };
396
-
397
- /**
398
- * Describes the message scalekit.v1.roles.CreateOrganizationRoleResponse.
399
- * Use `create(CreateOrganizationRoleResponseSchema)` to create a new message.
400
- */
401
- export const CreateOrganizationRoleResponseSchema: GenMessage<CreateOrganizationRoleResponse> = /*@__PURE__*/
402
- messageDesc(file_scalekit_v1_roles_roles, 14);
403
-
404
- /**
405
- * @generated from message scalekit.v1.roles.GetOrganizationRoleRequest
406
- */
407
- export type GetOrganizationRoleRequest = Message<"scalekit.v1.roles.GetOrganizationRoleRequest"> & {
408
- /**
409
- * @generated from field: string org_id = 1;
410
- */
411
- orgId: string;
412
-
413
- /**
414
- * @generated from field: string role_name = 2;
415
- */
416
- roleName: string;
417
-
418
- /**
419
- * @generated from field: optional string include = 3;
420
- */
421
- include?: string;
422
- };
423
-
424
- /**
425
- * Describes the message scalekit.v1.roles.GetOrganizationRoleRequest.
426
- * Use `create(GetOrganizationRoleRequestSchema)` to create a new message.
427
- */
428
- export const GetOrganizationRoleRequestSchema: GenMessage<GetOrganizationRoleRequest> = /*@__PURE__*/
429
- messageDesc(file_scalekit_v1_roles_roles, 15);
430
-
431
- /**
432
- * @generated from message scalekit.v1.roles.GetOrganizationRoleResponse
433
- */
434
- export type GetOrganizationRoleResponse = Message<"scalekit.v1.roles.GetOrganizationRoleResponse"> & {
435
- /**
436
- * @generated from field: scalekit.v1.roles.Role role = 1;
437
- */
438
- role?: Role;
439
- };
440
-
441
- /**
442
- * Describes the message scalekit.v1.roles.GetOrganizationRoleResponse.
443
- * Use `create(GetOrganizationRoleResponseSchema)` to create a new message.
444
- */
445
- export const GetOrganizationRoleResponseSchema: GenMessage<GetOrganizationRoleResponse> = /*@__PURE__*/
446
- messageDesc(file_scalekit_v1_roles_roles, 16);
447
-
448
- /**
449
- * @generated from message scalekit.v1.roles.ListOrganizationRolesRequest
450
- */
451
- export type ListOrganizationRolesRequest = Message<"scalekit.v1.roles.ListOrganizationRolesRequest"> & {
452
- /**
453
- * @generated from field: string org_id = 1;
454
- */
455
- orgId: string;
456
-
457
- /**
458
- * @generated from field: optional string include = 2;
459
- */
460
- include?: string;
461
- };
462
-
463
- /**
464
- * Describes the message scalekit.v1.roles.ListOrganizationRolesRequest.
465
- * Use `create(ListOrganizationRolesRequestSchema)` to create a new message.
466
- */
467
- export const ListOrganizationRolesRequestSchema: GenMessage<ListOrganizationRolesRequest> = /*@__PURE__*/
468
- messageDesc(file_scalekit_v1_roles_roles, 17);
469
-
470
- /**
471
- * @generated from message scalekit.v1.roles.ListOrganizationRolesResponse
472
- */
473
- export type ListOrganizationRolesResponse = Message<"scalekit.v1.roles.ListOrganizationRolesResponse"> & {
474
- /**
475
- * @generated from field: repeated scalekit.v1.roles.Role roles = 1;
476
- */
477
- roles: Role[];
478
- };
479
-
480
- /**
481
- * Describes the message scalekit.v1.roles.ListOrganizationRolesResponse.
482
- * Use `create(ListOrganizationRolesResponseSchema)` to create a new message.
483
- */
484
- export const ListOrganizationRolesResponseSchema: GenMessage<ListOrganizationRolesResponse> = /*@__PURE__*/
485
- messageDesc(file_scalekit_v1_roles_roles, 18);
486
-
487
- /**
488
- * @generated from message scalekit.v1.roles.UpdateOrganizationRoleRequest
489
- */
490
- export type UpdateOrganizationRoleRequest = Message<"scalekit.v1.roles.UpdateOrganizationRoleRequest"> & {
491
- /**
492
- * @generated from field: string org_id = 1;
493
- */
494
- orgId: string;
495
-
496
- /**
497
- * @generated from field: string role_name = 2;
498
- */
499
- roleName: string;
500
-
501
- /**
502
- * @generated from field: scalekit.v1.roles.UpdateRole role = 3;
503
- */
504
- role?: UpdateRole;
505
- };
506
-
507
- /**
508
- * Describes the message scalekit.v1.roles.UpdateOrganizationRoleRequest.
509
- * Use `create(UpdateOrganizationRoleRequestSchema)` to create a new message.
510
- */
511
- export const UpdateOrganizationRoleRequestSchema: GenMessage<UpdateOrganizationRoleRequest> = /*@__PURE__*/
512
- messageDesc(file_scalekit_v1_roles_roles, 19);
513
-
514
- /**
515
- * @generated from message scalekit.v1.roles.UpdateOrganizationRoleResponse
516
- */
517
- export type UpdateOrganizationRoleResponse = Message<"scalekit.v1.roles.UpdateOrganizationRoleResponse"> & {
518
- /**
519
- * @generated from field: scalekit.v1.roles.Role role = 1;
520
- */
521
- role?: Role;
522
- };
523
-
524
- /**
525
- * Describes the message scalekit.v1.roles.UpdateOrganizationRoleResponse.
526
- * Use `create(UpdateOrganizationRoleResponseSchema)` to create a new message.
527
- */
528
- export const UpdateOrganizationRoleResponseSchema: GenMessage<UpdateOrganizationRoleResponse> = /*@__PURE__*/
529
- messageDesc(file_scalekit_v1_roles_roles, 20);
530
-
531
- /**
532
- * @generated from message scalekit.v1.roles.DeleteOrganizationRoleRequest
533
- */
534
- export type DeleteOrganizationRoleRequest = Message<"scalekit.v1.roles.DeleteOrganizationRoleRequest"> & {
535
- /**
536
- * @generated from field: string org_id = 1;
537
- */
538
- orgId: string;
539
-
540
- /**
541
- * @generated from field: string role_name = 2;
542
- */
543
- roleName: string;
544
-
545
- /**
546
- * @generated from field: optional string reassign_role_name = 3;
547
- */
548
- reassignRoleName?: string;
549
- };
550
-
551
- /**
552
- * Describes the message scalekit.v1.roles.DeleteOrganizationRoleRequest.
553
- * Use `create(DeleteOrganizationRoleRequestSchema)` to create a new message.
554
- */
555
- export const DeleteOrganizationRoleRequestSchema: GenMessage<DeleteOrganizationRoleRequest> = /*@__PURE__*/
556
- messageDesc(file_scalekit_v1_roles_roles, 21);
557
-
558
- /**
559
- * @generated from message scalekit.v1.roles.GetRoleUsersCountRequest
560
- */
561
- export type GetRoleUsersCountRequest = Message<"scalekit.v1.roles.GetRoleUsersCountRequest"> & {
562
- /**
563
- * @generated from field: string role_name = 2;
564
- */
565
- roleName: string;
566
- };
567
-
568
- /**
569
- * Describes the message scalekit.v1.roles.GetRoleUsersCountRequest.
570
- * Use `create(GetRoleUsersCountRequestSchema)` to create a new message.
571
- */
572
- export const GetRoleUsersCountRequestSchema: GenMessage<GetRoleUsersCountRequest> = /*@__PURE__*/
573
- messageDesc(file_scalekit_v1_roles_roles, 22);
574
-
575
- /**
576
- * @generated from message scalekit.v1.roles.GetRoleUsersCountResponse
577
- */
578
- export type GetRoleUsersCountResponse = Message<"scalekit.v1.roles.GetRoleUsersCountResponse"> & {
579
- /**
580
- * @generated from field: int64 count = 1;
581
- */
582
- count: bigint;
583
- };
584
-
585
- /**
586
- * Describes the message scalekit.v1.roles.GetRoleUsersCountResponse.
587
- * Use `create(GetRoleUsersCountResponseSchema)` to create a new message.
588
- */
589
- export const GetRoleUsersCountResponseSchema: GenMessage<GetRoleUsersCountResponse> = /*@__PURE__*/
590
- messageDesc(file_scalekit_v1_roles_roles, 23);
591
-
592
- /**
593
- * @generated from message scalekit.v1.roles.GetOrganizationRoleUsersCountRequest
594
- */
595
- export type GetOrganizationRoleUsersCountRequest = Message<"scalekit.v1.roles.GetOrganizationRoleUsersCountRequest"> & {
596
- /**
597
- * @generated from field: string org_id = 1;
598
- */
599
- orgId: string;
600
-
601
- /**
602
- * @generated from field: string role_name = 2;
603
- */
604
- roleName: string;
605
- };
606
-
607
- /**
608
- * Describes the message scalekit.v1.roles.GetOrganizationRoleUsersCountRequest.
609
- * Use `create(GetOrganizationRoleUsersCountRequestSchema)` to create a new message.
610
- */
611
- export const GetOrganizationRoleUsersCountRequestSchema: GenMessage<GetOrganizationRoleUsersCountRequest> = /*@__PURE__*/
612
- messageDesc(file_scalekit_v1_roles_roles, 24);
613
-
614
- /**
615
- * @generated from message scalekit.v1.roles.GetOrganizationRoleUsersCountResponse
616
- */
617
- export type GetOrganizationRoleUsersCountResponse = Message<"scalekit.v1.roles.GetOrganizationRoleUsersCountResponse"> & {
618
- /**
619
- * @generated from field: int64 count = 1;
620
- */
621
- count: bigint;
622
- };
623
-
624
- /**
625
- * Describes the message scalekit.v1.roles.GetOrganizationRoleUsersCountResponse.
626
- * Use `create(GetOrganizationRoleUsersCountResponseSchema)` to create a new message.
627
- */
628
- export const GetOrganizationRoleUsersCountResponseSchema: GenMessage<GetOrganizationRoleUsersCountResponse> = /*@__PURE__*/
629
- messageDesc(file_scalekit_v1_roles_roles, 25);
630
-
631
- /**
632
- * @generated from message scalekit.v1.roles.UpdateDefaultRolesRequest
633
- */
634
- export type UpdateDefaultRolesRequest = Message<"scalekit.v1.roles.UpdateDefaultRolesRequest"> & {
635
- /**
636
- * @generated from field: scalekit.v1.roles.UpdateDefaultRole default_creator = 2 [deprecated = true];
637
- * @deprecated
638
- */
639
- defaultCreator?: UpdateDefaultRole;
640
-
641
- /**
642
- * @generated from field: scalekit.v1.roles.UpdateDefaultRole default_member = 3 [deprecated = true];
643
- * @deprecated
644
- */
645
- defaultMember?: UpdateDefaultRole;
646
-
647
- /**
648
- * @generated from field: optional string default_creator_role = 4;
649
- */
650
- defaultCreatorRole?: string;
651
-
652
- /**
653
- * @generated from field: optional string default_member_role = 5;
654
- */
655
- defaultMemberRole?: string;
656
- };
657
-
658
- /**
659
- * Describes the message scalekit.v1.roles.UpdateDefaultRolesRequest.
660
- * Use `create(UpdateDefaultRolesRequestSchema)` to create a new message.
661
- */
662
- export const UpdateDefaultRolesRequestSchema: GenMessage<UpdateDefaultRolesRequest> = /*@__PURE__*/
663
- messageDesc(file_scalekit_v1_roles_roles, 26);
664
-
665
- /**
666
- * @generated from message scalekit.v1.roles.UpdateDefaultOrganizationRolesRequest
667
- */
668
- export type UpdateDefaultOrganizationRolesRequest = Message<"scalekit.v1.roles.UpdateDefaultOrganizationRolesRequest"> & {
669
- /**
670
- * @generated from field: string org_id = 1;
671
- */
672
- orgId: string;
673
-
674
- /**
675
- * @generated from field: string default_member_role = 2;
676
- */
677
- defaultMemberRole: string;
678
- };
679
-
680
- /**
681
- * Describes the message scalekit.v1.roles.UpdateDefaultOrganizationRolesRequest.
682
- * Use `create(UpdateDefaultOrganizationRolesRequestSchema)` to create a new message.
683
- */
684
- export const UpdateDefaultOrganizationRolesRequestSchema: GenMessage<UpdateDefaultOrganizationRolesRequest> = /*@__PURE__*/
685
- messageDesc(file_scalekit_v1_roles_roles, 27);
686
-
687
- /**
688
- * @generated from message scalekit.v1.roles.UpdateDefaultRolesResponse
689
- */
690
- export type UpdateDefaultRolesResponse = Message<"scalekit.v1.roles.UpdateDefaultRolesResponse"> & {
691
- /**
692
- * @generated from field: scalekit.v1.roles.Role default_creator = 1;
693
- */
694
- defaultCreator?: Role;
695
-
696
- /**
697
- * @generated from field: scalekit.v1.roles.Role default_member = 2;
698
- */
699
- defaultMember?: Role;
700
- };
701
-
702
- /**
703
- * Describes the message scalekit.v1.roles.UpdateDefaultRolesResponse.
704
- * Use `create(UpdateDefaultRolesResponseSchema)` to create a new message.
705
- */
706
- export const UpdateDefaultRolesResponseSchema: GenMessage<UpdateDefaultRolesResponse> = /*@__PURE__*/
707
- messageDesc(file_scalekit_v1_roles_roles, 28);
708
-
709
- /**
710
- * @generated from message scalekit.v1.roles.UpdateDefaultOrganizationRolesResponse
711
- */
712
- export type UpdateDefaultOrganizationRolesResponse = Message<"scalekit.v1.roles.UpdateDefaultOrganizationRolesResponse"> & {
713
- /**
714
- * @generated from field: scalekit.v1.roles.Role default_member = 2;
715
- */
716
- defaultMember?: Role;
717
- };
718
-
719
- /**
720
- * Describes the message scalekit.v1.roles.UpdateDefaultOrganizationRolesResponse.
721
- * Use `create(UpdateDefaultOrganizationRolesResponseSchema)` to create a new message.
722
- */
723
- export const UpdateDefaultOrganizationRolesResponseSchema: GenMessage<UpdateDefaultOrganizationRolesResponse> = /*@__PURE__*/
724
- messageDesc(file_scalekit_v1_roles_roles, 29);
725
-
726
- /**
727
- * @generated from message scalekit.v1.roles.UpdateDefaultRole
728
- */
729
- export type UpdateDefaultRole = Message<"scalekit.v1.roles.UpdateDefaultRole"> & {
730
- /**
731
- * @generated from field: string id = 1;
732
- */
733
- id: string;
734
-
735
- /**
736
- * @generated from field: optional string name = 2;
737
- */
738
- name?: string;
739
- };
740
-
741
- /**
742
- * Describes the message scalekit.v1.roles.UpdateDefaultRole.
743
- * Use `create(UpdateDefaultRoleSchema)` to create a new message.
744
- */
745
- export const UpdateDefaultRoleSchema: GenMessage<UpdateDefaultRole> = /*@__PURE__*/
746
- messageDesc(file_scalekit_v1_roles_roles, 30);
747
-
748
- /**
749
- * Permission Entity
750
- *
751
- * @generated from message scalekit.v1.roles.Permission
752
- */
753
- export type Permission = Message<"scalekit.v1.roles.Permission"> & {
754
- /**
755
- * @generated from field: string id = 1;
756
- */
757
- id: string;
758
-
759
- /**
760
- * @generated from field: string name = 2;
761
- */
762
- name: string;
763
-
764
- /**
765
- * @generated from field: string description = 3;
766
- */
767
- description: string;
768
-
769
- /**
770
- * @generated from field: google.protobuf.Timestamp create_time = 4;
771
- */
772
- createTime?: Timestamp;
773
-
774
- /**
775
- * @generated from field: google.protobuf.Timestamp update_time = 5;
776
- */
777
- updateTime?: Timestamp;
778
-
779
- /**
780
- * @generated from field: bool is_scalekit_permission = 6;
781
- */
782
- isScalekitPermission: boolean;
783
- };
784
-
785
- /**
786
- * Describes the message scalekit.v1.roles.Permission.
787
- * Use `create(PermissionSchema)` to create a new message.
788
- */
789
- export const PermissionSchema: GenMessage<Permission> = /*@__PURE__*/
790
- messageDesc(file_scalekit_v1_roles_roles, 31);
791
-
792
- /**
793
- * RolePermissions represents a permission with role source information
794
- *
795
- * @generated from message scalekit.v1.roles.RolePermission
796
- */
797
- export type RolePermission = Message<"scalekit.v1.roles.RolePermission"> & {
798
- /**
799
- * @generated from field: string id = 1;
800
- */
801
- id: string;
802
-
803
- /**
804
- * @generated from field: string name = 2;
805
- */
806
- name: string;
807
-
808
- /**
809
- * @generated from field: string description = 3;
810
- */
811
- description: string;
812
-
813
- /**
814
- * @generated from field: google.protobuf.Timestamp create_time = 4;
815
- */
816
- createTime?: Timestamp;
817
-
818
- /**
819
- * @generated from field: google.protobuf.Timestamp update_time = 5;
820
- */
821
- updateTime?: Timestamp;
822
-
823
- /**
824
- * @generated from field: string role_name = 6;
825
- */
826
- roleName: string;
827
- };
828
-
829
- /**
830
- * Describes the message scalekit.v1.roles.RolePermission.
831
- * Use `create(RolePermissionSchema)` to create a new message.
832
- */
833
- export const RolePermissionSchema: GenMessage<RolePermission> = /*@__PURE__*/
834
- messageDesc(file_scalekit_v1_roles_roles, 32);
835
-
836
- /**
837
- * @generated from message scalekit.v1.roles.CreatePermission
838
- */
839
- export type CreatePermission = Message<"scalekit.v1.roles.CreatePermission"> & {
840
- /**
841
- * @generated from field: string name = 1;
842
- */
843
- name: string;
844
-
845
- /**
846
- * @generated from field: string description = 2;
847
- */
848
- description: string;
849
- };
850
-
851
- /**
852
- * Describes the message scalekit.v1.roles.CreatePermission.
853
- * Use `create(CreatePermissionSchema)` to create a new message.
854
- */
855
- export const CreatePermissionSchema: GenMessage<CreatePermission> = /*@__PURE__*/
856
- messageDesc(file_scalekit_v1_roles_roles, 33);
857
-
858
- /**
859
- * Permission Request/Response Messages
860
- *
861
- * @generated from message scalekit.v1.roles.CreatePermissionRequest
862
- */
863
- export type CreatePermissionRequest = Message<"scalekit.v1.roles.CreatePermissionRequest"> & {
864
- /**
865
- * @generated from field: scalekit.v1.roles.CreatePermission permission = 1;
866
- */
867
- permission?: CreatePermission;
868
- };
869
-
870
- /**
871
- * Describes the message scalekit.v1.roles.CreatePermissionRequest.
872
- * Use `create(CreatePermissionRequestSchema)` to create a new message.
873
- */
874
- export const CreatePermissionRequestSchema: GenMessage<CreatePermissionRequest> = /*@__PURE__*/
875
- messageDesc(file_scalekit_v1_roles_roles, 34);
876
-
877
- /**
878
- * @generated from message scalekit.v1.roles.CreatePermissionResponse
879
- */
880
- export type CreatePermissionResponse = Message<"scalekit.v1.roles.CreatePermissionResponse"> & {
881
- /**
882
- * @generated from field: scalekit.v1.roles.Permission permission = 1;
883
- */
884
- permission?: Permission;
885
- };
886
-
887
- /**
888
- * Describes the message scalekit.v1.roles.CreatePermissionResponse.
889
- * Use `create(CreatePermissionResponseSchema)` to create a new message.
890
- */
891
- export const CreatePermissionResponseSchema: GenMessage<CreatePermissionResponse> = /*@__PURE__*/
892
- messageDesc(file_scalekit_v1_roles_roles, 35);
893
-
894
- /**
895
- * @generated from message scalekit.v1.roles.GetPermissionRequest
896
- */
897
- export type GetPermissionRequest = Message<"scalekit.v1.roles.GetPermissionRequest"> & {
898
- /**
899
- * @generated from field: string permission_name = 1;
900
- */
901
- permissionName: string;
902
- };
903
-
904
- /**
905
- * Describes the message scalekit.v1.roles.GetPermissionRequest.
906
- * Use `create(GetPermissionRequestSchema)` to create a new message.
907
- */
908
- export const GetPermissionRequestSchema: GenMessage<GetPermissionRequest> = /*@__PURE__*/
909
- messageDesc(file_scalekit_v1_roles_roles, 36);
910
-
911
- /**
912
- * @generated from message scalekit.v1.roles.GetPermissionResponse
913
- */
914
- export type GetPermissionResponse = Message<"scalekit.v1.roles.GetPermissionResponse"> & {
915
- /**
916
- * @generated from field: scalekit.v1.roles.Permission permission = 1;
917
- */
918
- permission?: Permission;
919
- };
920
-
921
- /**
922
- * Describes the message scalekit.v1.roles.GetPermissionResponse.
923
- * Use `create(GetPermissionResponseSchema)` to create a new message.
924
- */
925
- export const GetPermissionResponseSchema: GenMessage<GetPermissionResponse> = /*@__PURE__*/
926
- messageDesc(file_scalekit_v1_roles_roles, 37);
927
-
928
- /**
929
- * @generated from message scalekit.v1.roles.UpdatePermissionRequest
930
- */
931
- export type UpdatePermissionRequest = Message<"scalekit.v1.roles.UpdatePermissionRequest"> & {
932
- /**
933
- * @generated from field: string permission_name = 1;
934
- */
935
- permissionName: string;
936
-
937
- /**
938
- * @generated from field: scalekit.v1.roles.CreatePermission permission = 3;
939
- */
940
- permission?: CreatePermission;
941
- };
942
-
943
- /**
944
- * Describes the message scalekit.v1.roles.UpdatePermissionRequest.
945
- * Use `create(UpdatePermissionRequestSchema)` to create a new message.
946
- */
947
- export const UpdatePermissionRequestSchema: GenMessage<UpdatePermissionRequest> = /*@__PURE__*/
948
- messageDesc(file_scalekit_v1_roles_roles, 38);
949
-
950
- /**
951
- * @generated from message scalekit.v1.roles.UpdatePermissionResponse
952
- */
953
- export type UpdatePermissionResponse = Message<"scalekit.v1.roles.UpdatePermissionResponse"> & {
954
- /**
955
- * @generated from field: scalekit.v1.roles.Permission permission = 1;
956
- */
957
- permission?: Permission;
958
- };
959
-
960
- /**
961
- * Describes the message scalekit.v1.roles.UpdatePermissionResponse.
962
- * Use `create(UpdatePermissionResponseSchema)` to create a new message.
963
- */
964
- export const UpdatePermissionResponseSchema: GenMessage<UpdatePermissionResponse> = /*@__PURE__*/
965
- messageDesc(file_scalekit_v1_roles_roles, 39);
966
-
967
- /**
968
- * @generated from message scalekit.v1.roles.ListPermissionsRequest
969
- */
970
- export type ListPermissionsRequest = Message<"scalekit.v1.roles.ListPermissionsRequest"> & {
971
- /**
972
- * @generated from field: optional string page_token = 1;
973
- */
974
- pageToken?: string;
975
-
976
- /**
977
- * @generated from field: optional uint32 page_size = 2;
978
- */
979
- pageSize?: number;
980
-
981
- /**
982
- * @generated from field: scalekit.v1.roles.PermissionType type = 3;
983
- */
984
- type: PermissionType;
985
- };
986
-
987
- /**
988
- * Describes the message scalekit.v1.roles.ListPermissionsRequest.
989
- * Use `create(ListPermissionsRequestSchema)` to create a new message.
990
- */
991
- export const ListPermissionsRequestSchema: GenMessage<ListPermissionsRequest> = /*@__PURE__*/
992
- messageDesc(file_scalekit_v1_roles_roles, 40);
993
-
994
- /**
995
- * @generated from message scalekit.v1.roles.ListPermissionsResponse
996
- */
997
- export type ListPermissionsResponse = Message<"scalekit.v1.roles.ListPermissionsResponse"> & {
998
- /**
999
- * @generated from field: repeated scalekit.v1.roles.Permission permissions = 1;
1000
- */
1001
- permissions: Permission[];
1002
-
1003
- /**
1004
- * @generated from field: string prev_page_token = 2;
1005
- */
1006
- prevPageToken: string;
1007
-
1008
- /**
1009
- * @generated from field: string next_page_token = 3;
1010
- */
1011
- nextPageToken: string;
1012
-
1013
- /**
1014
- * @generated from field: uint32 total_size = 4;
1015
- */
1016
- totalSize: number;
1017
- };
1018
-
1019
- /**
1020
- * Describes the message scalekit.v1.roles.ListPermissionsResponse.
1021
- * Use `create(ListPermissionsResponseSchema)` to create a new message.
1022
- */
1023
- export const ListPermissionsResponseSchema: GenMessage<ListPermissionsResponse> = /*@__PURE__*/
1024
- messageDesc(file_scalekit_v1_roles_roles, 41);
1025
-
1026
- /**
1027
- * @generated from message scalekit.v1.roles.DeletePermissionRequest
1028
- */
1029
- export type DeletePermissionRequest = Message<"scalekit.v1.roles.DeletePermissionRequest"> & {
1030
- /**
1031
- * @generated from field: string permission_name = 1;
1032
- */
1033
- permissionName: string;
1034
- };
1035
-
1036
- /**
1037
- * Describes the message scalekit.v1.roles.DeletePermissionRequest.
1038
- * Use `create(DeletePermissionRequestSchema)` to create a new message.
1039
- */
1040
- export const DeletePermissionRequestSchema: GenMessage<DeletePermissionRequest> = /*@__PURE__*/
1041
- messageDesc(file_scalekit_v1_roles_roles, 42);
1042
-
1043
- /**
1044
- * @generated from message scalekit.v1.roles.ListRolePermissionsRequest
1045
- */
1046
- export type ListRolePermissionsRequest = Message<"scalekit.v1.roles.ListRolePermissionsRequest"> & {
1047
- /**
1048
- * @generated from field: string role_name = 1;
1049
- */
1050
- roleName: string;
1051
- };
1052
-
1053
- /**
1054
- * Describes the message scalekit.v1.roles.ListRolePermissionsRequest.
1055
- * Use `create(ListRolePermissionsRequestSchema)` to create a new message.
1056
- */
1057
- export const ListRolePermissionsRequestSchema: GenMessage<ListRolePermissionsRequest> = /*@__PURE__*/
1058
- messageDesc(file_scalekit_v1_roles_roles, 43);
1059
-
1060
- /**
1061
- * @generated from message scalekit.v1.roles.ListRolePermissionsResponse
1062
- */
1063
- export type ListRolePermissionsResponse = Message<"scalekit.v1.roles.ListRolePermissionsResponse"> & {
1064
- /**
1065
- * @generated from field: repeated scalekit.v1.roles.Permission permissions = 1;
1066
- */
1067
- permissions: Permission[];
1068
- };
1069
-
1070
- /**
1071
- * Describes the message scalekit.v1.roles.ListRolePermissionsResponse.
1072
- * Use `create(ListRolePermissionsResponseSchema)` to create a new message.
1073
- */
1074
- export const ListRolePermissionsResponseSchema: GenMessage<ListRolePermissionsResponse> = /*@__PURE__*/
1075
- messageDesc(file_scalekit_v1_roles_roles, 44);
1076
-
1077
- /**
1078
- * @generated from message scalekit.v1.roles.AddPermissionsToRoleRequest
1079
- */
1080
- export type AddPermissionsToRoleRequest = Message<"scalekit.v1.roles.AddPermissionsToRoleRequest"> & {
1081
- /**
1082
- * @generated from field: string role_name = 1;
1083
- */
1084
- roleName: string;
1085
-
1086
- /**
1087
- * @generated from field: repeated string permission_names = 2;
1088
- */
1089
- permissionNames: string[];
1090
- };
1091
-
1092
- /**
1093
- * Describes the message scalekit.v1.roles.AddPermissionsToRoleRequest.
1094
- * Use `create(AddPermissionsToRoleRequestSchema)` to create a new message.
1095
- */
1096
- export const AddPermissionsToRoleRequestSchema: GenMessage<AddPermissionsToRoleRequest> = /*@__PURE__*/
1097
- messageDesc(file_scalekit_v1_roles_roles, 45);
1098
-
1099
- /**
1100
- * @generated from message scalekit.v1.roles.AddPermissionsToRoleResponse
1101
- */
1102
- export type AddPermissionsToRoleResponse = Message<"scalekit.v1.roles.AddPermissionsToRoleResponse"> & {
1103
- /**
1104
- * @generated from field: repeated scalekit.v1.roles.Permission permissions = 1;
1105
- */
1106
- permissions: Permission[];
1107
- };
1108
-
1109
- /**
1110
- * Describes the message scalekit.v1.roles.AddPermissionsToRoleResponse.
1111
- * Use `create(AddPermissionsToRoleResponseSchema)` to create a new message.
1112
- */
1113
- export const AddPermissionsToRoleResponseSchema: GenMessage<AddPermissionsToRoleResponse> = /*@__PURE__*/
1114
- messageDesc(file_scalekit_v1_roles_roles, 46);
1115
-
1116
- /**
1117
- * @generated from message scalekit.v1.roles.RemovePermissionFromRoleRequest
1118
- */
1119
- export type RemovePermissionFromRoleRequest = Message<"scalekit.v1.roles.RemovePermissionFromRoleRequest"> & {
1120
- /**
1121
- * @generated from field: string role_name = 1;
1122
- */
1123
- roleName: string;
1124
-
1125
- /**
1126
- * @generated from field: string permission_name = 2;
1127
- */
1128
- permissionName: string;
1129
- };
1130
-
1131
- /**
1132
- * Describes the message scalekit.v1.roles.RemovePermissionFromRoleRequest.
1133
- * Use `create(RemovePermissionFromRoleRequestSchema)` to create a new message.
1134
- */
1135
- export const RemovePermissionFromRoleRequestSchema: GenMessage<RemovePermissionFromRoleRequest> = /*@__PURE__*/
1136
- messageDesc(file_scalekit_v1_roles_roles, 47);
1137
-
1138
- /**
1139
- * @generated from message scalekit.v1.roles.ListEffectiveRolePermissionsRequest
1140
- */
1141
- export type ListEffectiveRolePermissionsRequest = Message<"scalekit.v1.roles.ListEffectiveRolePermissionsRequest"> & {
1142
- /**
1143
- * @generated from field: string role_name = 1;
1144
- */
1145
- roleName: string;
1146
- };
1147
-
1148
- /**
1149
- * Describes the message scalekit.v1.roles.ListEffectiveRolePermissionsRequest.
1150
- * Use `create(ListEffectiveRolePermissionsRequestSchema)` to create a new message.
1151
- */
1152
- export const ListEffectiveRolePermissionsRequestSchema: GenMessage<ListEffectiveRolePermissionsRequest> = /*@__PURE__*/
1153
- messageDesc(file_scalekit_v1_roles_roles, 48);
1154
-
1155
- /**
1156
- * @generated from message scalekit.v1.roles.ListEffectiveRolePermissionsResponse
1157
- */
1158
- export type ListEffectiveRolePermissionsResponse = Message<"scalekit.v1.roles.ListEffectiveRolePermissionsResponse"> & {
1159
- /**
1160
- * @generated from field: repeated scalekit.v1.roles.Permission permissions = 1;
1161
- */
1162
- permissions: Permission[];
1163
- };
1164
-
1165
- /**
1166
- * Describes the message scalekit.v1.roles.ListEffectiveRolePermissionsResponse.
1167
- * Use `create(ListEffectiveRolePermissionsResponseSchema)` to create a new message.
1168
- */
1169
- export const ListEffectiveRolePermissionsResponseSchema: GenMessage<ListEffectiveRolePermissionsResponse> = /*@__PURE__*/
1170
- messageDesc(file_scalekit_v1_roles_roles, 49);
1171
-
1172
- /**
1173
- * @generated from message scalekit.v1.roles.ListDependentRolesRequest
1174
- */
1175
- export type ListDependentRolesRequest = Message<"scalekit.v1.roles.ListDependentRolesRequest"> & {
1176
- /**
1177
- * @generated from field: string role_name = 1;
1178
- */
1179
- roleName: string;
1180
- };
1181
-
1182
- /**
1183
- * Describes the message scalekit.v1.roles.ListDependentRolesRequest.
1184
- * Use `create(ListDependentRolesRequestSchema)` to create a new message.
1185
- */
1186
- export const ListDependentRolesRequestSchema: GenMessage<ListDependentRolesRequest> = /*@__PURE__*/
1187
- messageDesc(file_scalekit_v1_roles_roles, 50);
1188
-
1189
- /**
1190
- * @generated from message scalekit.v1.roles.ListDependentRolesResponse
1191
- */
1192
- export type ListDependentRolesResponse = Message<"scalekit.v1.roles.ListDependentRolesResponse"> & {
1193
- /**
1194
- * @generated from field: repeated scalekit.v1.roles.Role roles = 1;
1195
- */
1196
- roles: Role[];
1197
- };
1198
-
1199
- /**
1200
- * Describes the message scalekit.v1.roles.ListDependentRolesResponse.
1201
- * Use `create(ListDependentRolesResponseSchema)` to create a new message.
1202
- */
1203
- export const ListDependentRolesResponseSchema: GenMessage<ListDependentRolesResponse> = /*@__PURE__*/
1204
- messageDesc(file_scalekit_v1_roles_roles, 51);
1205
-
1206
- /**
1207
- * @generated from message scalekit.v1.roles.DeleteRoleBaseRequest
1208
- */
1209
- export type DeleteRoleBaseRequest = Message<"scalekit.v1.roles.DeleteRoleBaseRequest"> & {
1210
- /**
1211
- * @generated from field: string role_name = 1;
1212
- */
1213
- roleName: string;
1214
- };
1215
-
1216
- /**
1217
- * Describes the message scalekit.v1.roles.DeleteRoleBaseRequest.
1218
- * Use `create(DeleteRoleBaseRequestSchema)` to create a new message.
1219
- */
1220
- export const DeleteRoleBaseRequestSchema: GenMessage<DeleteRoleBaseRequest> = /*@__PURE__*/
1221
- messageDesc(file_scalekit_v1_roles_roles, 52);
1222
-
1223
- /**
1224
- * @generated from message scalekit.v1.roles.DeleteOrganizationRoleBaseRequest
1225
- */
1226
- export type DeleteOrganizationRoleBaseRequest = Message<"scalekit.v1.roles.DeleteOrganizationRoleBaseRequest"> & {
1227
- /**
1228
- * @generated from field: string org_id = 1;
1229
- */
1230
- orgId: string;
1231
-
1232
- /**
1233
- * @generated from field: string role_name = 2;
1234
- */
1235
- roleName: string;
1236
- };
1237
-
1238
- /**
1239
- * Describes the message scalekit.v1.roles.DeleteOrganizationRoleBaseRequest.
1240
- * Use `create(DeleteOrganizationRoleBaseRequestSchema)` to create a new message.
1241
- */
1242
- export const DeleteOrganizationRoleBaseRequestSchema: GenMessage<DeleteOrganizationRoleBaseRequest> = /*@__PURE__*/
1243
- messageDesc(file_scalekit_v1_roles_roles, 53);
1244
-
1245
- /**
1246
- * @generated from enum scalekit.v1.roles.PermissionType
1247
- */
1248
- export enum PermissionType {
1249
- /**
1250
- * @generated from enum value: ALL = 0;
1251
- */
1252
- ALL = 0,
1253
-
1254
- /**
1255
- * @generated from enum value: SCALEKIT = 1;
1256
- */
1257
- SCALEKIT = 1,
1258
-
1259
- /**
1260
- * @generated from enum value: ENVIRONMENT = 2;
1261
- */
1262
- ENVIRONMENT = 2,
1263
- }
1264
-
1265
- /**
1266
- * Describes the enum scalekit.v1.roles.PermissionType.
1267
- */
1268
- export const PermissionTypeSchema: GenEnum<PermissionType> = /*@__PURE__*/
1269
- enumDesc(file_scalekit_v1_roles_roles, 0);
1270
-
1271
- /**
1272
- * @generated from service scalekit.v1.roles.RolesService
1273
- */
1274
- export const RolesService: GenService<{
1275
- /**
1276
- * @generated from rpc scalekit.v1.roles.RolesService.CreateRole
1277
- */
1278
- createRole: {
1279
- methodKind: "unary";
1280
- input: typeof CreateRoleRequestSchema;
1281
- output: typeof CreateRoleResponseSchema;
1282
- },
1283
- /**
1284
- * @generated from rpc scalekit.v1.roles.RolesService.UpdateRole
1285
- */
1286
- updateRole: {
1287
- methodKind: "unary";
1288
- input: typeof UpdateRoleRequestSchema;
1289
- output: typeof UpdateRoleResponseSchema;
1290
- },
1291
- /**
1292
- * @generated from rpc scalekit.v1.roles.RolesService.GetRole
1293
- */
1294
- getRole: {
1295
- methodKind: "unary";
1296
- input: typeof GetRoleRequestSchema;
1297
- output: typeof GetRoleResponseSchema;
1298
- },
1299
- /**
1300
- * @generated from rpc scalekit.v1.roles.RolesService.ListRoles
1301
- */
1302
- listRoles: {
1303
- methodKind: "unary";
1304
- input: typeof ListRolesRequestSchema;
1305
- output: typeof ListRolesResponseSchema;
1306
- },
1307
- /**
1308
- * @generated from rpc scalekit.v1.roles.RolesService.DeleteRole
1309
- */
1310
- deleteRole: {
1311
- methodKind: "unary";
1312
- input: typeof DeleteRoleRequestSchema;
1313
- output: typeof EmptySchema;
1314
- },
1315
- /**
1316
- * @generated from rpc scalekit.v1.roles.RolesService.CreateOrganizationRole
1317
- */
1318
- createOrganizationRole: {
1319
- methodKind: "unary";
1320
- input: typeof CreateOrganizationRoleRequestSchema;
1321
- output: typeof CreateOrganizationRoleResponseSchema;
1322
- },
1323
- /**
1324
- * @generated from rpc scalekit.v1.roles.RolesService.UpdateOrganizationRole
1325
- */
1326
- updateOrganizationRole: {
1327
- methodKind: "unary";
1328
- input: typeof UpdateOrganizationRoleRequestSchema;
1329
- output: typeof UpdateOrganizationRoleResponseSchema;
1330
- },
1331
- /**
1332
- * @generated from rpc scalekit.v1.roles.RolesService.GetOrganizationRole
1333
- */
1334
- getOrganizationRole: {
1335
- methodKind: "unary";
1336
- input: typeof GetOrganizationRoleRequestSchema;
1337
- output: typeof GetOrganizationRoleResponseSchema;
1338
- },
1339
- /**
1340
- * @generated from rpc scalekit.v1.roles.RolesService.ListOrganizationRoles
1341
- */
1342
- listOrganizationRoles: {
1343
- methodKind: "unary";
1344
- input: typeof ListOrganizationRolesRequestSchema;
1345
- output: typeof ListOrganizationRolesResponseSchema;
1346
- },
1347
- /**
1348
- * @generated from rpc scalekit.v1.roles.RolesService.DeleteOrganizationRole
1349
- */
1350
- deleteOrganizationRole: {
1351
- methodKind: "unary";
1352
- input: typeof DeleteOrganizationRoleRequestSchema;
1353
- output: typeof EmptySchema;
1354
- },
1355
- /**
1356
- * @generated from rpc scalekit.v1.roles.RolesService.GetRoleUsersCount
1357
- */
1358
- getRoleUsersCount: {
1359
- methodKind: "unary";
1360
- input: typeof GetRoleUsersCountRequestSchema;
1361
- output: typeof GetRoleUsersCountResponseSchema;
1362
- },
1363
- /**
1364
- * @generated from rpc scalekit.v1.roles.RolesService.GetOrganizationRoleUsersCount
1365
- */
1366
- getOrganizationRoleUsersCount: {
1367
- methodKind: "unary";
1368
- input: typeof GetOrganizationRoleUsersCountRequestSchema;
1369
- output: typeof GetOrganizationRoleUsersCountResponseSchema;
1370
- },
1371
- /**
1372
- * @generated from rpc scalekit.v1.roles.RolesService.UpdateDefaultRoles
1373
- */
1374
- updateDefaultRoles: {
1375
- methodKind: "unary";
1376
- input: typeof UpdateDefaultRolesRequestSchema;
1377
- output: typeof UpdateDefaultRolesResponseSchema;
1378
- },
1379
- /**
1380
- * @generated from rpc scalekit.v1.roles.RolesService.UpdateDefaultOrganizationRoles
1381
- */
1382
- updateDefaultOrganizationRoles: {
1383
- methodKind: "unary";
1384
- input: typeof UpdateDefaultOrganizationRolesRequestSchema;
1385
- output: typeof UpdateDefaultOrganizationRolesResponseSchema;
1386
- },
1387
- /**
1388
- * Role Hierarchy Management RPCs
1389
- *
1390
- * @generated from rpc scalekit.v1.roles.RolesService.ListDependentRoles
1391
- */
1392
- listDependentRoles: {
1393
- methodKind: "unary";
1394
- input: typeof ListDependentRolesRequestSchema;
1395
- output: typeof ListDependentRolesResponseSchema;
1396
- },
1397
- /**
1398
- * @generated from rpc scalekit.v1.roles.RolesService.DeleteRoleBase
1399
- */
1400
- deleteRoleBase: {
1401
- methodKind: "unary";
1402
- input: typeof DeleteRoleBaseRequestSchema;
1403
- output: typeof EmptySchema;
1404
- },
1405
- /**
1406
- * @generated from rpc scalekit.v1.roles.RolesService.DeleteOrganizationRoleBase
1407
- */
1408
- deleteOrganizationRoleBase: {
1409
- methodKind: "unary";
1410
- input: typeof DeleteOrganizationRoleBaseRequestSchema;
1411
- output: typeof EmptySchema;
1412
- },
1413
- /**
1414
- * Permission Management RPCs
1415
- *
1416
- * @generated from rpc scalekit.v1.roles.RolesService.CreatePermission
1417
- */
1418
- createPermission: {
1419
- methodKind: "unary";
1420
- input: typeof CreatePermissionRequestSchema;
1421
- output: typeof CreatePermissionResponseSchema;
1422
- },
1423
- /**
1424
- * @generated from rpc scalekit.v1.roles.RolesService.GetPermission
1425
- */
1426
- getPermission: {
1427
- methodKind: "unary";
1428
- input: typeof GetPermissionRequestSchema;
1429
- output: typeof GetPermissionResponseSchema;
1430
- },
1431
- /**
1432
- * @generated from rpc scalekit.v1.roles.RolesService.UpdatePermission
1433
- */
1434
- updatePermission: {
1435
- methodKind: "unary";
1436
- input: typeof UpdatePermissionRequestSchema;
1437
- output: typeof UpdatePermissionResponseSchema;
1438
- },
1439
- /**
1440
- * @generated from rpc scalekit.v1.roles.RolesService.ListPermissions
1441
- */
1442
- listPermissions: {
1443
- methodKind: "unary";
1444
- input: typeof ListPermissionsRequestSchema;
1445
- output: typeof ListPermissionsResponseSchema;
1446
- },
1447
- /**
1448
- * @generated from rpc scalekit.v1.roles.RolesService.DeletePermission
1449
- */
1450
- deletePermission: {
1451
- methodKind: "unary";
1452
- input: typeof DeletePermissionRequestSchema;
1453
- output: typeof EmptySchema;
1454
- },
1455
- /**
1456
- * Role-Permission Management RPCs
1457
- *
1458
- * @generated from rpc scalekit.v1.roles.RolesService.ListRolePermissions
1459
- */
1460
- listRolePermissions: {
1461
- methodKind: "unary";
1462
- input: typeof ListRolePermissionsRequestSchema;
1463
- output: typeof ListRolePermissionsResponseSchema;
1464
- },
1465
- /**
1466
- * @generated from rpc scalekit.v1.roles.RolesService.AddPermissionsToRole
1467
- */
1468
- addPermissionsToRole: {
1469
- methodKind: "unary";
1470
- input: typeof AddPermissionsToRoleRequestSchema;
1471
- output: typeof AddPermissionsToRoleResponseSchema;
1472
- },
1473
- /**
1474
- * @generated from rpc scalekit.v1.roles.RolesService.RemovePermissionFromRole
1475
- */
1476
- removePermissionFromRole: {
1477
- methodKind: "unary";
1478
- input: typeof RemovePermissionFromRoleRequestSchema;
1479
- output: typeof EmptySchema;
1480
- },
1481
- /**
1482
- * @generated from rpc scalekit.v1.roles.RolesService.ListEffectiveRolePermissions
1483
- */
1484
- listEffectiveRolePermissions: {
1485
- methodKind: "unary";
1486
- input: typeof ListEffectiveRolePermissionsRequestSchema;
1487
- output: typeof ListEffectiveRolePermissionsResponseSchema;
1488
- },
1489
- }> = /*@__PURE__*/
1490
- serviceDesc(file_scalekit_v1_roles_roles, 0);
1491
-