@silvana-one/orderbook 1.1.23 → 1.1.25

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 (30) hide show
  1. package/dist/node/index.cjs +130 -40
  2. package/dist/node/orderbook.d.ts +32 -1
  3. package/dist/node/orderbook.js +35 -1
  4. package/dist/node/orderbook.js.map +1 -1
  5. package/dist/node/proto/silvana/orderbook/v1/orderbook_pb.d.ts +525 -0
  6. package/dist/node/proto/silvana/orderbook/v1/orderbook_pb.js +99 -7
  7. package/dist/node/proto/silvana/orderbook/v1/orderbook_pb.js.map +1 -1
  8. package/dist/node/proto/silvana/settlement/v1/settlement_pb.d.ts +139 -1
  9. package/dist/node/proto/silvana/settlement/v1/settlement_pb.js +47 -33
  10. package/dist/node/proto/silvana/settlement/v1/settlement_pb.js.map +1 -1
  11. package/dist/node/settlement.d.ts +3 -0
  12. package/dist/node/settlement.js.map +1 -1
  13. package/dist/tsconfig.tsbuildinfo +1 -1
  14. package/dist/tsconfig.web.tsbuildinfo +1 -1
  15. package/dist/web/orderbook.d.ts +32 -1
  16. package/dist/web/orderbook.js +35 -1
  17. package/dist/web/orderbook.js.map +1 -1
  18. package/dist/web/proto/silvana/orderbook/v1/orderbook_pb.d.ts +525 -0
  19. package/dist/web/proto/silvana/orderbook/v1/orderbook_pb.js +99 -7
  20. package/dist/web/proto/silvana/orderbook/v1/orderbook_pb.js.map +1 -1
  21. package/dist/web/proto/silvana/settlement/v1/settlement_pb.d.ts +139 -1
  22. package/dist/web/proto/silvana/settlement/v1/settlement_pb.js +47 -33
  23. package/dist/web/proto/silvana/settlement/v1/settlement_pb.js.map +1 -1
  24. package/dist/web/settlement.d.ts +3 -0
  25. package/dist/web/settlement.js.map +1 -1
  26. package/package.json +1 -1
  27. package/src/orderbook.ts +62 -0
  28. package/src/proto/silvana/orderbook/v1/orderbook_pb.ts +631 -7
  29. package/src/proto/silvana/settlement/v1/settlement_pb.ts +191 -33
  30. package/src/settlement.ts +3 -0
@@ -12,7 +12,7 @@ import type { JsonObject, Message } from "@bufbuild/protobuf";
12
12
  * Describes the file proto/silvana/orderbook/v1/orderbook.proto.
13
13
  */
14
14
  export const file_proto_silvana_orderbook_v1_orderbook: GenFile = /*@__PURE__*/
15
- fileDesc("Cipwcm90by9zaWx2YW5hL29yZGVyYm9vay92MS9vcmRlcmJvb2sucHJvdG8SFHNpbHZhbmEub3JkZXJib29rLnYxIhgKB0pXVEF1dGgSDQoFdG9rZW4YASABKAkiQQoMRXh0ZXJuYWxBdXRoEgsKA2p3dBgBIAEoCRIQCghwYXJ0eV9pZBgCIAEoCRISCgpwdWJsaWNfa2V5GAMgASgJIvoCCgpJbnN0cnVtZW50EhUKDWluc3RydW1lbnRfaWQYASABKAkSFwoPaW5zdHJ1bWVudF90eXBlGAIgASgJEgwKBG5hbWUYAyABKAkSDgoGc3ltYm9sGAQgASgJEhgKC2Rlc2NyaXB0aW9uGAUgASgJSACIAQESEwoGaXNzdWVyGAYgASgJSAGIAQESFQoIcmVnaXN0cnkYByABKAlIAogBARIuCghtZXRhZGF0YRgIIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIuCgpjcmVhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBITCgtuZXdzX3N5bWJvbBgLIAEoCUIOCgxfZGVzY3JpcHRpb25CCQoHX2lzc3VlckILCglfcmVnaXN0cnlCCwoJX21ldGFkYXRhItwFCgZNYXJrZXQSEQoJbWFya2V0X2lkGAEgASgJEjUKC21hcmtldF90eXBlGAIgASgOMiAuc2lsdmFuYS5vcmRlcmJvb2sudjEuTWFya2V0VHlwZRIXCg9iYXNlX2luc3RydW1lbnQYAyABKAkSGAoQcXVvdGVfaW5zdHJ1bWVudBgEIAEoCRITCgtwYWlyX3N5bWJvbBgFIAEoCRIRCglpc19hY3RpdmUYBiABKAgSFgoObWluX29yZGVyX3NpemUYByABKAkSGwoObWF4X29yZGVyX3NpemUYCCABKAlIAIgBARIRCgl0aWNrX3NpemUYCSABKAkSEQoJbWFrZXJfZmVlGAogASgJEhEKCXRha2VyX2ZlZRgLIAEoCRIuCghtZXRhZGF0YRgMIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARIuCgpjcmVhdGVkX2F0GA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GA4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCgtwcmljZV9mZWVkcxgPIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARIaCg1jdXJyZW50X3ByaWNlGBAgASgBSAOIAQESFwoKY2hhbmdlXzI0aBgRIAEoAUgEiAEBEhcKCnZvbHVtZV8yNGgYEiABKAFIBYgBARI5ChBwcmljZV91cGRhdGVkX2F0GBMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgGiAEBQhEKD19tYXhfb3JkZXJfc2l6ZUILCglfbWV0YWRhdGFCDgoMX3ByaWNlX2ZlZWRzQhAKDl9jdXJyZW50X3ByaWNlQg0KC19jaGFuZ2VfMjRoQg0KC192b2x1bWVfMjRoQhMKEV9wcmljZV91cGRhdGVkX2F0IvcGCgVPcmRlchIQCghvcmRlcl9pZBgBIAEoBBIRCgltYXJrZXRfaWQYAiABKAkSMwoKb3JkZXJfdHlwZRgDIAEoDjIfLnNpbHZhbmEub3JkZXJib29rLnYxLk9yZGVyVHlwZRIOCgZ0cmFkZXIYBCABKAkSHQoQdHJhZGVyX29yZGVyX3JlZhgFIAEoCUgAiAEBEhcKD2Jhc2VfaW5zdHJ1bWVudBgGIAEoCRIYChBxdW90ZV9pbnN0cnVtZW50GAcgASgJEg0KBXByaWNlGAggASgJEhAKCHF1YW50aXR5GAkgASgJEhcKD2ZpbGxlZF9xdWFudGl0eRgKIAEoCRIYChBwZW5kaW5nX3F1YW50aXR5GAsgASgJEhoKEnJlbWFpbmluZ19xdWFudGl0eRgMIAEoCRIxCgZzdGF0dXMYDSABKA4yIS5zaWx2YW5hLm9yZGVyYm9vay52MS5PcmRlclN0YXR1cxI4Cg10aW1lX2luX2ZvcmNlGA4gASgOMiEuc2lsdmFuYS5vcmRlcmJvb2sudjEuVGltZUluRm9yY2USMwoKZXhwaXJlc19hdBgPIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIPCgd2ZXJzaW9uGBAgASgEEjEKC2NyZWRlbnRpYWxzGBEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEjIKDHJlcXVpcmVtZW50cxgSIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIuCghtZXRhZGF0YRgTIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIuCgpjcmVhdGVkX2F0GBQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1CgxjYW5jZWxsZWRfYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQFCEwoRX3RyYWRlcl9vcmRlcl9yZWZCDQoLX2V4cGlyZXNfYXRCDgoMX2NyZWRlbnRpYWxzQg8KDV9yZXF1aXJlbWVudHNCCwoJX21ldGFkYXRhQg8KDV9jYW5jZWxsZWRfYXQiggEKDk9yZGVyYm9va0xldmVsEg0KBXByaWNlGAEgASgJEhYKDnRvdGFsX3F1YW50aXR5GAIgASgJEhMKC29yZGVyX2NvdW50GAMgASgNEjQKEGZpcnN0X29yZGVyX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wItUBCg5PcmRlcmJvb2tEZXB0aBIRCgltYXJrZXRfaWQYASABKAkSEwoLcGFpcl9zeW1ib2wYAiABKAkSMgoEYmlkcxgDIAMoCzIkLnNpbHZhbmEub3JkZXJib29rLnYxLk9yZGVyYm9va0xldmVsEjQKBm9mZmVycxgEIAMoCzIkLnNpbHZhbmEub3JkZXJib29rLnYxLk9yZGVyYm9va0xldmVsEjEKDXNuYXBzaG90X3RpbWUYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIuoSChJTZXR0bGVtZW50UHJvcG9zYWwSEwoLcHJvcG9zYWxfaWQYASABKAkSEQoJbWFya2V0X2lkGAIgASgJEg0KBWJ1eWVyGAMgASgJEg4KBnNlbGxlchgEIAEoCRIVCg1iYXNlX3F1YW50aXR5GAUgASgJEhYKDnF1b3RlX3F1YW50aXR5GAYgASgJEhgKEHNldHRsZW1lbnRfcHJpY2UYByABKAkSNgoGc3RhdHVzGAggASgOMiYuc2lsdmFuYS5vcmRlcmJvb2sudjEuU2V0dGxlbWVudFN0YXR1cxIPCgd2ZXJzaW9uGAkgASgEEj0KF3ByZWNvbmZpcm1hdGlvbl9yZXF1ZXN0GAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEkgKH3ByZWNvbmZpcm1hdGlvbl9yZXF1ZXN0X3NlbnRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESOwoVYnV5ZXJfcHJlY29uZmlybWF0aW9uGAwgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEkoKIWJ1eWVyX3ByZWNvbmZpcm1hdGlvbl9yZWNlaXZlZF9hdBgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIA4gBARI8ChZzZWxsZXJfcHJlY29uZmlybWF0aW9uGA4gASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEksKInNlbGxlcl9wcmVjb25maXJtYXRpb25fcmVjZWl2ZWRfYXQYDyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESHQoQZHZwX3Byb3Bvc2FsX2NpZBgQIAEoCUgGiAEBEiMKFmR2cF9wcm9wb3NhbF91cGRhdGVfaWQYESABKAlIB4gBARIUCgdkdnBfY2lkGBIgASgJSAiIAQESGgoNZHZwX3VwZGF0ZV9pZBgTIAEoCUgJiAEBEiEKFGFsbG9jYXRpb25fYnV5ZXJfY2lkGBUgASgJSAqIAQESJwoaYWxsb2NhdGlvbl9idXllcl91cGRhdGVfaWQYFiABKAlIC4gBARIiChVhbGxvY2F0aW9uX3NlbGxlcl9jaWQYFyABKAlIDIgBARIoChthbGxvY2F0aW9uX3NlbGxlcl91cGRhdGVfaWQYGCABKAlIDYgBARIcCg9zZXR0bGVkX2R2cF9jaWQYGSABKAlIDogBARIhChRzZXR0bGVtZW50X3VwZGF0ZV9pZBgaIAEoCUgPiAEBEikKHHNldHRsZW1lbnRfY29tcGxldGlvbl9vZmZzZXQYGyABKAlIEIgBARIuCgpjcmVhdGVkX2F0GBwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI4Cg9wcmVjb25maXJtZWRfYXQYHSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSBGIAQESNwoOZHZwX2NyZWF0ZWRfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSBKIAQESOAoPZHZwX2FjY2VwdGVkX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgTiAEBEjUKDGFsbG9jYXRlZF9hdBggIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIFIgBARIzCgpzZXR0bGVkX2F0GCEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgViAEBEjUKDGNhbmNlbGxlZF9hdBgiIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIFogBARIyCglmYWlsZWRfYXQYIyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSBeIAQESGgoNZXJyb3JfbWVzc2FnZRgkIAEoCUgYiAEBEi4KCG1ldGFkYXRhGCUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgZiAEBEhEKCWJ1eWVyX2ZlZRgmIAEoCRISCgpzZWxsZXJfZmVlGCcgASgJEhsKDmJ1eWVyX2ZlZV9zZW50GCggASgISBqIAQESHAoPc2VsbGVyX2ZlZV9zZW50GCkgASgISBuIAQESHwoSYnV5ZXJfZmVlX3JlY2VpdmVkGCogASgISByIAQESIAoTc2VsbGVyX2ZlZV9yZWNlaXZlZBgrIAEoCEgdiAEBQhoKGF9wcmVjb25maXJtYXRpb25fcmVxdWVzdEIiCiBfcHJlY29uZmlybWF0aW9uX3JlcXVlc3Rfc2VudF9hdEIYChZfYnV5ZXJfcHJlY29uZmlybWF0aW9uQiQKIl9idXllcl9wcmVjb25maXJtYXRpb25fcmVjZWl2ZWRfYXRCGQoXX3NlbGxlcl9wcmVjb25maXJtYXRpb25CJQojX3NlbGxlcl9wcmVjb25maXJtYXRpb25fcmVjZWl2ZWRfYXRCEwoRX2R2cF9wcm9wb3NhbF9jaWRCGQoXX2R2cF9wcm9wb3NhbF91cGRhdGVfaWRCCgoIX2R2cF9jaWRCEAoOX2R2cF91cGRhdGVfaWRCFwoVX2FsbG9jYXRpb25fYnV5ZXJfY2lkQh0KG19hbGxvY2F0aW9uX2J1eWVyX3VwZGF0ZV9pZEIYChZfYWxsb2NhdGlvbl9zZWxsZXJfY2lkQh4KHF9hbGxvY2F0aW9uX3NlbGxlcl91cGRhdGVfaWRCEgoQX3NldHRsZWRfZHZwX2NpZEIXChVfc2V0dGxlbWVudF91cGRhdGVfaWRCHwodX3NldHRsZW1lbnRfY29tcGxldGlvbl9vZmZzZXRCEgoQX3ByZWNvbmZpcm1lZF9hdEIRCg9fZHZwX2NyZWF0ZWRfYXRCEgoQX2R2cF9hY2NlcHRlZF9hdEIPCg1fYWxsb2NhdGVkX2F0Qg0KC19zZXR0bGVkX2F0Qg8KDV9jYW5jZWxsZWRfYXRCDAoKX2ZhaWxlZF9hdEIQCg5fZXJyb3JfbWVzc2FnZUILCglfbWV0YWRhdGFCEQoPX2J1eWVyX2ZlZV9zZW50QhIKEF9zZWxsZXJfZmVlX3NlbnRCFQoTX2J1eWVyX2ZlZV9yZWNlaXZlZEIWChRfc2VsbGVyX2ZlZV9yZWNlaXZlZCK7AQoKT3JkZXJNYXRjaBIeChZzZXR0bGVtZW50X3Byb3Bvc2FsX2lkGAEgASgJEhQKDGJpZF9vcmRlcl9pZBgCIAEoBBIWCg5vZmZlcl9vcmRlcl9pZBgDIAEoBBIYChBtYXRjaGVkX3F1YW50aXR5GAQgASgJEhUKDW1hdGNoZWRfcHJpY2UYBSABKAkSLgoKY3JlYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAihwMKClNldHRsZW1lbnQSFQoNc2V0dGxlbWVudF9pZBgBIAEoBBITCgtwcm9wb3NhbF9pZBgCIAEoCRIRCgltYXJrZXRfaWQYAyABKAkSDQoFYnV5ZXIYBCABKAkSDgoGc2VsbGVyGAUgASgJEhUKDWJhc2VfcXVhbnRpdHkYBiABKAkSFgoOcXVvdGVfcXVhbnRpdHkYByABKAkSGAoQc2V0dGxlbWVudF9wcmljZRgIIAEoCRIXCg9zZXR0bGVkX2R2cF9jaWQYCSABKAkSHAoUc2V0dGxlbWVudF91cGRhdGVfaWQYCiABKAkSLgoKc2V0dGxlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKY3JlYXRlZF9hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoIbWV0YWRhdGEYDSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCCwoJX21ldGFkYXRhIpUCCgpNYXJrZXREYXRhEhEKCW1hcmtldF9pZBgBIAEoCRITCgtwYWlyX3N5bWJvbBgCIAEoCRIVCghiZXN0X2JpZBgDIAEoCUgAiAEBEhcKCmJlc3Rfb2ZmZXIYBCABKAlIAYgBARIXCgpsYXN0X3ByaWNlGAUgASgJSAKIAQESEgoKdm9sdW1lXzI0aBgGIAEoCRISCgp0cmFkZXNfMjRoGAcgASgNEhMKC29wZW5fb3JkZXJzGAggASgNEi4KCnVwZGF0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgsKCV9iZXN0X2JpZEINCgtfYmVzdF9vZmZlckINCgtfbGFzdF9wcmljZSKBAwoQR2V0T3JkZXJzUmVxdWVzdBIrCgRhdXRoGAEgASgLMh0uc2lsdmFuYS5vcmRlcmJvb2sudjEuSldUQXV0aBIWCgltYXJrZXRfaWQYAiABKAlIAIgBARI2CgZzdGF0dXMYAyABKA4yIS5zaWx2YW5hLm9yZGVyYm9vay52MS5PcmRlclN0YXR1c0gBiAEBEjgKCm9yZGVyX3R5cGUYBCABKA4yHy5zaWx2YW5hLm9yZGVyYm9vay52MS5PcmRlclR5cGVIAogBARISCgVsaW1pdBgFIAEoDUgDiAEBEhMKBm9mZnNldBgGIAEoDUgEiAEBEj4KDWV4dGVybmFsX2F1dGgYCiABKAsyIi5zaWx2YW5hLm9yZGVyYm9vay52MS5FeHRlcm5hbEF1dGhIBYgBAUIMCgpfbWFya2V0X2lkQgkKB19zdGF0dXNCDQoLX29yZGVyX3R5cGVCCAoGX2xpbWl0QgkKB19vZmZzZXRCEAoOX2V4dGVybmFsX2F1dGgicQoRR2V0T3JkZXJzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJEisKBm9yZGVycxgDIAMoCzIbLnNpbHZhbmEub3JkZXJib29rLnYxLk9yZGVyEg0KBXRvdGFsGAQgASgNIsoBChhHZXRPcmRlcmJvb2tEZXB0aFJlcXVlc3QSKwoEYXV0aBgBIAEoCzIdLnNpbHZhbmEub3JkZXJib29rLnYxLkpXVEF1dGgSEQoJbWFya2V0X2lkGAIgASgJEhIKBWRlcHRoGAMgASgNSACIAQESPgoNZXh0ZXJuYWxfYXV0aBgKIAEoCzIiLnNpbHZhbmEub3JkZXJib29rLnYxLkV4dGVybmFsQXV0aEgBiAEBQggKBl9kZXB0aEIQCg5fZXh0ZXJuYWxfYXV0aCJ2ChlHZXRPcmRlcmJvb2tEZXB0aFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCRI3CglvcmRlcmJvb2sYAyABKAsyJC5zaWx2YW5hLm9yZGVyYm9vay52MS5PcmRlcmJvb2tEZXB0aCLKAgodR2V0U2V0dGxlbWVudFByb3Bvc2Fsc1JlcXVlc3QSKwoEYXV0aBgBIAEoCzIdLnNpbHZhbmEub3JkZXJib29rLnYxLkpXVEF1dGgSFgoJbWFya2V0X2lkGAIgASgJSACIAQESOwoGc3RhdHVzGAMgASgOMiYuc2lsdmFuYS5vcmRlcmJvb2sudjEuU2V0dGxlbWVudFN0YXR1c0gBiAEBEhIKBWxpbWl0GAQgASgNSAKIAQESEwoGb2Zmc2V0GAUgASgNSAOIAQESPgoNZXh0ZXJuYWxfYXV0aBgKIAEoCzIiLnNpbHZhbmEub3JkZXJib29rLnYxLkV4dGVybmFsQXV0aEgEiAEBQgwKCl9tYXJrZXRfaWRCCQoHX3N0YXR1c0IICgZfbGltaXRCCQoHX29mZnNldEIQCg5fZXh0ZXJuYWxfYXV0aCKOAQoeR2V0U2V0dGxlbWVudFByb3Bvc2Fsc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCRI7Cglwcm9wb3NhbHMYAyADKAsyKC5zaWx2YW5hLm9yZGVyYm9vay52MS5TZXR0bGVtZW50UHJvcG9zYWwSDQoFdG90YWwYBCABKA0isgEKHEdldFNldHRsZW1lbnRQcm9wb3NhbFJlcXVlc3QSKwoEYXV0aBgBIAEoCzIdLnNpbHZhbmEub3JkZXJib29rLnYxLkpXVEF1dGgSEwoLcHJvcG9zYWxfaWQYAiABKAkSPgoNZXh0ZXJuYWxfYXV0aBgKIAEoCzIiLnNpbHZhbmEub3JkZXJib29rLnYxLkV4dGVybmFsQXV0aEgAiAEBQhAKDl9leHRlcm5hbF9hdXRoIo8BCh1HZXRTZXR0bGVtZW50UHJvcG9zYWxSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEg8KB21lc3NhZ2UYAiABKAkSPwoIcHJvcG9zYWwYAyABKAsyKC5zaWx2YW5hLm9yZGVyYm9vay52MS5TZXR0bGVtZW50UHJvcG9zYWxIAIgBAUILCglfcHJvcG9zYWwihgIKFUdldEluc3RydW1lbnRzUmVxdWVzdBIrCgRhdXRoGAEgASgLMh0uc2lsdmFuYS5vcmRlcmJvb2sudjEuSldUQXV0aBIcCg9pbnN0cnVtZW50X3R5cGUYAiABKAlIAIgBARISCgVsaW1pdBgDIAEoDUgBiAEBEhMKBm9mZnNldBgEIAEoDUgCiAEBEj4KDWV4dGVybmFsX2F1dGgYCiABKAsyIi5zaWx2YW5hLm9yZGVyYm9vay52MS5FeHRlcm5hbEF1dGhIA4gBAUISChBfaW5zdHJ1bWVudF90eXBlQggKBl9saW1pdEIJCgdfb2Zmc2V0QhAKDl9leHRlcm5hbF9hdXRoIoABChZHZXRJbnN0cnVtZW50c1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCRI1CgtpbnN0cnVtZW50cxgDIAMoCzIgLnNpbHZhbmEub3JkZXJib29rLnYxLkluc3RydW1lbnQSDQoFdG90YWwYBCABKA0irAMKEUdldE1hcmtldHNSZXF1ZXN0EisKBGF1dGgYASABKAsyHS5zaWx2YW5hLm9yZGVyYm9vay52MS5KV1RBdXRoEjoKC21hcmtldF90eXBlGAIgASgOMiAuc2lsdmFuYS5vcmRlcmJvb2sudjEuTWFya2V0VHlwZUgAiAEBEhwKD2Jhc2VfaW5zdHJ1bWVudBgDIAEoCUgBiAEBEh0KEHF1b3RlX2luc3RydW1lbnQYBCABKAlIAogBARIYCgthY3RpdmVfb25seRgFIAEoCEgDiAEBEhIKBWxpbWl0GAYgASgNSASIAQESEwoGb2Zmc2V0GAcgASgNSAWIAQESPgoNZXh0ZXJuYWxfYXV0aBgKIAEoCzIiLnNpbHZhbmEub3JkZXJib29rLnYxLkV4dGVybmFsQXV0aEgGiAEBQg4KDF9tYXJrZXRfdHlwZUISChBfYmFzZV9pbnN0cnVtZW50QhMKEV9xdW90ZV9pbnN0cnVtZW50Qg4KDF9hY3RpdmVfb25seUIICgZfbGltaXRCCQoHX29mZnNldEIQCg5fZXh0ZXJuYWxfYXV0aCJ0ChJHZXRNYXJrZXRzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJEi0KB21hcmtldHMYAyADKAsyHC5zaWx2YW5hLm9yZGVyYm9vay52MS5NYXJrZXQSDQoFdG90YWwYBCABKA0i+wIKFkdldE9yZGVySGlzdG9yeVJlcXVlc3QSKwoEYXV0aBgBIAEoCzIdLnNpbHZhbmEub3JkZXJib29rLnYxLkpXVEF1dGgSFgoJbWFya2V0X2lkGAIgASgJSACIAQESMgoJZnJvbV90aW1lGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEjAKB3RvX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESEgoFbGltaXQYBSABKA1IA4gBARITCgZvZmZzZXQYBiABKA1IBIgBARI+Cg1leHRlcm5hbF9hdXRoGAogASgLMiIuc2lsdmFuYS5vcmRlcmJvb2sudjEuRXh0ZXJuYWxBdXRoSAWIAQFCDAoKX21hcmtldF9pZEIMCgpfZnJvbV90aW1lQgoKCF90b190aW1lQggKBl9saW1pdEIJCgdfb2Zmc2V0QhAKDl9leHRlcm5hbF9hdXRoIncKF0dldE9yZGVySGlzdG9yeVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCRIrCgZvcmRlcnMYAyADKAsyGy5zaWx2YW5hLm9yZGVyYm9vay52MS5PcmRlchINCgV0b3RhbBgEIAEoDSKpAQoUR2V0TWFya2V0RGF0YVJlcXVlc3QSKwoEYXV0aBgBIAEoCzIdLnNpbHZhbmEub3JkZXJib29rLnYxLkpXVEF1dGgSEgoKbWFya2V0X2lkcxgCIAMoCRI+Cg1leHRlcm5hbF9hdXRoGAogASgLMiIuc2lsdmFuYS5vcmRlcmJvb2sudjEuRXh0ZXJuYWxBdXRoSACIAQFCEAoOX2V4dGVybmFsX2F1dGgicAoVR2V0TWFya2V0RGF0YVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCRI1CgttYXJrZXRfZGF0YRgDIAMoCzIgLnNpbHZhbmEub3JkZXJib29rLnYxLk1hcmtldERhdGEi+gIKFUdldFNldHRsZW1lbnRzUmVxdWVzdBIrCgRhdXRoGAEgASgLMh0uc2lsdmFuYS5vcmRlcmJvb2sudjEuSldUQXV0aBIWCgltYXJrZXRfaWQYAiABKAlIAIgBARIyCglmcm9tX3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESMAoHdG9fdGltZRgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARISCgVsaW1pdBgFIAEoDUgDiAEBEhMKBm9mZnNldBgGIAEoDUgEiAEBEj4KDWV4dGVybmFsX2F1dGgYCiABKAsyIi5zaWx2YW5hLm9yZGVyYm9vay52MS5FeHRlcm5hbEF1dGhIBYgBAUIMCgpfbWFya2V0X2lkQgwKCl9mcm9tX3RpbWVCCgoIX3RvX3RpbWVCCAoGX2xpbWl0QgkKB19vZmZzZXRCEAoOX2V4dGVybmFsX2F1dGgigAEKFkdldFNldHRsZW1lbnRzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJEjUKC3NldHRsZW1lbnRzGAMgAygLMiAuc2lsdmFuYS5vcmRlcmJvb2sudjEuU2V0dGxlbWVudBINCgV0b3RhbBgEIAEoDSLLAQoZU3Vic2NyaWJlT3JkZXJib29rUmVxdWVzdBIrCgRhdXRoGAEgASgLMh0uc2lsdmFuYS5vcmRlcmJvb2sudjEuSldUQXV0aBIRCgltYXJrZXRfaWQYAiABKAkSEgoFZGVwdGgYAyABKA1IAIgBARI+Cg1leHRlcm5hbF9hdXRoGAogASgLMiIuc2lsdmFuYS5vcmRlcmJvb2sudjEuRXh0ZXJuYWxBdXRoSAGIAQFCCAoGX2RlcHRoQhAKDl9leHRlcm5hbF9hdXRoIocDCg9PcmRlcmJvb2tVcGRhdGUSEQoJbWFya2V0X2lkGAEgASgJEkUKC3VwZGF0ZV90eXBlGAIgASgOMjAuc2lsdmFuYS5vcmRlcmJvb2sudjEuT3JkZXJib29rVXBkYXRlLlVwZGF0ZVR5cGUSOQoLYmlkX3VwZGF0ZXMYAyADKAsyJC5zaWx2YW5hLm9yZGVyYm9vay52MS5PcmRlcmJvb2tMZXZlbBI7Cg1vZmZlcl91cGRhdGVzGAQgAygLMiQuc2lsdmFuYS5vcmRlcmJvb2sudjEuT3JkZXJib29rTGV2ZWwSLQoJdGltZXN0YW1wGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCg9zZXF1ZW5jZV9udW1iZXIYBiABKAQiWgoKVXBkYXRlVHlwZRIbChdVUERBVEVfVFlQRV9VTlNQRUNJRklFRBAAEhgKFFVQREFURV9UWVBFX1NOQVBTSE9UEAESFQoRVVBEQVRFX1RZUEVfREVMVEEQAiK9AQoWU3Vic2NyaWJlT3JkZXJzUmVxdWVzdBIrCgRhdXRoGAEgASgLMh0uc2lsdmFuYS5vcmRlcmJvb2sudjEuSldUQXV0aBIWCgltYXJrZXRfaWQYAiABKAlIAIgBARI+Cg1leHRlcm5hbF9hdXRoGAogASgLMiIuc2lsdmFuYS5vcmRlcmJvb2sudjEuRXh0ZXJuYWxBdXRoSAGIAQFCDAoKX21hcmtldF9pZEIQCg5fZXh0ZXJuYWxfYXV0aCKtAwoLT3JkZXJVcGRhdGUSPwoKZXZlbnRfdHlwZRgBIAEoDjIrLnNpbHZhbmEub3JkZXJib29rLnYxLk9yZGVyVXBkYXRlLkV2ZW50VHlwZRIqCgVvcmRlchgCIAEoCzIbLnNpbHZhbmEub3JkZXJib29rLnYxLk9yZGVyEjQKBW1hdGNoGAMgASgLMiAuc2lsdmFuYS5vcmRlcmJvb2sudjEuT3JkZXJNYXRjaEgAiAEBEi0KCXRpbWVzdGFtcBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiwQEKCUV2ZW50VHlwZRIaChZFVkVOVF9UWVBFX1VOU1BFQ0lGSUVEEAASFgoSRVZFTlRfVFlQRV9DUkVBVEVEEAESFgoSRVZFTlRfVFlQRV9VUERBVEVEEAISFQoRRVZFTlRfVFlQRV9GSUxMRUQQAxIfChtFVkVOVF9UWVBFX1BBUlRJQUxMWV9GSUxMRUQQBBIYChRFVkVOVF9UWVBFX0NBTkNFTExFRBAFEhYKEkVWRU5UX1RZUEVfRVhQSVJFRBAGQggKBl9tYXRjaCLCAQobU3Vic2NyaWJlU2V0dGxlbWVudHNSZXF1ZXN0EisKBGF1dGgYASABKAsyHS5zaWx2YW5hLm9yZGVyYm9vay52MS5KV1RBdXRoEhYKCW1hcmtldF9pZBgCIAEoCUgAiAEBEj4KDWV4dGVybmFsX2F1dGgYCiABKAsyIi5zaWx2YW5hLm9yZGVyYm9vay52MS5FeHRlcm5hbEF1dGhIAYgBAUIMCgpfbWFya2V0X2lkQhAKDl9leHRlcm5hbF9hdXRoIokEChBTZXR0bGVtZW50VXBkYXRlEkQKCmV2ZW50X3R5cGUYASABKA4yMC5zaWx2YW5hLm9yZGVyYm9vay52MS5TZXR0bGVtZW50VXBkYXRlLkV2ZW50VHlwZRI6Cghwcm9wb3NhbBgCIAEoCzIoLnNpbHZhbmEub3JkZXJib29rLnYxLlNldHRsZW1lbnRQcm9wb3NhbBItCgl0aW1lc3RhbXAYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIsMCCglFdmVudFR5cGUSGgoWRVZFTlRfVFlQRV9VTlNQRUNJRklFRBAAEh8KG0VWRU5UX1RZUEVfUFJPUE9TQUxfQ1JFQVRFRBABEigKJEVWRU5UX1RZUEVfUFJFQ09ORklSTUFUSU9OX1JFUVVFU1RFRBACEhsKF0VWRU5UX1RZUEVfUFJFQ09ORklSTUVEEAMSGgoWRVZFTlRfVFlQRV9EVlBfQ1JFQVRFRBAEEhsKF0VWRU5UX1RZUEVfRFZQX0FDQ0VQVEVEEAUSGAoURVZFTlRfVFlQRV9BTExPQ0FURUQQBhIWChJFVkVOVF9UWVBFX1NFVFRMRUQQBxIVChFFVkVOVF9UWVBFX0ZBSUxFRBAIEhgKFEVWRU5UX1RZUEVfQ0FOQ0VMTEVEEAkSFgoSRVZFTlRfVFlQRV9VUERBVEVEEAoi8wQKElN1Ym1pdE9yZGVyUmVxdWVzdBIrCgRhdXRoGAEgASgLMh0uc2lsdmFuYS5vcmRlcmJvb2sudjEuSldUQXV0aBIRCgltYXJrZXRfaWQYAiABKAkSMwoKb3JkZXJfdHlwZRgDIAEoDjIfLnNpbHZhbmEub3JkZXJib29rLnYxLk9yZGVyVHlwZRINCgVwcmljZRgEIAEoCRIQCghxdWFudGl0eRgFIAEoCRI4Cg10aW1lX2luX2ZvcmNlGAYgASgOMiEuc2lsdmFuYS5vcmRlcmJvb2sudjEuVGltZUluRm9yY2USMwoKZXhwaXJlc19hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIdChB0cmFkZXJfb3JkZXJfcmVmGAggASgJSAGIAQESMQoLY3JlZGVudGlhbHMYCSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQESMgoMcmVxdWlyZW1lbnRzGAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEi4KCG1ldGFkYXRhGAsgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEj4KDWV4dGVybmFsX2F1dGgYDyABKAsyIi5zaWx2YW5hLm9yZGVyYm9vay52MS5FeHRlcm5hbEF1dGhIBYgBAUINCgtfZXhwaXJlc19hdEITChFfdHJhZGVyX29yZGVyX3JlZkIOCgxfY3JlZGVudGlhbHNCDwoNX3JlcXVpcmVtZW50c0ILCglfbWV0YWRhdGFCEAoOX2V4dGVybmFsX2F1dGgicgoTU3VibWl0T3JkZXJSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEg8KB21lc3NhZ2UYAiABKAkSLwoFb3JkZXIYAyABKAsyGy5zaWx2YW5hLm9yZGVyYm9vay52MS5PcmRlckgAiAEBQggKBl9vcmRlciKlAQoSQ2FuY2VsT3JkZXJSZXF1ZXN0EisKBGF1dGgYASABKAsyHS5zaWx2YW5hLm9yZGVyYm9vay52MS5KV1RBdXRoEhAKCG9yZGVyX2lkGAIgASgEEj4KDWV4dGVybmFsX2F1dGgYCiABKAsyIi5zaWx2YW5hLm9yZGVyYm9vay52MS5FeHRlcm5hbEF1dGhIAIgBAUIQCg5fZXh0ZXJuYWxfYXV0aCJyChNDYW5jZWxPcmRlclJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCRIvCgVvcmRlchgDIAEoCzIbLnNpbHZhbmEub3JkZXJib29rLnYxLk9yZGVySACIAQFCCAoGX29yZGVyIugDChJDcmVhdGVQYXJ0eVJlcXVlc3QSKwoEYXV0aBgBIAEoCzIdLnNpbHZhbmEub3JkZXJib29rLnYxLkpXVEF1dGgSEAoIcGFydHlfaWQYAiABKAkSEgoKcGFydHlfbmFtZRgDIAEoCRISCgpwYXJ0eV90eXBlGAQgASgJEh0KEHVzZXJfc2VydmljZV9jaWQYBSABKAlIAIgBARIgChNvcGVyYXRvcl9jb25maWdfY2lkGAYgASgJSAGIAQESLgoIbWV0YWRhdGEYByABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQESJQoYdXNlcl9zZXJ2aWNlX3JlcXVlc3RfY2lkGAggASgJSAOIAQESKgoJdXNlcl9kYXRhGAkgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBI+Cg1leHRlcm5hbF9hdXRoGA8gASgLMiIuc2lsdmFuYS5vcmRlcmJvb2sudjEuRXh0ZXJuYWxBdXRoSASIAQFCEwoRX3VzZXJfc2VydmljZV9jaWRCFgoUX29wZXJhdG9yX2NvbmZpZ19jaWRCCwoJX21ldGFkYXRhQhsKGV91c2VyX3NlcnZpY2VfcmVxdWVzdF9jaWRCEAoOX2V4dGVybmFsX2F1dGgiYwoTQ3JlYXRlUGFydHlSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEg8KB21lc3NhZ2UYAiABKAkSKgoFcGFydHkYAyABKAsyGy5zaWx2YW5hLm9yZGVyYm9vay52MS5QYXJ0eSLDBAoSVXBkYXRlUGFydHlSZXF1ZXN0EisKBGF1dGgYASABKAsyHS5zaWx2YW5hLm9yZGVyYm9vay52MS5KV1RBdXRoEhAKCHBhcnR5X2lkGAIgASgJEhgKEGV4cGVjdGVkX3ZlcnNpb24YAyABKAQSFwoKcGFydHlfbmFtZRgEIAEoCUgAiAEBEh0KEHVzZXJfc2VydmljZV9jaWQYBSABKAlIAYgBARIgChNvcGVyYXRvcl9jb25maWdfY2lkGAYgASgJSAKIAQESJQoYdXNlcl9zZXJ2aWNlX3JlcXVlc3RfY2lkGAcgASgJSAOIAQESLwoJdXNlcl9kYXRhGAggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEi4KCG1ldGFkYXRhGAkgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgFiAEBEhoKDWNoYW5nZV9yZWFzb24YCiABKAlIBogBARI+Cg1leHRlcm5hbF9hdXRoGA8gASgLMiIuc2lsdmFuYS5vcmRlcmJvb2sudjEuRXh0ZXJuYWxBdXRoSAeIAQFCDQoLX3BhcnR5X25hbWVCEwoRX3VzZXJfc2VydmljZV9jaWRCFgoUX29wZXJhdG9yX2NvbmZpZ19jaWRCGwoZX3VzZXJfc2VydmljZV9yZXF1ZXN0X2NpZEIMCgpfdXNlcl9kYXRhQgsKCV9tZXRhZGF0YUIQCg5fY2hhbmdlX3JlYXNvbkIQCg5fZXh0ZXJuYWxfYXV0aCJjChNVcGRhdGVQYXJ0eVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCRIqCgVwYXJ0eRgDIAEoCzIbLnNpbHZhbmEub3JkZXJib29rLnYxLlBhcnR5ItoBChZEZWFjdGl2YXRlUGFydHlSZXF1ZXN0EisKBGF1dGgYASABKAsyHS5zaWx2YW5hLm9yZGVyYm9vay52MS5KV1RBdXRoEhAKCHBhcnR5X2lkGAIgASgJEhgKEGV4cGVjdGVkX3ZlcnNpb24YAyABKAQSFQoNY2hhbmdlX3JlYXNvbhgEIAEoCRI+Cg1leHRlcm5hbF9hdXRoGAogASgLMiIuc2lsdmFuYS5vcmRlcmJvb2sudjEuRXh0ZXJuYWxBdXRoSACIAQFCEAoOX2V4dGVybmFsX2F1dGgiZwoXRGVhY3RpdmF0ZVBhcnR5UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJEioKBXBhcnR5GAMgASgLMhsuc2lsdmFuYS5vcmRlcmJvb2sudjEuUGFydHki5wEKFkdldFBhcnR5SGlzdG9yeVJlcXVlc3QSKwoEYXV0aBgBIAEoCzIdLnNpbHZhbmEub3JkZXJib29rLnYxLkpXVEF1dGgSEAoIcGFydHlfaWQYAiABKAkSEgoFbGltaXQYAyABKA1IAIgBARITCgZvZmZzZXQYBCABKA1IAYgBARI+Cg1leHRlcm5hbF9hdXRoGAogASgLMiIuc2lsdmFuYS5vcmRlcmJvb2sudjEuRXh0ZXJuYWxBdXRoSAKIAQFCCAoGX2xpbWl0QgkKB19vZmZzZXRCEAoOX2V4dGVybmFsX2F1dGgigQIKEVBhcnR5SGlzdG9yeUVudHJ5EhIKCmhpc3RvcnlfaWQYASABKAQSEAoIcGFydHlfaWQYAiABKAkSDgoGYWN0aW9uGAMgASgJEhIKCmNoYW5nZWRfYnkYBCABKAkSGgoNY2hhbmdlX3JlYXNvbhgFIAEoCUgAiAEBEg8KB3ZlcnNpb24YBiABKAQSMwoOcGFydHlfc25hcHNob3QYByABKAsyGy5zaWx2YW5hLm9yZGVyYm9vay52MS5QYXJ0eRIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIQCg5fY2hhbmdlX3JlYXNvbiKEAQoXR2V0UGFydHlIaXN0b3J5UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJEjgKB2hpc3RvcnkYAyADKAsyJy5zaWx2YW5hLm9yZGVyYm9vay52MS5QYXJ0eUhpc3RvcnlFbnRyeRINCgV0b3RhbBgEIAEoDSKiAQoPR2V0UGFydHlSZXF1ZXN0EisKBGF1dGgYASABKAsyHS5zaWx2YW5hLm9yZGVyYm9vay52MS5KV1RBdXRoEhAKCHBhcnR5X2lkGAIgASgJEj4KDWV4dGVybmFsX2F1dGgYCiABKAsyIi5zaWx2YW5hLm9yZGVyYm9vay52MS5FeHRlcm5hbEF1dGhIAIgBAUIQCg5fZXh0ZXJuYWxfYXV0aCJgChBHZXRQYXJ0eVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCRIqCgVwYXJ0eRgDIAEoCzIbLnNpbHZhbmEub3JkZXJib29rLnYxLlBhcnR5IqICChFHZXRQYXJ0aWVzUmVxdWVzdBIrCgRhdXRoGAEgASgLMh0uc2lsdmFuYS5vcmRlcmJvb2sudjEuSldUQXV0aBIXCgpwYXJ0eV90eXBlGAIgASgJSACIAQESGAoLYWN0aXZlX29ubHkYAyABKAhIAYgBARISCgVsaW1pdBgEIAEoDUgCiAEBEhMKBm9mZnNldBgFIAEoDUgDiAEBEj4KDWV4dGVybmFsX2F1dGgYCiABKAsyIi5zaWx2YW5hLm9yZGVyYm9vay52MS5FeHRlcm5hbEF1dGhIBIgBAUINCgtfcGFydHlfdHlwZUIOCgxfYWN0aXZlX29ubHlCCAoGX2xpbWl0QgkKB19vZmZzZXRCEAoOX2V4dGVybmFsX2F1dGgicwoSR2V0UGFydGllc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCRIsCgdwYXJ0aWVzGAMgAygLMhsuc2lsdmFuYS5vcmRlcmJvb2sudjEuUGFydHkSDQoFdG90YWwYBCABKA0i4AMKBVBhcnR5EhAKCHBhcnR5X2lkGAEgASgJEhIKCnBhcnR5X25hbWUYAiABKAkSEgoKcGFydHlfdHlwZRgDIAEoCRIdChB1c2VyX3NlcnZpY2VfY2lkGAQgASgJSACIAQESIAoTb3BlcmF0b3JfY29uZmlnX2NpZBgFIAEoCUgBiAEBEhEKCWlzX2FjdGl2ZRgGIAEoCBIuCghtZXRhZGF0YRgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIlChh1c2VyX3NlcnZpY2VfcmVxdWVzdF9jaWQYCiABKAlIA4gBARIqCgl1c2VyX2RhdGEYCyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eg8KB3ZlcnNpb24YDCABKARCEwoRX3VzZXJfc2VydmljZV9jaWRCFgoUX29wZXJhdG9yX2NvbmZpZ19jaWRCCwoJX21ldGFkYXRhQhsKGV91c2VyX3NlcnZpY2VfcmVxdWVzdF9jaWQipgMKF0NyZWF0ZUluc3RydW1lbnRSZXF1ZXN0EisKBGF1dGgYASABKAsyHS5zaWx2YW5hLm9yZGVyYm9vay52MS5KV1RBdXRoEhUKDWluc3RydW1lbnRfaWQYAiABKAkSFwoPaW5zdHJ1bWVudF90eXBlGAMgASgJEgwKBG5hbWUYBCABKAkSDgoGc3ltYm9sGAUgASgJEhgKC2Rlc2NyaXB0aW9uGAYgASgJSACIAQESEwoGaXNzdWVyGAcgASgJSAGIAQESFQoIcmVnaXN0cnkYCCABKAlIAogBARIuCghtZXRhZGF0YRgJIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARITCgtuZXdzX3N5bWJvbBgKIAEoCRI+Cg1leHRlcm5hbF9hdXRoGA8gASgLMiIuc2lsdmFuYS5vcmRlcmJvb2sudjEuRXh0ZXJuYWxBdXRoSASIAQFCDgoMX2Rlc2NyaXB0aW9uQgkKB19pc3N1ZXJCCwoJX3JlZ2lzdHJ5QgsKCV9tZXRhZGF0YUIQCg5fZXh0ZXJuYWxfYXV0aCJyChhDcmVhdGVJbnN0cnVtZW50UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJEjQKCmluc3RydW1lbnQYAyABKAsyIC5zaWx2YW5hLm9yZGVyYm9vay52MS5JbnN0cnVtZW50IsUEChNDcmVhdGVNYXJrZXRSZXF1ZXN0EisKBGF1dGgYASABKAsyHS5zaWx2YW5hLm9yZGVyYm9vay52MS5KV1RBdXRoEhEKCW1hcmtldF9pZBgCIAEoCRI1CgttYXJrZXRfdHlwZRgDIAEoDjIgLnNpbHZhbmEub3JkZXJib29rLnYxLk1hcmtldFR5cGUSHAoPYmFzZV9pbnN0cnVtZW50GAQgASgJSACIAQESHQoQcXVvdGVfaW5zdHJ1bWVudBgFIAEoCUgBiAEBEhYKDm1pbl9vcmRlcl9zaXplGAYgASgJEhsKDm1heF9vcmRlcl9zaXplGAcgASgJSAKIAQESEQoJdGlja19zaXplGAggASgJEhEKCW1ha2VyX2ZlZRgJIAEoCRIRCgl0YWtlcl9mZWUYCiABKAkSLgoIbWV0YWRhdGEYCyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQESMQoLcHJpY2VfZmVlZHMYDCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQESPgoNZXh0ZXJuYWxfYXV0aBgPIAEoCzIiLnNpbHZhbmEub3JkZXJib29rLnYxLkV4dGVybmFsQXV0aEgFiAEBQhIKEF9iYXNlX2luc3RydW1lbnRCEwoRX3F1b3RlX2luc3RydW1lbnRCEQoPX21heF9vcmRlcl9zaXplQgsKCV9tZXRhZGF0YUIOCgxfcHJpY2VfZmVlZHNCEAoOX2V4dGVybmFsX2F1dGgiZgoUQ3JlYXRlTWFya2V0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJEiwKBm1hcmtldBgDIAEoCzIcLnNpbHZhbmEub3JkZXJib29rLnYxLk1hcmtldCLfAQodVXBkYXRlTWFya2V0UHJpY2VGZWVkc1JlcXVlc3QSKwoEYXV0aBgBIAEoCzIdLnNpbHZhbmEub3JkZXJib29rLnYxLkpXVEF1dGgSEQoJbWFya2V0X2lkGAIgASgJEiwKC3ByaWNlX2ZlZWRzGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBI+Cg1leHRlcm5hbF9hdXRoGAogASgLMiIuc2lsdmFuYS5vcmRlcmJvb2sudjEuRXh0ZXJuYWxBdXRoSACIAQFCEAoOX2V4dGVybmFsX2F1dGgicAoeVXBkYXRlTWFya2V0UHJpY2VGZWVkc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCRIsCgZtYXJrZXQYAyABKAsyHC5zaWx2YW5hLm9yZGVyYm9vay52MS5NYXJrZXQqUQoJT3JkZXJUeXBlEhoKFk9SREVSX1RZUEVfVU5TUEVDSUZJRUQQABISCg5PUkRFUl9UWVBFX0JJRBABEhQKEE9SREVSX1RZUEVfT0ZGRVIQAiqtAQoLT3JkZXJTdGF0dXMSHAoYT1JERVJfU1RBVFVTX1VOU1BFQ0lGSUVEEAASFwoTT1JERVJfU1RBVFVTX0FDVElWRRABEhgKFE9SREVSX1NUQVRVU19QQVJUSUFMEAISFwoTT1JERVJfU1RBVFVTX0ZJTExFRBADEhoKFk9SREVSX1NUQVRVU19DQU5DRUxMRUQQBBIYChRPUkRFUl9TVEFUVVNfRVhQSVJFRBAFKogBCgtUaW1lSW5Gb3JjZRIdChlUSU1FX0lOX0ZPUkNFX1VOU1BFQ0lGSUVEEAASFQoRVElNRV9JTl9GT1JDRV9HVEMQARIVChFUSU1FX0lOX0ZPUkNFX0lPQxACEhUKEVRJTUVfSU5fRk9SQ0VfRk9LEAMSFQoRVElNRV9JTl9GT1JDRV9HVEQQBCraAgoQU2V0dGxlbWVudFN0YXR1cxIhCh1TRVRUTEVNRU5UX1NUQVRVU19VTlNQRUNJRklFRBAAEh0KGVNFVFRMRU1FTlRfU1RBVFVTX0NSRUFURUQQARIiCh5TRVRUTEVNRU5UX1NUQVRVU19QUkVDT05GSVJNRUQQAhIpCiVTRVRUTEVNRU5UX1NUQVRVU19EVlBfUkVRVUVTVF9DUkVBVEVEEAMSKgomU0VUVExFTUVOVF9TVEFUVVNfRFZQX1JFUVVFU1RfQUNDRVBURUQQBBIrCidTRVRUTEVNRU5UX1NUQVRVU19JTlNUUlVNRU5UU19BTExPQ0FURUQQBRIdChlTRVRUTEVNRU5UX1NUQVRVU19TRVRUTEVEEAYSHwobU0VUVExFTUVOVF9TVEFUVVNfQ0FOQ0VMTEVEEAcSHAoYU0VUVExFTUVOVF9TVEFUVVNfRkFJTEVEEAgqdgoKTWFya2V0VHlwZRIbChdNQVJLRVRfVFlQRV9VTlNQRUNJRklFRBAAEhcKE01BUktFVF9UWVBFX0dFTkVSQUwQARIdChlNQVJLRVRfVFlQRV9JTlNUSVRVVElPTkFMEAISEwoPTUFSS0VUX1RZUEVfT1RDEAMy2xMKEE9yZGVyYm9va1NlcnZpY2USXAoJR2V0T3JkZXJzEiYuc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0T3JkZXJzUmVxdWVzdBonLnNpbHZhbmEub3JkZXJib29rLnYxLkdldE9yZGVyc1Jlc3BvbnNlEnQKEUdldE9yZGVyYm9va0RlcHRoEi4uc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0T3JkZXJib29rRGVwdGhSZXF1ZXN0Gi8uc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0T3JkZXJib29rRGVwdGhSZXNwb25zZRKDAQoWR2V0U2V0dGxlbWVudFByb3Bvc2FscxIzLnNpbHZhbmEub3JkZXJib29rLnYxLkdldFNldHRsZW1lbnRQcm9wb3NhbHNSZXF1ZXN0GjQuc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0U2V0dGxlbWVudFByb3Bvc2Fsc1Jlc3BvbnNlEoABChVHZXRTZXR0bGVtZW50UHJvcG9zYWwSMi5zaWx2YW5hLm9yZGVyYm9vay52MS5HZXRTZXR0bGVtZW50UHJvcG9zYWxSZXF1ZXN0GjMuc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0U2V0dGxlbWVudFByb3Bvc2FsUmVzcG9uc2USawoOR2V0SW5zdHJ1bWVudHMSKy5zaWx2YW5hLm9yZGVyYm9vay52MS5HZXRJbnN0cnVtZW50c1JlcXVlc3QaLC5zaWx2YW5hLm9yZGVyYm9vay52MS5HZXRJbnN0cnVtZW50c1Jlc3BvbnNlEl8KCkdldE1hcmtldHMSJy5zaWx2YW5hLm9yZGVyYm9vay52MS5HZXRNYXJrZXRzUmVxdWVzdBooLnNpbHZhbmEub3JkZXJib29rLnYxLkdldE1hcmtldHNSZXNwb25zZRJuCg9HZXRPcmRlckhpc3RvcnkSLC5zaWx2YW5hLm9yZGVyYm9vay52MS5HZXRPcmRlckhpc3RvcnlSZXF1ZXN0Gi0uc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0T3JkZXJIaXN0b3J5UmVzcG9uc2USaAoNR2V0TWFya2V0RGF0YRIqLnNpbHZhbmEub3JkZXJib29rLnYxLkdldE1hcmtldERhdGFSZXF1ZXN0Gisuc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0TWFya2V0RGF0YVJlc3BvbnNlEmsKDkdldFNldHRsZW1lbnRzEisuc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0U2V0dGxlbWVudHNSZXF1ZXN0Giwuc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0U2V0dGxlbWVudHNSZXNwb25zZRJiCgtTdWJtaXRPcmRlchIoLnNpbHZhbmEub3JkZXJib29rLnYxLlN1Ym1pdE9yZGVyUmVxdWVzdBopLnNpbHZhbmEub3JkZXJib29rLnYxLlN1Ym1pdE9yZGVyUmVzcG9uc2USYgoLQ2FuY2VsT3JkZXISKC5zaWx2YW5hLm9yZGVyYm9vay52MS5DYW5jZWxPcmRlclJlcXVlc3QaKS5zaWx2YW5hLm9yZGVyYm9vay52MS5DYW5jZWxPcmRlclJlc3BvbnNlElkKCEdldFBhcnR5EiUuc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0UGFydHlSZXF1ZXN0GiYuc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0UGFydHlSZXNwb25zZRJfCgpHZXRQYXJ0aWVzEicuc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0UGFydGllc1JlcXVlc3QaKC5zaWx2YW5hLm9yZGVyYm9vay52MS5HZXRQYXJ0aWVzUmVzcG9uc2USYgoLQ3JlYXRlUGFydHkSKC5zaWx2YW5hLm9yZGVyYm9vay52MS5DcmVhdGVQYXJ0eVJlcXVlc3QaKS5zaWx2YW5hLm9yZGVyYm9vay52MS5DcmVhdGVQYXJ0eVJlc3BvbnNlEmIKC1VwZGF0ZVBhcnR5Eiguc2lsdmFuYS5vcmRlcmJvb2sudjEuVXBkYXRlUGFydHlSZXF1ZXN0Gikuc2lsdmFuYS5vcmRlcmJvb2sudjEuVXBkYXRlUGFydHlSZXNwb25zZRJuCg9EZWFjdGl2YXRlUGFydHkSLC5zaWx2YW5hLm9yZGVyYm9vay52MS5EZWFjdGl2YXRlUGFydHlSZXF1ZXN0Gi0uc2lsdmFuYS5vcmRlcmJvb2sudjEuRGVhY3RpdmF0ZVBhcnR5UmVzcG9uc2USbgoPR2V0UGFydHlIaXN0b3J5Eiwuc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0UGFydHlIaXN0b3J5UmVxdWVzdBotLnNpbHZhbmEub3JkZXJib29rLnYxLkdldFBhcnR5SGlzdG9yeVJlc3BvbnNlEnEKEENyZWF0ZUluc3RydW1lbnQSLS5zaWx2YW5hLm9yZGVyYm9vay52MS5DcmVhdGVJbnN0cnVtZW50UmVxdWVzdBouLnNpbHZhbmEub3JkZXJib29rLnYxLkNyZWF0ZUluc3RydW1lbnRSZXNwb25zZRJlCgxDcmVhdGVNYXJrZXQSKS5zaWx2YW5hLm9yZGVyYm9vay52MS5DcmVhdGVNYXJrZXRSZXF1ZXN0Giouc2lsdmFuYS5vcmRlcmJvb2sudjEuQ3JlYXRlTWFya2V0UmVzcG9uc2USgwEKFlVwZGF0ZU1hcmtldFByaWNlRmVlZHMSMy5zaWx2YW5hLm9yZGVyYm9vay52MS5VcGRhdGVNYXJrZXRQcmljZUZlZWRzUmVxdWVzdBo0LnNpbHZhbmEub3JkZXJib29rLnYxLlVwZGF0ZU1hcmtldFByaWNlRmVlZHNSZXNwb25zZRJuChJTdWJzY3JpYmVPcmRlcmJvb2sSLy5zaWx2YW5hLm9yZGVyYm9vay52MS5TdWJzY3JpYmVPcmRlcmJvb2tSZXF1ZXN0GiUuc2lsdmFuYS5vcmRlcmJvb2sudjEuT3JkZXJib29rVXBkYXRlMAESZAoPU3Vic2NyaWJlT3JkZXJzEiwuc2lsdmFuYS5vcmRlcmJvb2sudjEuU3Vic2NyaWJlT3JkZXJzUmVxdWVzdBohLnNpbHZhbmEub3JkZXJib29rLnYxLk9yZGVyVXBkYXRlMAEScwoUU3Vic2NyaWJlU2V0dGxlbWVudHMSMS5zaWx2YW5hLm9yZGVyYm9vay52MS5TdWJzY3JpYmVTZXR0bGVtZW50c1JlcXVlc3QaJi5zaWx2YW5hLm9yZGVyYm9vay52MS5TZXR0bGVtZW50VXBkYXRlMAFCNFoyZ2l0aHViLmNvbS9TaWx2YW5hT25lL2NhbnRvbi1hZ2VudC9wcm90bztvcmRlcmJvb2tiBnByb3RvMw", [file_google_protobuf_timestamp, file_google_protobuf_empty, file_google_protobuf_struct]);
15
+ fileDesc("Cipwcm90by9zaWx2YW5hL29yZGVyYm9vay92MS9vcmRlcmJvb2sucHJvdG8SFHNpbHZhbmEub3JkZXJib29rLnYxIhgKB0pXVEF1dGgSDQoFdG9rZW4YASABKAkiQQoMRXh0ZXJuYWxBdXRoEgsKA2p3dBgBIAEoCRIQCghwYXJ0eV9pZBgCIAEoCRISCgpwdWJsaWNfa2V5GAMgASgJIvoCCgpJbnN0cnVtZW50EhUKDWluc3RydW1lbnRfaWQYASABKAkSFwoPaW5zdHJ1bWVudF90eXBlGAIgASgJEgwKBG5hbWUYAyABKAkSDgoGc3ltYm9sGAQgASgJEhgKC2Rlc2NyaXB0aW9uGAUgASgJSACIAQESEwoGaXNzdWVyGAYgASgJSAGIAQESFQoIcmVnaXN0cnkYByABKAlIAogBARIuCghtZXRhZGF0YRgIIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIuCgpjcmVhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBITCgtuZXdzX3N5bWJvbBgLIAEoCUIOCgxfZGVzY3JpcHRpb25CCQoHX2lzc3VlckILCglfcmVnaXN0cnlCCwoJX21ldGFkYXRhItwFCgZNYXJrZXQSEQoJbWFya2V0X2lkGAEgASgJEjUKC21hcmtldF90eXBlGAIgASgOMiAuc2lsdmFuYS5vcmRlcmJvb2sudjEuTWFya2V0VHlwZRIXCg9iYXNlX2luc3RydW1lbnQYAyABKAkSGAoQcXVvdGVfaW5zdHJ1bWVudBgEIAEoCRITCgtwYWlyX3N5bWJvbBgFIAEoCRIRCglpc19hY3RpdmUYBiABKAgSFgoObWluX29yZGVyX3NpemUYByABKAkSGwoObWF4X29yZGVyX3NpemUYCCABKAlIAIgBARIRCgl0aWNrX3NpemUYCSABKAkSEQoJbWFrZXJfZmVlGAogASgJEhEKCXRha2VyX2ZlZRgLIAEoCRIuCghtZXRhZGF0YRgMIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARIuCgpjcmVhdGVkX2F0GA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GA4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCgtwcmljZV9mZWVkcxgPIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARIaCg1jdXJyZW50X3ByaWNlGBAgASgBSAOIAQESFwoKY2hhbmdlXzI0aBgRIAEoAUgEiAEBEhcKCnZvbHVtZV8yNGgYEiABKAFIBYgBARI5ChBwcmljZV91cGRhdGVkX2F0GBMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgGiAEBQhEKD19tYXhfb3JkZXJfc2l6ZUILCglfbWV0YWRhdGFCDgoMX3ByaWNlX2ZlZWRzQhAKDl9jdXJyZW50X3ByaWNlQg0KC19jaGFuZ2VfMjRoQg0KC192b2x1bWVfMjRoQhMKEV9wcmljZV91cGRhdGVkX2F0IvcGCgVPcmRlchIQCghvcmRlcl9pZBgBIAEoBBIRCgltYXJrZXRfaWQYAiABKAkSMwoKb3JkZXJfdHlwZRgDIAEoDjIfLnNpbHZhbmEub3JkZXJib29rLnYxLk9yZGVyVHlwZRIOCgZ0cmFkZXIYBCABKAkSHQoQdHJhZGVyX29yZGVyX3JlZhgFIAEoCUgAiAEBEhcKD2Jhc2VfaW5zdHJ1bWVudBgGIAEoCRIYChBxdW90ZV9pbnN0cnVtZW50GAcgASgJEg0KBXByaWNlGAggASgJEhAKCHF1YW50aXR5GAkgASgJEhcKD2ZpbGxlZF9xdWFudGl0eRgKIAEoCRIYChBwZW5kaW5nX3F1YW50aXR5GAsgASgJEhoKEnJlbWFpbmluZ19xdWFudGl0eRgMIAEoCRIxCgZzdGF0dXMYDSABKA4yIS5zaWx2YW5hLm9yZGVyYm9vay52MS5PcmRlclN0YXR1cxI4Cg10aW1lX2luX2ZvcmNlGA4gASgOMiEuc2lsdmFuYS5vcmRlcmJvb2sudjEuVGltZUluRm9yY2USMwoKZXhwaXJlc19hdBgPIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIPCgd2ZXJzaW9uGBAgASgEEjEKC2NyZWRlbnRpYWxzGBEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEjIKDHJlcXVpcmVtZW50cxgSIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIuCghtZXRhZGF0YRgTIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIuCgpjcmVhdGVkX2F0GBQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1CgxjYW5jZWxsZWRfYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQFCEwoRX3RyYWRlcl9vcmRlcl9yZWZCDQoLX2V4cGlyZXNfYXRCDgoMX2NyZWRlbnRpYWxzQg8KDV9yZXF1aXJlbWVudHNCCwoJX21ldGFkYXRhQg8KDV9jYW5jZWxsZWRfYXQiggEKDk9yZGVyYm9va0xldmVsEg0KBXByaWNlGAEgASgJEhYKDnRvdGFsX3F1YW50aXR5GAIgASgJEhMKC29yZGVyX2NvdW50GAMgASgNEjQKEGZpcnN0X29yZGVyX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wItUBCg5PcmRlcmJvb2tEZXB0aBIRCgltYXJrZXRfaWQYASABKAkSEwoLcGFpcl9zeW1ib2wYAiABKAkSMgoEYmlkcxgDIAMoCzIkLnNpbHZhbmEub3JkZXJib29rLnYxLk9yZGVyYm9va0xldmVsEjQKBm9mZmVycxgEIAMoCzIkLnNpbHZhbmEub3JkZXJib29rLnYxLk9yZGVyYm9va0xldmVsEjEKDXNuYXBzaG90X3RpbWUYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIuoSChJTZXR0bGVtZW50UHJvcG9zYWwSEwoLcHJvcG9zYWxfaWQYASABKAkSEQoJbWFya2V0X2lkGAIgASgJEg0KBWJ1eWVyGAMgASgJEg4KBnNlbGxlchgEIAEoCRIVCg1iYXNlX3F1YW50aXR5GAUgASgJEhYKDnF1b3RlX3F1YW50aXR5GAYgASgJEhgKEHNldHRsZW1lbnRfcHJpY2UYByABKAkSNgoGc3RhdHVzGAggASgOMiYuc2lsdmFuYS5vcmRlcmJvb2sudjEuU2V0dGxlbWVudFN0YXR1cxIPCgd2ZXJzaW9uGAkgASgEEj0KF3ByZWNvbmZpcm1hdGlvbl9yZXF1ZXN0GAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEkgKH3ByZWNvbmZpcm1hdGlvbl9yZXF1ZXN0X3NlbnRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESOwoVYnV5ZXJfcHJlY29uZmlybWF0aW9uGAwgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEkoKIWJ1eWVyX3ByZWNvbmZpcm1hdGlvbl9yZWNlaXZlZF9hdBgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIA4gBARI8ChZzZWxsZXJfcHJlY29uZmlybWF0aW9uGA4gASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEksKInNlbGxlcl9wcmVjb25maXJtYXRpb25fcmVjZWl2ZWRfYXQYDyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESHQoQZHZwX3Byb3Bvc2FsX2NpZBgQIAEoCUgGiAEBEiMKFmR2cF9wcm9wb3NhbF91cGRhdGVfaWQYESABKAlIB4gBARIUCgdkdnBfY2lkGBIgASgJSAiIAQESGgoNZHZwX3VwZGF0ZV9pZBgTIAEoCUgJiAEBEiEKFGFsbG9jYXRpb25fYnV5ZXJfY2lkGBUgASgJSAqIAQESJwoaYWxsb2NhdGlvbl9idXllcl91cGRhdGVfaWQYFiABKAlIC4gBARIiChVhbGxvY2F0aW9uX3NlbGxlcl9jaWQYFyABKAlIDIgBARIoChthbGxvY2F0aW9uX3NlbGxlcl91cGRhdGVfaWQYGCABKAlIDYgBARIcCg9zZXR0bGVkX2R2cF9jaWQYGSABKAlIDogBARIhChRzZXR0bGVtZW50X3VwZGF0ZV9pZBgaIAEoCUgPiAEBEikKHHNldHRsZW1lbnRfY29tcGxldGlvbl9vZmZzZXQYGyABKAlIEIgBARIuCgpjcmVhdGVkX2F0GBwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI4Cg9wcmVjb25maXJtZWRfYXQYHSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSBGIAQESNwoOZHZwX2NyZWF0ZWRfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSBKIAQESOAoPZHZwX2FjY2VwdGVkX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgTiAEBEjUKDGFsbG9jYXRlZF9hdBggIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIFIgBARIzCgpzZXR0bGVkX2F0GCEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgViAEBEjUKDGNhbmNlbGxlZF9hdBgiIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIFogBARIyCglmYWlsZWRfYXQYIyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSBeIAQESGgoNZXJyb3JfbWVzc2FnZRgkIAEoCUgYiAEBEi4KCG1ldGFkYXRhGCUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgZiAEBEhEKCWJ1eWVyX2ZlZRgmIAEoCRISCgpzZWxsZXJfZmVlGCcgASgJEhsKDmJ1eWVyX2ZlZV9zZW50GCggASgISBqIAQESHAoPc2VsbGVyX2ZlZV9zZW50GCkgASgISBuIAQESHwoSYnV5ZXJfZmVlX3JlY2VpdmVkGCogASgISByIAQESIAoTc2VsbGVyX2ZlZV9yZWNlaXZlZBgrIAEoCEgdiAEBQhoKGF9wcmVjb25maXJtYXRpb25fcmVxdWVzdEIiCiBfcHJlY29uZmlybWF0aW9uX3JlcXVlc3Rfc2VudF9hdEIYChZfYnV5ZXJfcHJlY29uZmlybWF0aW9uQiQKIl9idXllcl9wcmVjb25maXJtYXRpb25fcmVjZWl2ZWRfYXRCGQoXX3NlbGxlcl9wcmVjb25maXJtYXRpb25CJQojX3NlbGxlcl9wcmVjb25maXJtYXRpb25fcmVjZWl2ZWRfYXRCEwoRX2R2cF9wcm9wb3NhbF9jaWRCGQoXX2R2cF9wcm9wb3NhbF91cGRhdGVfaWRCCgoIX2R2cF9jaWRCEAoOX2R2cF91cGRhdGVfaWRCFwoVX2FsbG9jYXRpb25fYnV5ZXJfY2lkQh0KG19hbGxvY2F0aW9uX2J1eWVyX3VwZGF0ZV9pZEIYChZfYWxsb2NhdGlvbl9zZWxsZXJfY2lkQh4KHF9hbGxvY2F0aW9uX3NlbGxlcl91cGRhdGVfaWRCEgoQX3NldHRsZWRfZHZwX2NpZEIXChVfc2V0dGxlbWVudF91cGRhdGVfaWRCHwodX3NldHRsZW1lbnRfY29tcGxldGlvbl9vZmZzZXRCEgoQX3ByZWNvbmZpcm1lZF9hdEIRCg9fZHZwX2NyZWF0ZWRfYXRCEgoQX2R2cF9hY2NlcHRlZF9hdEIPCg1fYWxsb2NhdGVkX2F0Qg0KC19zZXR0bGVkX2F0Qg8KDV9jYW5jZWxsZWRfYXRCDAoKX2ZhaWxlZF9hdEIQCg5fZXJyb3JfbWVzc2FnZUILCglfbWV0YWRhdGFCEQoPX2J1eWVyX2ZlZV9zZW50QhIKEF9zZWxsZXJfZmVlX3NlbnRCFQoTX2J1eWVyX2ZlZV9yZWNlaXZlZEIWChRfc2VsbGVyX2ZlZV9yZWNlaXZlZCK7AQoKT3JkZXJNYXRjaBIeChZzZXR0bGVtZW50X3Byb3Bvc2FsX2lkGAEgASgJEhQKDGJpZF9vcmRlcl9pZBgCIAEoBBIWCg5vZmZlcl9vcmRlcl9pZBgDIAEoBBIYChBtYXRjaGVkX3F1YW50aXR5GAQgASgJEhUKDW1hdGNoZWRfcHJpY2UYBSABKAkSLgoKY3JlYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAihwMKClNldHRsZW1lbnQSFQoNc2V0dGxlbWVudF9pZBgBIAEoBBITCgtwcm9wb3NhbF9pZBgCIAEoCRIRCgltYXJrZXRfaWQYAyABKAkSDQoFYnV5ZXIYBCABKAkSDgoGc2VsbGVyGAUgASgJEhUKDWJhc2VfcXVhbnRpdHkYBiABKAkSFgoOcXVvdGVfcXVhbnRpdHkYByABKAkSGAoQc2V0dGxlbWVudF9wcmljZRgIIAEoCRIXCg9zZXR0bGVkX2R2cF9jaWQYCSABKAkSHAoUc2V0dGxlbWVudF91cGRhdGVfaWQYCiABKAkSLgoKc2V0dGxlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKY3JlYXRlZF9hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoIbWV0YWRhdGEYDSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCCwoJX21ldGFkYXRhIpUCCgpNYXJrZXREYXRhEhEKCW1hcmtldF9pZBgBIAEoCRITCgtwYWlyX3N5bWJvbBgCIAEoCRIVCghiZXN0X2JpZBgDIAEoCUgAiAEBEhcKCmJlc3Rfb2ZmZXIYBCABKAlIAYgBARIXCgpsYXN0X3ByaWNlGAUgASgJSAKIAQESEgoKdm9sdW1lXzI0aBgGIAEoCRISCgp0cmFkZXNfMjRoGAcgASgNEhMKC29wZW5fb3JkZXJzGAggASgNEi4KCnVwZGF0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgsKCV9iZXN0X2JpZEINCgtfYmVzdF9vZmZlckINCgtfbGFzdF9wcmljZSL5AwoQR2V0T3JkZXJzUmVxdWVzdBIrCgRhdXRoGAEgASgLMh0uc2lsdmFuYS5vcmRlcmJvb2sudjEuSldUQXV0aBIWCgltYXJrZXRfaWQYAiABKAlIAIgBARI2CgZzdGF0dXMYAyABKA4yIS5zaWx2YW5hLm9yZGVyYm9vay52MS5PcmRlclN0YXR1c0gBiAEBEjgKCm9yZGVyX3R5cGUYBCABKA4yHy5zaWx2YW5hLm9yZGVyYm9vay52MS5PcmRlclR5cGVIAogBARISCgVsaW1pdBgFIAEoDUgDiAEBEhMKBm9mZnNldBgGIAEoDUgEiAEBEj4KDWV4dGVybmFsX2F1dGgYCiABKAsyIi5zaWx2YW5hLm9yZGVyYm9vay52MS5FeHRlcm5hbEF1dGhIBYgBARIuCiFsaXF1aWRpdHlfcHJvdmlkZXJfYWN0aXZlX3NlY29uZHMYCyABKA1IBogBARIgChhsaXF1aWRpdHlfcHJvdmlkZXJfbmFtZXMYDCADKAlCDAoKX21hcmtldF9pZEIJCgdfc3RhdHVzQg0KC19vcmRlcl90eXBlQggKBl9saW1pdEIJCgdfb2Zmc2V0QhAKDl9leHRlcm5hbF9hdXRoQiQKIl9saXF1aWRpdHlfcHJvdmlkZXJfYWN0aXZlX3NlY29uZHMicQoRR2V0T3JkZXJzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJEisKBm9yZGVycxgDIAMoCzIbLnNpbHZhbmEub3JkZXJib29rLnYxLk9yZGVyEg0KBXRvdGFsGAQgASgNIsoBChhHZXRPcmRlcmJvb2tEZXB0aFJlcXVlc3QSKwoEYXV0aBgBIAEoCzIdLnNpbHZhbmEub3JkZXJib29rLnYxLkpXVEF1dGgSEQoJbWFya2V0X2lkGAIgASgJEhIKBWRlcHRoGAMgASgNSACIAQESPgoNZXh0ZXJuYWxfYXV0aBgKIAEoCzIiLnNpbHZhbmEub3JkZXJib29rLnYxLkV4dGVybmFsQXV0aEgBiAEBQggKBl9kZXB0aEIQCg5fZXh0ZXJuYWxfYXV0aCJ2ChlHZXRPcmRlcmJvb2tEZXB0aFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCRI3CglvcmRlcmJvb2sYAyABKAsyJC5zaWx2YW5hLm9yZGVyYm9vay52MS5PcmRlcmJvb2tEZXB0aCLKAgodR2V0U2V0dGxlbWVudFByb3Bvc2Fsc1JlcXVlc3QSKwoEYXV0aBgBIAEoCzIdLnNpbHZhbmEub3JkZXJib29rLnYxLkpXVEF1dGgSFgoJbWFya2V0X2lkGAIgASgJSACIAQESOwoGc3RhdHVzGAMgASgOMiYuc2lsdmFuYS5vcmRlcmJvb2sudjEuU2V0dGxlbWVudFN0YXR1c0gBiAEBEhIKBWxpbWl0GAQgASgNSAKIAQESEwoGb2Zmc2V0GAUgASgNSAOIAQESPgoNZXh0ZXJuYWxfYXV0aBgKIAEoCzIiLnNpbHZhbmEub3JkZXJib29rLnYxLkV4dGVybmFsQXV0aEgEiAEBQgwKCl9tYXJrZXRfaWRCCQoHX3N0YXR1c0IICgZfbGltaXRCCQoHX29mZnNldEIQCg5fZXh0ZXJuYWxfYXV0aCKOAQoeR2V0U2V0dGxlbWVudFByb3Bvc2Fsc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCRI7Cglwcm9wb3NhbHMYAyADKAsyKC5zaWx2YW5hLm9yZGVyYm9vay52MS5TZXR0bGVtZW50UHJvcG9zYWwSDQoFdG90YWwYBCABKA0isgEKHEdldFNldHRsZW1lbnRQcm9wb3NhbFJlcXVlc3QSKwoEYXV0aBgBIAEoCzIdLnNpbHZhbmEub3JkZXJib29rLnYxLkpXVEF1dGgSEwoLcHJvcG9zYWxfaWQYAiABKAkSPgoNZXh0ZXJuYWxfYXV0aBgKIAEoCzIiLnNpbHZhbmEub3JkZXJib29rLnYxLkV4dGVybmFsQXV0aEgAiAEBQhAKDl9leHRlcm5hbF9hdXRoIo8BCh1HZXRTZXR0bGVtZW50UHJvcG9zYWxSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEg8KB21lc3NhZ2UYAiABKAkSPwoIcHJvcG9zYWwYAyABKAsyKC5zaWx2YW5hLm9yZGVyYm9vay52MS5TZXR0bGVtZW50UHJvcG9zYWxIAIgBAUILCglfcHJvcG9zYWwihgIKFUdldEluc3RydW1lbnRzUmVxdWVzdBIrCgRhdXRoGAEgASgLMh0uc2lsdmFuYS5vcmRlcmJvb2sudjEuSldUQXV0aBIcCg9pbnN0cnVtZW50X3R5cGUYAiABKAlIAIgBARISCgVsaW1pdBgDIAEoDUgBiAEBEhMKBm9mZnNldBgEIAEoDUgCiAEBEj4KDWV4dGVybmFsX2F1dGgYCiABKAsyIi5zaWx2YW5hLm9yZGVyYm9vay52MS5FeHRlcm5hbEF1dGhIA4gBAUISChBfaW5zdHJ1bWVudF90eXBlQggKBl9saW1pdEIJCgdfb2Zmc2V0QhAKDl9leHRlcm5hbF9hdXRoIoABChZHZXRJbnN0cnVtZW50c1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCRI1CgtpbnN0cnVtZW50cxgDIAMoCzIgLnNpbHZhbmEub3JkZXJib29rLnYxLkluc3RydW1lbnQSDQoFdG90YWwYBCABKA0irAMKEUdldE1hcmtldHNSZXF1ZXN0EisKBGF1dGgYASABKAsyHS5zaWx2YW5hLm9yZGVyYm9vay52MS5KV1RBdXRoEjoKC21hcmtldF90eXBlGAIgASgOMiAuc2lsdmFuYS5vcmRlcmJvb2sudjEuTWFya2V0VHlwZUgAiAEBEhwKD2Jhc2VfaW5zdHJ1bWVudBgDIAEoCUgBiAEBEh0KEHF1b3RlX2luc3RydW1lbnQYBCABKAlIAogBARIYCgthY3RpdmVfb25seRgFIAEoCEgDiAEBEhIKBWxpbWl0GAYgASgNSASIAQESEwoGb2Zmc2V0GAcgASgNSAWIAQESPgoNZXh0ZXJuYWxfYXV0aBgKIAEoCzIiLnNpbHZhbmEub3JkZXJib29rLnYxLkV4dGVybmFsQXV0aEgGiAEBQg4KDF9tYXJrZXRfdHlwZUISChBfYmFzZV9pbnN0cnVtZW50QhMKEV9xdW90ZV9pbnN0cnVtZW50Qg4KDF9hY3RpdmVfb25seUIICgZfbGltaXRCCQoHX29mZnNldEIQCg5fZXh0ZXJuYWxfYXV0aCJ0ChJHZXRNYXJrZXRzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJEi0KB21hcmtldHMYAyADKAsyHC5zaWx2YW5hLm9yZGVyYm9vay52MS5NYXJrZXQSDQoFdG90YWwYBCABKA0i+wIKFkdldE9yZGVySGlzdG9yeVJlcXVlc3QSKwoEYXV0aBgBIAEoCzIdLnNpbHZhbmEub3JkZXJib29rLnYxLkpXVEF1dGgSFgoJbWFya2V0X2lkGAIgASgJSACIAQESMgoJZnJvbV90aW1lGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEjAKB3RvX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESEgoFbGltaXQYBSABKA1IA4gBARITCgZvZmZzZXQYBiABKA1IBIgBARI+Cg1leHRlcm5hbF9hdXRoGAogASgLMiIuc2lsdmFuYS5vcmRlcmJvb2sudjEuRXh0ZXJuYWxBdXRoSAWIAQFCDAoKX21hcmtldF9pZEIMCgpfZnJvbV90aW1lQgoKCF90b190aW1lQggKBl9saW1pdEIJCgdfb2Zmc2V0QhAKDl9leHRlcm5hbF9hdXRoIncKF0dldE9yZGVySGlzdG9yeVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCRIrCgZvcmRlcnMYAyADKAsyGy5zaWx2YW5hLm9yZGVyYm9vay52MS5PcmRlchINCgV0b3RhbBgEIAEoDSKpAQoUR2V0TWFya2V0RGF0YVJlcXVlc3QSKwoEYXV0aBgBIAEoCzIdLnNpbHZhbmEub3JkZXJib29rLnYxLkpXVEF1dGgSEgoKbWFya2V0X2lkcxgCIAMoCRI+Cg1leHRlcm5hbF9hdXRoGAogASgLMiIuc2lsdmFuYS5vcmRlcmJvb2sudjEuRXh0ZXJuYWxBdXRoSACIAQFCEAoOX2V4dGVybmFsX2F1dGgicAoVR2V0TWFya2V0RGF0YVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCRI1CgttYXJrZXRfZGF0YRgDIAMoCzIgLnNpbHZhbmEub3JkZXJib29rLnYxLk1hcmtldERhdGEi+gIKFUdldFNldHRsZW1lbnRzUmVxdWVzdBIrCgRhdXRoGAEgASgLMh0uc2lsdmFuYS5vcmRlcmJvb2sudjEuSldUQXV0aBIWCgltYXJrZXRfaWQYAiABKAlIAIgBARIyCglmcm9tX3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESMAoHdG9fdGltZRgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARISCgVsaW1pdBgFIAEoDUgDiAEBEhMKBm9mZnNldBgGIAEoDUgEiAEBEj4KDWV4dGVybmFsX2F1dGgYCiABKAsyIi5zaWx2YW5hLm9yZGVyYm9vay52MS5FeHRlcm5hbEF1dGhIBYgBAUIMCgpfbWFya2V0X2lkQgwKCl9mcm9tX3RpbWVCCgoIX3RvX3RpbWVCCAoGX2xpbWl0QgkKB19vZmZzZXRCEAoOX2V4dGVybmFsX2F1dGgigAEKFkdldFNldHRsZW1lbnRzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJEjUKC3NldHRsZW1lbnRzGAMgAygLMiAuc2lsdmFuYS5vcmRlcmJvb2sudjEuU2V0dGxlbWVudBINCgV0b3RhbBgEIAEoDSLLAQoZU3Vic2NyaWJlT3JkZXJib29rUmVxdWVzdBIrCgRhdXRoGAEgASgLMh0uc2lsdmFuYS5vcmRlcmJvb2sudjEuSldUQXV0aBIRCgltYXJrZXRfaWQYAiABKAkSEgoFZGVwdGgYAyABKA1IAIgBARI+Cg1leHRlcm5hbF9hdXRoGAogASgLMiIuc2lsdmFuYS5vcmRlcmJvb2sudjEuRXh0ZXJuYWxBdXRoSAGIAQFCCAoGX2RlcHRoQhAKDl9leHRlcm5hbF9hdXRoIocDCg9PcmRlcmJvb2tVcGRhdGUSEQoJbWFya2V0X2lkGAEgASgJEkUKC3VwZGF0ZV90eXBlGAIgASgOMjAuc2lsdmFuYS5vcmRlcmJvb2sudjEuT3JkZXJib29rVXBkYXRlLlVwZGF0ZVR5cGUSOQoLYmlkX3VwZGF0ZXMYAyADKAsyJC5zaWx2YW5hLm9yZGVyYm9vay52MS5PcmRlcmJvb2tMZXZlbBI7Cg1vZmZlcl91cGRhdGVzGAQgAygLMiQuc2lsdmFuYS5vcmRlcmJvb2sudjEuT3JkZXJib29rTGV2ZWwSLQoJdGltZXN0YW1wGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCg9zZXF1ZW5jZV9udW1iZXIYBiABKAQiWgoKVXBkYXRlVHlwZRIbChdVUERBVEVfVFlQRV9VTlNQRUNJRklFRBAAEhgKFFVQREFURV9UWVBFX1NOQVBTSE9UEAESFQoRVVBEQVRFX1RZUEVfREVMVEEQAiK9AQoWU3Vic2NyaWJlT3JkZXJzUmVxdWVzdBIrCgRhdXRoGAEgASgLMh0uc2lsdmFuYS5vcmRlcmJvb2sudjEuSldUQXV0aBIWCgltYXJrZXRfaWQYAiABKAlIAIgBARI+Cg1leHRlcm5hbF9hdXRoGAogASgLMiIuc2lsdmFuYS5vcmRlcmJvb2sudjEuRXh0ZXJuYWxBdXRoSAGIAQFCDAoKX21hcmtldF9pZEIQCg5fZXh0ZXJuYWxfYXV0aCKtAwoLT3JkZXJVcGRhdGUSPwoKZXZlbnRfdHlwZRgBIAEoDjIrLnNpbHZhbmEub3JkZXJib29rLnYxLk9yZGVyVXBkYXRlLkV2ZW50VHlwZRIqCgVvcmRlchgCIAEoCzIbLnNpbHZhbmEub3JkZXJib29rLnYxLk9yZGVyEjQKBW1hdGNoGAMgASgLMiAuc2lsdmFuYS5vcmRlcmJvb2sudjEuT3JkZXJNYXRjaEgAiAEBEi0KCXRpbWVzdGFtcBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiwQEKCUV2ZW50VHlwZRIaChZFVkVOVF9UWVBFX1VOU1BFQ0lGSUVEEAASFgoSRVZFTlRfVFlQRV9DUkVBVEVEEAESFgoSRVZFTlRfVFlQRV9VUERBVEVEEAISFQoRRVZFTlRfVFlQRV9GSUxMRUQQAxIfChtFVkVOVF9UWVBFX1BBUlRJQUxMWV9GSUxMRUQQBBIYChRFVkVOVF9UWVBFX0NBTkNFTExFRBAFEhYKEkVWRU5UX1RZUEVfRVhQSVJFRBAGQggKBl9tYXRjaCLCAQobU3Vic2NyaWJlU2V0dGxlbWVudHNSZXF1ZXN0EisKBGF1dGgYASABKAsyHS5zaWx2YW5hLm9yZGVyYm9vay52MS5KV1RBdXRoEhYKCW1hcmtldF9pZBgCIAEoCUgAiAEBEj4KDWV4dGVybmFsX2F1dGgYCiABKAsyIi5zaWx2YW5hLm9yZGVyYm9vay52MS5FeHRlcm5hbEF1dGhIAYgBAUIMCgpfbWFya2V0X2lkQhAKDl9leHRlcm5hbF9hdXRoIokEChBTZXR0bGVtZW50VXBkYXRlEkQKCmV2ZW50X3R5cGUYASABKA4yMC5zaWx2YW5hLm9yZGVyYm9vay52MS5TZXR0bGVtZW50VXBkYXRlLkV2ZW50VHlwZRI6Cghwcm9wb3NhbBgCIAEoCzIoLnNpbHZhbmEub3JkZXJib29rLnYxLlNldHRsZW1lbnRQcm9wb3NhbBItCgl0aW1lc3RhbXAYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIsMCCglFdmVudFR5cGUSGgoWRVZFTlRfVFlQRV9VTlNQRUNJRklFRBAAEh8KG0VWRU5UX1RZUEVfUFJPUE9TQUxfQ1JFQVRFRBABEigKJEVWRU5UX1RZUEVfUFJFQ09ORklSTUFUSU9OX1JFUVVFU1RFRBACEhsKF0VWRU5UX1RZUEVfUFJFQ09ORklSTUVEEAMSGgoWRVZFTlRfVFlQRV9EVlBfQ1JFQVRFRBAEEhsKF0VWRU5UX1RZUEVfRFZQX0FDQ0VQVEVEEAUSGAoURVZFTlRfVFlQRV9BTExPQ0FURUQQBhIWChJFVkVOVF9UWVBFX1NFVFRMRUQQBxIVChFFVkVOVF9UWVBFX0ZBSUxFRBAIEhgKFEVWRU5UX1RZUEVfQ0FOQ0VMTEVEEAkSFgoSRVZFTlRfVFlQRV9VUERBVEVEEAoi8wQKElN1Ym1pdE9yZGVyUmVxdWVzdBIrCgRhdXRoGAEgASgLMh0uc2lsdmFuYS5vcmRlcmJvb2sudjEuSldUQXV0aBIRCgltYXJrZXRfaWQYAiABKAkSMwoKb3JkZXJfdHlwZRgDIAEoDjIfLnNpbHZhbmEub3JkZXJib29rLnYxLk9yZGVyVHlwZRINCgVwcmljZRgEIAEoCRIQCghxdWFudGl0eRgFIAEoCRI4Cg10aW1lX2luX2ZvcmNlGAYgASgOMiEuc2lsdmFuYS5vcmRlcmJvb2sudjEuVGltZUluRm9yY2USMwoKZXhwaXJlc19hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIdChB0cmFkZXJfb3JkZXJfcmVmGAggASgJSAGIAQESMQoLY3JlZGVudGlhbHMYCSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQESMgoMcmVxdWlyZW1lbnRzGAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEi4KCG1ldGFkYXRhGAsgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEj4KDWV4dGVybmFsX2F1dGgYDyABKAsyIi5zaWx2YW5hLm9yZGVyYm9vay52MS5FeHRlcm5hbEF1dGhIBYgBAUINCgtfZXhwaXJlc19hdEITChFfdHJhZGVyX29yZGVyX3JlZkIOCgxfY3JlZGVudGlhbHNCDwoNX3JlcXVpcmVtZW50c0ILCglfbWV0YWRhdGFCEAoOX2V4dGVybmFsX2F1dGgicgoTU3VibWl0T3JkZXJSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEg8KB21lc3NhZ2UYAiABKAkSLwoFb3JkZXIYAyABKAsyGy5zaWx2YW5hLm9yZGVyYm9vay52MS5PcmRlckgAiAEBQggKBl9vcmRlciKlAQoSQ2FuY2VsT3JkZXJSZXF1ZXN0EisKBGF1dGgYASABKAsyHS5zaWx2YW5hLm9yZGVyYm9vay52MS5KV1RBdXRoEhAKCG9yZGVyX2lkGAIgASgEEj4KDWV4dGVybmFsX2F1dGgYCiABKAsyIi5zaWx2YW5hLm9yZGVyYm9vay52MS5FeHRlcm5hbEF1dGhIAIgBAUIQCg5fZXh0ZXJuYWxfYXV0aCJyChNDYW5jZWxPcmRlclJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCRIvCgVvcmRlchgDIAEoCzIbLnNpbHZhbmEub3JkZXJib29rLnYxLk9yZGVySACIAQFCCAoGX29yZGVyIvoEChJDcmVhdGVQYXJ0eVJlcXVlc3QSKwoEYXV0aBgBIAEoCzIdLnNpbHZhbmEub3JkZXJib29rLnYxLkpXVEF1dGgSEAoIcGFydHlfaWQYAiABKAkSEgoKcGFydHlfbmFtZRgDIAEoCRISCgpwYXJ0eV90eXBlGAQgASgJEh0KEHVzZXJfc2VydmljZV9jaWQYBSABKAlIAIgBARIgChNvcGVyYXRvcl9jb25maWdfY2lkGAYgASgJSAGIAQESLgoIbWV0YWRhdGEYByABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQESJQoYdXNlcl9zZXJ2aWNlX3JlcXVlc3RfY2lkGAggASgJSAOIAQESKgoJdXNlcl9kYXRhGAkgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBI+Cg1leHRlcm5hbF9hdXRoGA8gASgLMiIuc2lsdmFuYS5vcmRlcmJvb2sudjEuRXh0ZXJuYWxBdXRoSASIAQESJAoXbGlxdWlkaXR5X3Byb3ZpZGVyX25hbWUYECABKAlIBYgBARIrCh5saXF1aWRpdHlfcHJvdmlkZXJfZGVzY3JpcHRpb24YESABKAlIBogBAUITChFfdXNlcl9zZXJ2aWNlX2NpZEIWChRfb3BlcmF0b3JfY29uZmlnX2NpZEILCglfbWV0YWRhdGFCGwoZX3VzZXJfc2VydmljZV9yZXF1ZXN0X2NpZEIQCg5fZXh0ZXJuYWxfYXV0aEIaChhfbGlxdWlkaXR5X3Byb3ZpZGVyX25hbWVCIQofX2xpcXVpZGl0eV9wcm92aWRlcl9kZXNjcmlwdGlvbiJjChNDcmVhdGVQYXJ0eVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCRIqCgVwYXJ0eRgDIAEoCzIbLnNpbHZhbmEub3JkZXJib29rLnYxLlBhcnR5IsMEChJVcGRhdGVQYXJ0eVJlcXVlc3QSKwoEYXV0aBgBIAEoCzIdLnNpbHZhbmEub3JkZXJib29rLnYxLkpXVEF1dGgSEAoIcGFydHlfaWQYAiABKAkSGAoQZXhwZWN0ZWRfdmVyc2lvbhgDIAEoBBIXCgpwYXJ0eV9uYW1lGAQgASgJSACIAQESHQoQdXNlcl9zZXJ2aWNlX2NpZBgFIAEoCUgBiAEBEiAKE29wZXJhdG9yX2NvbmZpZ19jaWQYBiABKAlIAogBARIlChh1c2VyX3NlcnZpY2VfcmVxdWVzdF9jaWQYByABKAlIA4gBARIvCgl1c2VyX2RhdGEYCCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQESLgoIbWV0YWRhdGEYCSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAWIAQESGgoNY2hhbmdlX3JlYXNvbhgKIAEoCUgGiAEBEj4KDWV4dGVybmFsX2F1dGgYDyABKAsyIi5zaWx2YW5hLm9yZGVyYm9vay52MS5FeHRlcm5hbEF1dGhIB4gBAUINCgtfcGFydHlfbmFtZUITChFfdXNlcl9zZXJ2aWNlX2NpZEIWChRfb3BlcmF0b3JfY29uZmlnX2NpZEIbChlfdXNlcl9zZXJ2aWNlX3JlcXVlc3RfY2lkQgwKCl91c2VyX2RhdGFCCwoJX21ldGFkYXRhQhAKDl9jaGFuZ2VfcmVhc29uQhAKDl9leHRlcm5hbF9hdXRoImMKE1VwZGF0ZVBhcnR5UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJEioKBXBhcnR5GAMgASgLMhsuc2lsdmFuYS5vcmRlcmJvb2sudjEuUGFydHki2gEKFkRlYWN0aXZhdGVQYXJ0eVJlcXVlc3QSKwoEYXV0aBgBIAEoCzIdLnNpbHZhbmEub3JkZXJib29rLnYxLkpXVEF1dGgSEAoIcGFydHlfaWQYAiABKAkSGAoQZXhwZWN0ZWRfdmVyc2lvbhgDIAEoBBIVCg1jaGFuZ2VfcmVhc29uGAQgASgJEj4KDWV4dGVybmFsX2F1dGgYCiABKAsyIi5zaWx2YW5hLm9yZGVyYm9vay52MS5FeHRlcm5hbEF1dGhIAIgBAUIQCg5fZXh0ZXJuYWxfYXV0aCJnChdEZWFjdGl2YXRlUGFydHlSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEg8KB21lc3NhZ2UYAiABKAkSKgoFcGFydHkYAyABKAsyGy5zaWx2YW5hLm9yZGVyYm9vay52MS5QYXJ0eSLnAQoWR2V0UGFydHlIaXN0b3J5UmVxdWVzdBIrCgRhdXRoGAEgASgLMh0uc2lsdmFuYS5vcmRlcmJvb2sudjEuSldUQXV0aBIQCghwYXJ0eV9pZBgCIAEoCRISCgVsaW1pdBgDIAEoDUgAiAEBEhMKBm9mZnNldBgEIAEoDUgBiAEBEj4KDWV4dGVybmFsX2F1dGgYCiABKAsyIi5zaWx2YW5hLm9yZGVyYm9vay52MS5FeHRlcm5hbEF1dGhIAogBAUIICgZfbGltaXRCCQoHX29mZnNldEIQCg5fZXh0ZXJuYWxfYXV0aCKBAgoRUGFydHlIaXN0b3J5RW50cnkSEgoKaGlzdG9yeV9pZBgBIAEoBBIQCghwYXJ0eV9pZBgCIAEoCRIOCgZhY3Rpb24YAyABKAkSEgoKY2hhbmdlZF9ieRgEIAEoCRIaCg1jaGFuZ2VfcmVhc29uGAUgASgJSACIAQESDwoHdmVyc2lvbhgGIAEoBBIzCg5wYXJ0eV9zbmFwc2hvdBgHIAEoCzIbLnNpbHZhbmEub3JkZXJib29rLnYxLlBhcnR5Ei4KCmNyZWF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhAKDl9jaGFuZ2VfcmVhc29uIoQBChdHZXRQYXJ0eUhpc3RvcnlSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEg8KB21lc3NhZ2UYAiABKAkSOAoHaGlzdG9yeRgDIAMoCzInLnNpbHZhbmEub3JkZXJib29rLnYxLlBhcnR5SGlzdG9yeUVudHJ5Eg0KBXRvdGFsGAQgASgNIqIBCg9HZXRQYXJ0eVJlcXVlc3QSKwoEYXV0aBgBIAEoCzIdLnNpbHZhbmEub3JkZXJib29rLnYxLkpXVEF1dGgSEAoIcGFydHlfaWQYAiABKAkSPgoNZXh0ZXJuYWxfYXV0aBgKIAEoCzIiLnNpbHZhbmEub3JkZXJib29rLnYxLkV4dGVybmFsQXV0aEgAiAEBQhAKDl9leHRlcm5hbF9hdXRoImAKEEdldFBhcnR5UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJEioKBXBhcnR5GAMgASgLMhsuc2lsdmFuYS5vcmRlcmJvb2sudjEuUGFydHkiogIKEUdldFBhcnRpZXNSZXF1ZXN0EisKBGF1dGgYASABKAsyHS5zaWx2YW5hLm9yZGVyYm9vay52MS5KV1RBdXRoEhcKCnBhcnR5X3R5cGUYAiABKAlIAIgBARIYCgthY3RpdmVfb25seRgDIAEoCEgBiAEBEhIKBWxpbWl0GAQgASgNSAKIAQESEwoGb2Zmc2V0GAUgASgNSAOIAQESPgoNZXh0ZXJuYWxfYXV0aBgKIAEoCzIiLnNpbHZhbmEub3JkZXJib29rLnYxLkV4dGVybmFsQXV0aEgEiAEBQg0KC19wYXJ0eV90eXBlQg4KDF9hY3RpdmVfb25seUIICgZfbGltaXRCCQoHX29mZnNldEIQCg5fZXh0ZXJuYWxfYXV0aCJzChJHZXRQYXJ0aWVzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJEiwKB3BhcnRpZXMYAyADKAsyGy5zaWx2YW5hLm9yZGVyYm9vay52MS5QYXJ0eRINCgV0b3RhbBgEIAEoDSLgBAoFUGFydHkSEAoIcGFydHlfaWQYASABKAkSEgoKcGFydHlfbmFtZRgCIAEoCRISCgpwYXJ0eV90eXBlGAMgASgJEh0KEHVzZXJfc2VydmljZV9jaWQYBCABKAlIAIgBARIgChNvcGVyYXRvcl9jb25maWdfY2lkGAUgASgJSAGIAQESEQoJaXNfYWN0aXZlGAYgASgIEi4KCG1ldGFkYXRhGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEi4KCmNyZWF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKGHVzZXJfc2VydmljZV9yZXF1ZXN0X2NpZBgKIAEoCUgDiAEBEioKCXVzZXJfZGF0YRgLIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSDwoHdmVyc2lvbhgMIAEoBBISCgVlbWFpbBgNIAEoCUgEiAEBEhcKCnB1YmxpY19rZXkYDiABKAlIBYgBARIYCgtpbnZpdGVfY29kZRgPIAEoCUgGiAEBEg4KBnNvdXJjZRgQIAEoCUITChFfdXNlcl9zZXJ2aWNlX2NpZEIWChRfb3BlcmF0b3JfY29uZmlnX2NpZEILCglfbWV0YWRhdGFCGwoZX3VzZXJfc2VydmljZV9yZXF1ZXN0X2NpZEIICgZfZW1haWxCDQoLX3B1YmxpY19rZXlCDgoMX2ludml0ZV9jb2RlIo0CChFMaXF1aWRpdHlQcm92aWRlchIMCgRuYW1lGAEgASgJEhAKCHBhcnR5X2lkGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESOQoQbGFzdF9hY3RpdmVfdGltZRgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIuCgpjcmVhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZGVzY3JpcHRpb25CEwoRX2xhc3RfYWN0aXZlX3RpbWUiiwIKHEdldExpcXVpZGl0eVByb3ZpZGVyc1JlcXVlc3QSKwoEYXV0aBgBIAEoCzIdLnNpbHZhbmEub3JkZXJib29rLnYxLkpXVEF1dGgSGwoOYWN0aXZlX3NlY29uZHMYAiABKA1IAIgBARISCgVsaW1pdBgDIAEoDUgBiAEBEhMKBm9mZnNldBgEIAEoDUgCiAEBEj4KDWV4dGVybmFsX2F1dGgYCiABKAsyIi5zaWx2YW5hLm9yZGVyYm9vay52MS5FeHRlcm5hbEF1dGhIA4gBAUIRCg9fYWN0aXZlX3NlY29uZHNCCAoGX2xpbWl0QgkKB19vZmZzZXRCEAoOX2V4dGVybmFsX2F1dGgilgEKHUdldExpcXVpZGl0eVByb3ZpZGVyc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCRJEChNsaXF1aWRpdHlfcHJvdmlkZXJzGAMgAygLMicuc2lsdmFuYS5vcmRlcmJvb2sudjEuTGlxdWlkaXR5UHJvdmlkZXISDQoFdG90YWwYBCABKA0iiAMKEFdhaXRpbmdMaXN0RW50cnkSCgoCaWQYASABKAQSFQoIcGFydHlfaWQYAiABKAlIAIgBARIqCgl1c2VyX2RhdGEYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eg4KBnNvdXJjZRgEIAEoCRISCgVlbWFpbBgFIAEoCUgBiAEBEhcKCnB1YmxpY19rZXkYBiABKAlIAogBARIUCgxpc19vbmJvYXJkZWQYByABKAgSDwoHdmVyc2lvbhgIIAEoBBIuCghtZXRhZGF0YRgJIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIuCgpjcmVhdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEILCglfcGFydHlfaWRCCAoGX2VtYWlsQg0KC19wdWJsaWNfa2V5QgsKCV9tZXRhZGF0YSKIAgoaQWRkV2FpdGluZ0xpc3RFbnRyeVJlcXVlc3QSKwoEYXV0aBgBIAEoCzIdLnNpbHZhbmEub3JkZXJib29rLnYxLkpXVEF1dGgSKgoJdXNlcl9kYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIOCgZzb3VyY2UYAyABKAkSEgoFZW1haWwYBCABKAlIAIgBARIXCgpwdWJsaWNfa2V5GAUgASgJSAGIAQESLgoIbWV0YWRhdGEYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQFCCAoGX2VtYWlsQg0KC19wdWJsaWNfa2V5QgsKCV9tZXRhZGF0YSJLChtBZGRXYWl0aW5nTGlzdEVudHJ5UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJEgoKAmlkGAMgASgEIrEDCgVSb3VuZBIUCgxyb3VuZF9udW1iZXIYASABKAQSNAonaXNzdWFuY2VfcGVyX2ZlYXR1cmVkX2FwcF9yZXdhcmRfY291cG9uGAIgASgJSACIAQESNgopaXNzdWFuY2VfcGVyX3VuZmVhdHVyZWRfYXBwX3Jld2FyZF9jb3Vwb24YAyABKAlIAYgBARIYCgtjY191c2RfcmF0ZRgEIAEoCUgCiAEBEiQKF3RyYWZmaWNfY29zdF91c2RfcGVyX21iGAUgASgJSAOIAQESLgoKY3JlYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCKgooX2lzc3VhbmNlX3Blcl9mZWF0dXJlZF9hcHBfcmV3YXJkX2NvdXBvbkIsCipfaXNzdWFuY2VfcGVyX3VuZmVhdHVyZWRfYXBwX3Jld2FyZF9jb3Vwb25CDgoMX2NjX3VzZF9yYXRlQhoKGF90cmFmZmljX2Nvc3RfdXNkX3Blcl9tYiLvAgoGSW52aXRlEhMKC2ludml0ZV9jb2RlGAEgASgJEg8KB2NoYW5uZWwYAiABKAkSFAoHcmV3YXJkcxgDIAEoCUgAiAEBEi4KCG1ldGFkYXRhGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBEjIKBnN0YXR1cxgFIAEoDjIiLnNpbHZhbmEub3JkZXJib29rLnYxLkludml0ZVN0YXR1cxISCgpjb3VudF91c2VkGAYgASgNEhYKCW1heF9jb3VudBgHIAEoDUgCiAEBEhIKCmNyZWF0ZWRfYnkYCCABKAkSLgoKY3JlYXRlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCgoIX3Jld2FyZHNCCwoJX21ldGFkYXRhQgwKCl9tYXhfY291bnQiJwoQR2V0SW52aXRlUmVxdWVzdBITCgtpbnZpdGVfY29kZRgBIAEoCSJgChFHZXRJbnZpdGVSZXNwb25zZRINCgVmb3VuZBgBIAEoCBIxCgZpbnZpdGUYAiABKAsyHC5zaWx2YW5hLm9yZGVyYm9vay52MS5JbnZpdGVIAIgBAUIJCgdfaW52aXRlIksKEFVzZUludml0ZVJlcXVlc3QSEwoLaW52aXRlX2NvZGUYASABKAkSFQoIcGFydHlfaWQYAiABKAlIAIgBAUILCglfcGFydHlfaWQicwoRVXNlSW52aXRlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJEjEKBmludml0ZRgDIAEoCzIcLnNpbHZhbmEub3JkZXJib29rLnYxLkludml0ZUgAiAEBQgkKB19pbnZpdGUipgMKF0NyZWF0ZUluc3RydW1lbnRSZXF1ZXN0EisKBGF1dGgYASABKAsyHS5zaWx2YW5hLm9yZGVyYm9vay52MS5KV1RBdXRoEhUKDWluc3RydW1lbnRfaWQYAiABKAkSFwoPaW5zdHJ1bWVudF90eXBlGAMgASgJEgwKBG5hbWUYBCABKAkSDgoGc3ltYm9sGAUgASgJEhgKC2Rlc2NyaXB0aW9uGAYgASgJSACIAQESEwoGaXNzdWVyGAcgASgJSAGIAQESFQoIcmVnaXN0cnkYCCABKAlIAogBARIuCghtZXRhZGF0YRgJIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARITCgtuZXdzX3N5bWJvbBgKIAEoCRI+Cg1leHRlcm5hbF9hdXRoGA8gASgLMiIuc2lsdmFuYS5vcmRlcmJvb2sudjEuRXh0ZXJuYWxBdXRoSASIAQFCDgoMX2Rlc2NyaXB0aW9uQgkKB19pc3N1ZXJCCwoJX3JlZ2lzdHJ5QgsKCV9tZXRhZGF0YUIQCg5fZXh0ZXJuYWxfYXV0aCJyChhDcmVhdGVJbnN0cnVtZW50UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJEjQKCmluc3RydW1lbnQYAyABKAsyIC5zaWx2YW5hLm9yZGVyYm9vay52MS5JbnN0cnVtZW50IsUEChNDcmVhdGVNYXJrZXRSZXF1ZXN0EisKBGF1dGgYASABKAsyHS5zaWx2YW5hLm9yZGVyYm9vay52MS5KV1RBdXRoEhEKCW1hcmtldF9pZBgCIAEoCRI1CgttYXJrZXRfdHlwZRgDIAEoDjIgLnNpbHZhbmEub3JkZXJib29rLnYxLk1hcmtldFR5cGUSHAoPYmFzZV9pbnN0cnVtZW50GAQgASgJSACIAQESHQoQcXVvdGVfaW5zdHJ1bWVudBgFIAEoCUgBiAEBEhYKDm1pbl9vcmRlcl9zaXplGAYgASgJEhsKDm1heF9vcmRlcl9zaXplGAcgASgJSAKIAQESEQoJdGlja19zaXplGAggASgJEhEKCW1ha2VyX2ZlZRgJIAEoCRIRCgl0YWtlcl9mZWUYCiABKAkSLgoIbWV0YWRhdGEYCyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQESMQoLcHJpY2VfZmVlZHMYDCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQESPgoNZXh0ZXJuYWxfYXV0aBgPIAEoCzIiLnNpbHZhbmEub3JkZXJib29rLnYxLkV4dGVybmFsQXV0aEgFiAEBQhIKEF9iYXNlX2luc3RydW1lbnRCEwoRX3F1b3RlX2luc3RydW1lbnRCEQoPX21heF9vcmRlcl9zaXplQgsKCV9tZXRhZGF0YUIOCgxfcHJpY2VfZmVlZHNCEAoOX2V4dGVybmFsX2F1dGgiZgoUQ3JlYXRlTWFya2V0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJEiwKBm1hcmtldBgDIAEoCzIcLnNpbHZhbmEub3JkZXJib29rLnYxLk1hcmtldCLfAQodVXBkYXRlTWFya2V0UHJpY2VGZWVkc1JlcXVlc3QSKwoEYXV0aBgBIAEoCzIdLnNpbHZhbmEub3JkZXJib29rLnYxLkpXVEF1dGgSEQoJbWFya2V0X2lkGAIgASgJEiwKC3ByaWNlX2ZlZWRzGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBI+Cg1leHRlcm5hbF9hdXRoGAogASgLMiIuc2lsdmFuYS5vcmRlcmJvb2sudjEuRXh0ZXJuYWxBdXRoSACIAQFCEAoOX2V4dGVybmFsX2F1dGgicAoeVXBkYXRlTWFya2V0UHJpY2VGZWVkc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCRIsCgZtYXJrZXQYAyABKAsyHC5zaWx2YW5hLm9yZGVyYm9vay52MS5NYXJrZXQqUQoJT3JkZXJUeXBlEhoKFk9SREVSX1RZUEVfVU5TUEVDSUZJRUQQABISCg5PUkRFUl9UWVBFX0JJRBABEhQKEE9SREVSX1RZUEVfT0ZGRVIQAiqtAQoLT3JkZXJTdGF0dXMSHAoYT1JERVJfU1RBVFVTX1VOU1BFQ0lGSUVEEAASFwoTT1JERVJfU1RBVFVTX0FDVElWRRABEhgKFE9SREVSX1NUQVRVU19QQVJUSUFMEAISFwoTT1JERVJfU1RBVFVTX0ZJTExFRBADEhoKFk9SREVSX1NUQVRVU19DQU5DRUxMRUQQBBIYChRPUkRFUl9TVEFUVVNfRVhQSVJFRBAFKogBCgtUaW1lSW5Gb3JjZRIdChlUSU1FX0lOX0ZPUkNFX1VOU1BFQ0lGSUVEEAASFQoRVElNRV9JTl9GT1JDRV9HVEMQARIVChFUSU1FX0lOX0ZPUkNFX0lPQxACEhUKEVRJTUVfSU5fRk9SQ0VfRk9LEAMSFQoRVElNRV9JTl9GT1JDRV9HVEQQBCraAgoQU2V0dGxlbWVudFN0YXR1cxIhCh1TRVRUTEVNRU5UX1NUQVRVU19VTlNQRUNJRklFRBAAEh0KGVNFVFRMRU1FTlRfU1RBVFVTX0NSRUFURUQQARIiCh5TRVRUTEVNRU5UX1NUQVRVU19QUkVDT05GSVJNRUQQAhIpCiVTRVRUTEVNRU5UX1NUQVRVU19EVlBfUkVRVUVTVF9DUkVBVEVEEAMSKgomU0VUVExFTUVOVF9TVEFUVVNfRFZQX1JFUVVFU1RfQUNDRVBURUQQBBIrCidTRVRUTEVNRU5UX1NUQVRVU19JTlNUUlVNRU5UU19BTExPQ0FURUQQBRIdChlTRVRUTEVNRU5UX1NUQVRVU19TRVRUTEVEEAYSHwobU0VUVExFTUVOVF9TVEFUVVNfQ0FOQ0VMTEVEEAcSHAoYU0VUVExFTUVOVF9TVEFUVVNfRkFJTEVEEAgqdgoKTWFya2V0VHlwZRIbChdNQVJLRVRfVFlQRV9VTlNQRUNJRklFRBAAEhcKE01BUktFVF9UWVBFX0dFTkVSQUwQARIdChlNQVJLRVRfVFlQRV9JTlNUSVRVVElPTkFMEAISEwoPTUFSS0VUX1RZUEVfT1RDEAMqlgEKDEludml0ZVN0YXR1cxIdChlJTlZJVEVfU1RBVFVTX1VOU1BFQ0lGSUVEEAASFwoTSU5WSVRFX1NUQVRVU19WQUxJRBABEhkKFUlOVklURV9TVEFUVVNfRVhQSVJFRBACEhYKEklOVklURV9TVEFUVVNfVVNFRBADEhsKF0lOVklURV9TVEFUVVNfQ0FOQ0VMTEVEEAQylhcKEE9yZGVyYm9va1NlcnZpY2USXAoJR2V0T3JkZXJzEiYuc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0T3JkZXJzUmVxdWVzdBonLnNpbHZhbmEub3JkZXJib29rLnYxLkdldE9yZGVyc1Jlc3BvbnNlEnQKEUdldE9yZGVyYm9va0RlcHRoEi4uc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0T3JkZXJib29rRGVwdGhSZXF1ZXN0Gi8uc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0T3JkZXJib29rRGVwdGhSZXNwb25zZRKDAQoWR2V0U2V0dGxlbWVudFByb3Bvc2FscxIzLnNpbHZhbmEub3JkZXJib29rLnYxLkdldFNldHRsZW1lbnRQcm9wb3NhbHNSZXF1ZXN0GjQuc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0U2V0dGxlbWVudFByb3Bvc2Fsc1Jlc3BvbnNlEoABChVHZXRTZXR0bGVtZW50UHJvcG9zYWwSMi5zaWx2YW5hLm9yZGVyYm9vay52MS5HZXRTZXR0bGVtZW50UHJvcG9zYWxSZXF1ZXN0GjMuc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0U2V0dGxlbWVudFByb3Bvc2FsUmVzcG9uc2USawoOR2V0SW5zdHJ1bWVudHMSKy5zaWx2YW5hLm9yZGVyYm9vay52MS5HZXRJbnN0cnVtZW50c1JlcXVlc3QaLC5zaWx2YW5hLm9yZGVyYm9vay52MS5HZXRJbnN0cnVtZW50c1Jlc3BvbnNlEl8KCkdldE1hcmtldHMSJy5zaWx2YW5hLm9yZGVyYm9vay52MS5HZXRNYXJrZXRzUmVxdWVzdBooLnNpbHZhbmEub3JkZXJib29rLnYxLkdldE1hcmtldHNSZXNwb25zZRJuCg9HZXRPcmRlckhpc3RvcnkSLC5zaWx2YW5hLm9yZGVyYm9vay52MS5HZXRPcmRlckhpc3RvcnlSZXF1ZXN0Gi0uc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0T3JkZXJIaXN0b3J5UmVzcG9uc2USaAoNR2V0TWFya2V0RGF0YRIqLnNpbHZhbmEub3JkZXJib29rLnYxLkdldE1hcmtldERhdGFSZXF1ZXN0Gisuc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0TWFya2V0RGF0YVJlc3BvbnNlEmsKDkdldFNldHRsZW1lbnRzEisuc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0U2V0dGxlbWVudHNSZXF1ZXN0Giwuc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0U2V0dGxlbWVudHNSZXNwb25zZRJiCgtTdWJtaXRPcmRlchIoLnNpbHZhbmEub3JkZXJib29rLnYxLlN1Ym1pdE9yZGVyUmVxdWVzdBopLnNpbHZhbmEub3JkZXJib29rLnYxLlN1Ym1pdE9yZGVyUmVzcG9uc2USYgoLQ2FuY2VsT3JkZXISKC5zaWx2YW5hLm9yZGVyYm9vay52MS5DYW5jZWxPcmRlclJlcXVlc3QaKS5zaWx2YW5hLm9yZGVyYm9vay52MS5DYW5jZWxPcmRlclJlc3BvbnNlElkKCEdldFBhcnR5EiUuc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0UGFydHlSZXF1ZXN0GiYuc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0UGFydHlSZXNwb25zZRJfCgpHZXRQYXJ0aWVzEicuc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0UGFydGllc1JlcXVlc3QaKC5zaWx2YW5hLm9yZGVyYm9vay52MS5HZXRQYXJ0aWVzUmVzcG9uc2USgAEKFUdldExpcXVpZGl0eVByb3ZpZGVycxIyLnNpbHZhbmEub3JkZXJib29rLnYxLkdldExpcXVpZGl0eVByb3ZpZGVyc1JlcXVlc3QaMy5zaWx2YW5hLm9yZGVyYm9vay52MS5HZXRMaXF1aWRpdHlQcm92aWRlcnNSZXNwb25zZRJ6ChNBZGRXYWl0aW5nTGlzdEVudHJ5EjAuc2lsdmFuYS5vcmRlcmJvb2sudjEuQWRkV2FpdGluZ0xpc3RFbnRyeVJlcXVlc3QaMS5zaWx2YW5hLm9yZGVyYm9vay52MS5BZGRXYWl0aW5nTGlzdEVudHJ5UmVzcG9uc2USXAoJR2V0SW52aXRlEiYuc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0SW52aXRlUmVxdWVzdBonLnNpbHZhbmEub3JkZXJib29rLnYxLkdldEludml0ZVJlc3BvbnNlElwKCVVzZUludml0ZRImLnNpbHZhbmEub3JkZXJib29rLnYxLlVzZUludml0ZVJlcXVlc3QaJy5zaWx2YW5hLm9yZGVyYm9vay52MS5Vc2VJbnZpdGVSZXNwb25zZRJiCgtDcmVhdGVQYXJ0eRIoLnNpbHZhbmEub3JkZXJib29rLnYxLkNyZWF0ZVBhcnR5UmVxdWVzdBopLnNpbHZhbmEub3JkZXJib29rLnYxLkNyZWF0ZVBhcnR5UmVzcG9uc2USYgoLVXBkYXRlUGFydHkSKC5zaWx2YW5hLm9yZGVyYm9vay52MS5VcGRhdGVQYXJ0eVJlcXVlc3QaKS5zaWx2YW5hLm9yZGVyYm9vay52MS5VcGRhdGVQYXJ0eVJlc3BvbnNlEm4KD0RlYWN0aXZhdGVQYXJ0eRIsLnNpbHZhbmEub3JkZXJib29rLnYxLkRlYWN0aXZhdGVQYXJ0eVJlcXVlc3QaLS5zaWx2YW5hLm9yZGVyYm9vay52MS5EZWFjdGl2YXRlUGFydHlSZXNwb25zZRJuCg9HZXRQYXJ0eUhpc3RvcnkSLC5zaWx2YW5hLm9yZGVyYm9vay52MS5HZXRQYXJ0eUhpc3RvcnlSZXF1ZXN0Gi0uc2lsdmFuYS5vcmRlcmJvb2sudjEuR2V0UGFydHlIaXN0b3J5UmVzcG9uc2UScQoQQ3JlYXRlSW5zdHJ1bWVudBItLnNpbHZhbmEub3JkZXJib29rLnYxLkNyZWF0ZUluc3RydW1lbnRSZXF1ZXN0Gi4uc2lsdmFuYS5vcmRlcmJvb2sudjEuQ3JlYXRlSW5zdHJ1bWVudFJlc3BvbnNlEmUKDENyZWF0ZU1hcmtldBIpLnNpbHZhbmEub3JkZXJib29rLnYxLkNyZWF0ZU1hcmtldFJlcXVlc3QaKi5zaWx2YW5hLm9yZGVyYm9vay52MS5DcmVhdGVNYXJrZXRSZXNwb25zZRKDAQoWVXBkYXRlTWFya2V0UHJpY2VGZWVkcxIzLnNpbHZhbmEub3JkZXJib29rLnYxLlVwZGF0ZU1hcmtldFByaWNlRmVlZHNSZXF1ZXN0GjQuc2lsdmFuYS5vcmRlcmJvb2sudjEuVXBkYXRlTWFya2V0UHJpY2VGZWVkc1Jlc3BvbnNlEm4KElN1YnNjcmliZU9yZGVyYm9vaxIvLnNpbHZhbmEub3JkZXJib29rLnYxLlN1YnNjcmliZU9yZGVyYm9va1JlcXVlc3QaJS5zaWx2YW5hLm9yZGVyYm9vay52MS5PcmRlcmJvb2tVcGRhdGUwARJkCg9TdWJzY3JpYmVPcmRlcnMSLC5zaWx2YW5hLm9yZGVyYm9vay52MS5TdWJzY3JpYmVPcmRlcnNSZXF1ZXN0GiEuc2lsdmFuYS5vcmRlcmJvb2sudjEuT3JkZXJVcGRhdGUwARJzChRTdWJzY3JpYmVTZXR0bGVtZW50cxIxLnNpbHZhbmEub3JkZXJib29rLnYxLlN1YnNjcmliZVNldHRsZW1lbnRzUmVxdWVzdBomLnNpbHZhbmEub3JkZXJib29rLnYxLlNldHRsZW1lbnRVcGRhdGUwAUI0WjJnaXRodWIuY29tL1NpbHZhbmFPbmUvY2FudG9uLWFnZW50L3Byb3RvO29yZGVyYm9va2IGcHJvdG8z", [file_google_protobuf_timestamp, file_google_protobuf_empty, file_google_protobuf_struct]);
16
16
 
17
17
  /**
18
18
  * JWT authentication token (for server-signed tokens using JWT_PRIVATE_KEY)
@@ -987,6 +987,22 @@ export type GetOrdersRequest = Message<"silvana.orderbook.v1.GetOrdersRequest">
987
987
  * @generated from field: optional silvana.orderbook.v1.ExternalAuth external_auth = 10;
988
988
  */
989
989
  externalAuth?: ExternalAuth;
990
+
991
+ /**
992
+ * Liquidity provider filtering (returns orders from LP parties)
993
+ *
994
+ * Only LPs active within N seconds (default 60)
995
+ *
996
+ * @generated from field: optional uint32 liquidity_provider_active_seconds = 11;
997
+ */
998
+ liquidityProviderActiveSeconds?: number;
999
+
1000
+ /**
1001
+ * Filter by specific LP names
1002
+ *
1003
+ * @generated from field: repeated string liquidity_provider_names = 12;
1004
+ */
1005
+ liquidityProviderNames: string[];
990
1006
  };
991
1007
 
992
1008
  /**
@@ -2201,6 +2217,22 @@ export type CreatePartyRequest = Message<"silvana.orderbook.v1.CreatePartyReques
2201
2217
  * @generated from field: optional silvana.orderbook.v1.ExternalAuth external_auth = 15;
2202
2218
  */
2203
2219
  externalAuth?: ExternalAuth;
2220
+
2221
+ /**
2222
+ * Liquidity provider fields (creates/links LP entry when party is created)
2223
+ *
2224
+ * LP name to create/link
2225
+ *
2226
+ * @generated from field: optional string liquidity_provider_name = 16;
2227
+ */
2228
+ liquidityProviderName?: string;
2229
+
2230
+ /**
2231
+ * LP description (for new LPs)
2232
+ *
2233
+ * @generated from field: optional string liquidity_provider_description = 17;
2234
+ */
2235
+ liquidityProviderDescription?: string;
2204
2236
  };
2205
2237
 
2206
2238
  /**
@@ -2757,6 +2789,34 @@ export type Party = Message<"silvana.orderbook.v1.Party"> & {
2757
2789
  * @generated from field: uint64 version = 12;
2758
2790
  */
2759
2791
  version: bigint;
2792
+
2793
+ /**
2794
+ * Party email address
2795
+ *
2796
+ * @generated from field: optional string email = 13;
2797
+ */
2798
+ email?: string;
2799
+
2800
+ /**
2801
+ * Base58 public key
2802
+ *
2803
+ * @generated from field: optional string public_key = 14;
2804
+ */
2805
+ publicKey?: string;
2806
+
2807
+ /**
2808
+ * Invite code used during registration
2809
+ *
2810
+ * @generated from field: optional string invite_code = 15;
2811
+ */
2812
+ inviteCode?: string;
2813
+
2814
+ /**
2815
+ * Source: loop_wallet, form, supa_wallet, admin
2816
+ *
2817
+ * @generated from field: string source = 16;
2818
+ */
2819
+ source: string;
2760
2820
  };
2761
2821
 
2762
2822
  /**
@@ -2766,6 +2826,494 @@ export type Party = Message<"silvana.orderbook.v1.Party"> & {
2766
2826
  export const PartySchema: GenMessage<Party> = /*@__PURE__*/
2767
2827
  messageDesc(file_proto_silvana_orderbook_v1_orderbook, 52);
2768
2828
 
2829
+ /**
2830
+ * Liquidity provider information
2831
+ *
2832
+ * @generated from message silvana.orderbook.v1.LiquidityProvider
2833
+ */
2834
+ export type LiquidityProvider = Message<"silvana.orderbook.v1.LiquidityProvider"> & {
2835
+ /**
2836
+ * Primary key name
2837
+ *
2838
+ * @generated from field: string name = 1;
2839
+ */
2840
+ name: string;
2841
+
2842
+ /**
2843
+ * Canton party ID
2844
+ *
2845
+ * @generated from field: string party_id = 2;
2846
+ */
2847
+ partyId: string;
2848
+
2849
+ /**
2850
+ * Description
2851
+ *
2852
+ * @generated from field: optional string description = 3;
2853
+ */
2854
+ description?: string;
2855
+
2856
+ /**
2857
+ * Last ping time
2858
+ *
2859
+ * @generated from field: optional google.protobuf.Timestamp last_active_time = 4;
2860
+ */
2861
+ lastActiveTime?: Timestamp;
2862
+
2863
+ /**
2864
+ * @generated from field: google.protobuf.Timestamp created_at = 5;
2865
+ */
2866
+ createdAt?: Timestamp;
2867
+
2868
+ /**
2869
+ * @generated from field: google.protobuf.Timestamp updated_at = 6;
2870
+ */
2871
+ updatedAt?: Timestamp;
2872
+ };
2873
+
2874
+ /**
2875
+ * Describes the message silvana.orderbook.v1.LiquidityProvider.
2876
+ * Use `create(LiquidityProviderSchema)` to create a new message.
2877
+ */
2878
+ export const LiquidityProviderSchema: GenMessage<LiquidityProvider> = /*@__PURE__*/
2879
+ messageDesc(file_proto_silvana_orderbook_v1_orderbook, 53);
2880
+
2881
+ /**
2882
+ * Get liquidity providers list
2883
+ *
2884
+ * @generated from message silvana.orderbook.v1.GetLiquidityProvidersRequest
2885
+ */
2886
+ export type GetLiquidityProvidersRequest = Message<"silvana.orderbook.v1.GetLiquidityProvidersRequest"> & {
2887
+ /**
2888
+ * @generated from field: silvana.orderbook.v1.JWTAuth auth = 1;
2889
+ */
2890
+ auth?: JWTAuth;
2891
+
2892
+ /**
2893
+ * Only return LPs active within N seconds (default: all)
2894
+ *
2895
+ * @generated from field: optional uint32 active_seconds = 2;
2896
+ */
2897
+ activeSeconds?: number;
2898
+
2899
+ /**
2900
+ * Pagination
2901
+ *
2902
+ * @generated from field: optional uint32 limit = 3;
2903
+ */
2904
+ limit?: number;
2905
+
2906
+ /**
2907
+ * @generated from field: optional uint32 offset = 4;
2908
+ */
2909
+ offset?: number;
2910
+
2911
+ /**
2912
+ * @generated from field: optional silvana.orderbook.v1.ExternalAuth external_auth = 10;
2913
+ */
2914
+ externalAuth?: ExternalAuth;
2915
+ };
2916
+
2917
+ /**
2918
+ * Describes the message silvana.orderbook.v1.GetLiquidityProvidersRequest.
2919
+ * Use `create(GetLiquidityProvidersRequestSchema)` to create a new message.
2920
+ */
2921
+ export const GetLiquidityProvidersRequestSchema: GenMessage<GetLiquidityProvidersRequest> = /*@__PURE__*/
2922
+ messageDesc(file_proto_silvana_orderbook_v1_orderbook, 54);
2923
+
2924
+ /**
2925
+ * @generated from message silvana.orderbook.v1.GetLiquidityProvidersResponse
2926
+ */
2927
+ export type GetLiquidityProvidersResponse = Message<"silvana.orderbook.v1.GetLiquidityProvidersResponse"> & {
2928
+ /**
2929
+ * @generated from field: bool success = 1;
2930
+ */
2931
+ success: boolean;
2932
+
2933
+ /**
2934
+ * @generated from field: string message = 2;
2935
+ */
2936
+ message: string;
2937
+
2938
+ /**
2939
+ * @generated from field: repeated silvana.orderbook.v1.LiquidityProvider liquidity_providers = 3;
2940
+ */
2941
+ liquidityProviders: LiquidityProvider[];
2942
+
2943
+ /**
2944
+ * @generated from field: uint32 total = 4;
2945
+ */
2946
+ total: number;
2947
+ };
2948
+
2949
+ /**
2950
+ * Describes the message silvana.orderbook.v1.GetLiquidityProvidersResponse.
2951
+ * Use `create(GetLiquidityProvidersResponseSchema)` to create a new message.
2952
+ */
2953
+ export const GetLiquidityProvidersResponseSchema: GenMessage<GetLiquidityProvidersResponse> = /*@__PURE__*/
2954
+ messageDesc(file_proto_silvana_orderbook_v1_orderbook, 55);
2955
+
2956
+ /**
2957
+ * Waiting list entry for users pending onboarding
2958
+ *
2959
+ * @generated from message silvana.orderbook.v1.WaitingListEntry
2960
+ */
2961
+ export type WaitingListEntry = Message<"silvana.orderbook.v1.WaitingListEntry"> & {
2962
+ /**
2963
+ * @generated from field: uint64 id = 1;
2964
+ */
2965
+ id: bigint;
2966
+
2967
+ /**
2968
+ * @generated from field: optional string party_id = 2;
2969
+ */
2970
+ partyId?: string;
2971
+
2972
+ /**
2973
+ * @generated from field: google.protobuf.Struct user_data = 3;
2974
+ */
2975
+ userData?: JsonObject;
2976
+
2977
+ /**
2978
+ * loop_wallet, form, supa_wallet
2979
+ *
2980
+ * @generated from field: string source = 4;
2981
+ */
2982
+ source: string;
2983
+
2984
+ /**
2985
+ * @generated from field: optional string email = 5;
2986
+ */
2987
+ email?: string;
2988
+
2989
+ /**
2990
+ * @generated from field: optional string public_key = 6;
2991
+ */
2992
+ publicKey?: string;
2993
+
2994
+ /**
2995
+ * @generated from field: bool is_onboarded = 7;
2996
+ */
2997
+ isOnboarded: boolean;
2998
+
2999
+ /**
3000
+ * @generated from field: uint64 version = 8;
3001
+ */
3002
+ version: bigint;
3003
+
3004
+ /**
3005
+ * @generated from field: optional google.protobuf.Struct metadata = 9;
3006
+ */
3007
+ metadata?: JsonObject;
3008
+
3009
+ /**
3010
+ * @generated from field: google.protobuf.Timestamp created_at = 10;
3011
+ */
3012
+ createdAt?: Timestamp;
3013
+
3014
+ /**
3015
+ * @generated from field: google.protobuf.Timestamp updated_at = 11;
3016
+ */
3017
+ updatedAt?: Timestamp;
3018
+ };
3019
+
3020
+ /**
3021
+ * Describes the message silvana.orderbook.v1.WaitingListEntry.
3022
+ * Use `create(WaitingListEntrySchema)` to create a new message.
3023
+ */
3024
+ export const WaitingListEntrySchema: GenMessage<WaitingListEntry> = /*@__PURE__*/
3025
+ messageDesc(file_proto_silvana_orderbook_v1_orderbook, 56);
3026
+
3027
+ /**
3028
+ * Add entry to waiting list (JWT auth with user 'onboard')
3029
+ *
3030
+ * @generated from message silvana.orderbook.v1.AddWaitingListEntryRequest
3031
+ */
3032
+ export type AddWaitingListEntryRequest = Message<"silvana.orderbook.v1.AddWaitingListEntryRequest"> & {
3033
+ /**
3034
+ * @generated from field: silvana.orderbook.v1.JWTAuth auth = 1;
3035
+ */
3036
+ auth?: JWTAuth;
3037
+
3038
+ /**
3039
+ * @generated from field: google.protobuf.Struct user_data = 2;
3040
+ */
3041
+ userData?: JsonObject;
3042
+
3043
+ /**
3044
+ * @generated from field: string source = 3;
3045
+ */
3046
+ source: string;
3047
+
3048
+ /**
3049
+ * @generated from field: optional string email = 4;
3050
+ */
3051
+ email?: string;
3052
+
3053
+ /**
3054
+ * @generated from field: optional string public_key = 5;
3055
+ */
3056
+ publicKey?: string;
3057
+
3058
+ /**
3059
+ * @generated from field: optional google.protobuf.Struct metadata = 6;
3060
+ */
3061
+ metadata?: JsonObject;
3062
+ };
3063
+
3064
+ /**
3065
+ * Describes the message silvana.orderbook.v1.AddWaitingListEntryRequest.
3066
+ * Use `create(AddWaitingListEntryRequestSchema)` to create a new message.
3067
+ */
3068
+ export const AddWaitingListEntryRequestSchema: GenMessage<AddWaitingListEntryRequest> = /*@__PURE__*/
3069
+ messageDesc(file_proto_silvana_orderbook_v1_orderbook, 57);
3070
+
3071
+ /**
3072
+ * @generated from message silvana.orderbook.v1.AddWaitingListEntryResponse
3073
+ */
3074
+ export type AddWaitingListEntryResponse = Message<"silvana.orderbook.v1.AddWaitingListEntryResponse"> & {
3075
+ /**
3076
+ * @generated from field: bool success = 1;
3077
+ */
3078
+ success: boolean;
3079
+
3080
+ /**
3081
+ * @generated from field: string message = 2;
3082
+ */
3083
+ message: string;
3084
+
3085
+ /**
3086
+ * @generated from field: uint64 id = 3;
3087
+ */
3088
+ id: bigint;
3089
+ };
3090
+
3091
+ /**
3092
+ * Describes the message silvana.orderbook.v1.AddWaitingListEntryResponse.
3093
+ * Use `create(AddWaitingListEntryResponseSchema)` to create a new message.
3094
+ */
3095
+ export const AddWaitingListEntryResponseSchema: GenMessage<AddWaitingListEntryResponse> = /*@__PURE__*/
3096
+ messageDesc(file_proto_silvana_orderbook_v1_orderbook, 58);
3097
+
3098
+ /**
3099
+ * Canton round with conversion coefficients for reward calculations
3100
+ *
3101
+ * @generated from message silvana.orderbook.v1.Round
3102
+ */
3103
+ export type Round = Message<"silvana.orderbook.v1.Round"> & {
3104
+ /**
3105
+ * @generated from field: uint64 round_number = 1;
3106
+ */
3107
+ roundNumber: bigint;
3108
+
3109
+ /**
3110
+ * DECIMAL(38,10) as string
3111
+ *
3112
+ * @generated from field: optional string issuance_per_featured_app_reward_coupon = 2;
3113
+ */
3114
+ issuancePerFeaturedAppRewardCoupon?: string;
3115
+
3116
+ /**
3117
+ * DECIMAL(38,10) as string
3118
+ *
3119
+ * @generated from field: optional string issuance_per_unfeatured_app_reward_coupon = 3;
3120
+ */
3121
+ issuancePerUnfeaturedAppRewardCoupon?: string;
3122
+
3123
+ /**
3124
+ * DECIMAL(38,10) as string
3125
+ *
3126
+ * @generated from field: optional string cc_usd_rate = 4;
3127
+ */
3128
+ ccUsdRate?: string;
3129
+
3130
+ /**
3131
+ * DECIMAL(38,10) as string
3132
+ *
3133
+ * @generated from field: optional string traffic_cost_usd_per_mb = 5;
3134
+ */
3135
+ trafficCostUsdPerMb?: string;
3136
+
3137
+ /**
3138
+ * @generated from field: google.protobuf.Timestamp created_at = 6;
3139
+ */
3140
+ createdAt?: Timestamp;
3141
+
3142
+ /**
3143
+ * @generated from field: google.protobuf.Timestamp updated_at = 7;
3144
+ */
3145
+ updatedAt?: Timestamp;
3146
+ };
3147
+
3148
+ /**
3149
+ * Describes the message silvana.orderbook.v1.Round.
3150
+ * Use `create(RoundSchema)` to create a new message.
3151
+ */
3152
+ export const RoundSchema: GenMessage<Round> = /*@__PURE__*/
3153
+ messageDesc(file_proto_silvana_orderbook_v1_orderbook, 59);
3154
+
3155
+ /**
3156
+ * Invite code for user onboarding
3157
+ *
3158
+ * @generated from message silvana.orderbook.v1.Invite
3159
+ */
3160
+ export type Invite = Message<"silvana.orderbook.v1.Invite"> & {
3161
+ /**
3162
+ * @generated from field: string invite_code = 1;
3163
+ */
3164
+ inviteCode: string;
3165
+
3166
+ /**
3167
+ * @generated from field: string channel = 2;
3168
+ */
3169
+ channel: string;
3170
+
3171
+ /**
3172
+ * DECIMAL(38,10) as string
3173
+ *
3174
+ * @generated from field: optional string rewards = 3;
3175
+ */
3176
+ rewards?: string;
3177
+
3178
+ /**
3179
+ * @generated from field: optional google.protobuf.Struct metadata = 4;
3180
+ */
3181
+ metadata?: JsonObject;
3182
+
3183
+ /**
3184
+ * @generated from field: silvana.orderbook.v1.InviteStatus status = 5;
3185
+ */
3186
+ status: InviteStatus;
3187
+
3188
+ /**
3189
+ * @generated from field: uint32 count_used = 6;
3190
+ */
3191
+ countUsed: number;
3192
+
3193
+ /**
3194
+ * @generated from field: optional uint32 max_count = 7;
3195
+ */
3196
+ maxCount?: number;
3197
+
3198
+ /**
3199
+ * @generated from field: string created_by = 8;
3200
+ */
3201
+ createdBy: string;
3202
+
3203
+ /**
3204
+ * @generated from field: google.protobuf.Timestamp created_at = 9;
3205
+ */
3206
+ createdAt?: Timestamp;
3207
+
3208
+ /**
3209
+ * @generated from field: google.protobuf.Timestamp updated_at = 10;
3210
+ */
3211
+ updatedAt?: Timestamp;
3212
+ };
3213
+
3214
+ /**
3215
+ * Describes the message silvana.orderbook.v1.Invite.
3216
+ * Use `create(InviteSchema)` to create a new message.
3217
+ */
3218
+ export const InviteSchema: GenMessage<Invite> = /*@__PURE__*/
3219
+ messageDesc(file_proto_silvana_orderbook_v1_orderbook, 60);
3220
+
3221
+ /**
3222
+ * Get invite by code
3223
+ *
3224
+ * @generated from message silvana.orderbook.v1.GetInviteRequest
3225
+ */
3226
+ export type GetInviteRequest = Message<"silvana.orderbook.v1.GetInviteRequest"> & {
3227
+ /**
3228
+ * @generated from field: string invite_code = 1;
3229
+ */
3230
+ inviteCode: string;
3231
+ };
3232
+
3233
+ /**
3234
+ * Describes the message silvana.orderbook.v1.GetInviteRequest.
3235
+ * Use `create(GetInviteRequestSchema)` to create a new message.
3236
+ */
3237
+ export const GetInviteRequestSchema: GenMessage<GetInviteRequest> = /*@__PURE__*/
3238
+ messageDesc(file_proto_silvana_orderbook_v1_orderbook, 61);
3239
+
3240
+ /**
3241
+ * @generated from message silvana.orderbook.v1.GetInviteResponse
3242
+ */
3243
+ export type GetInviteResponse = Message<"silvana.orderbook.v1.GetInviteResponse"> & {
3244
+ /**
3245
+ * @generated from field: bool found = 1;
3246
+ */
3247
+ found: boolean;
3248
+
3249
+ /**
3250
+ * @generated from field: optional silvana.orderbook.v1.Invite invite = 2;
3251
+ */
3252
+ invite?: Invite;
3253
+ };
3254
+
3255
+ /**
3256
+ * Describes the message silvana.orderbook.v1.GetInviteResponse.
3257
+ * Use `create(GetInviteResponseSchema)` to create a new message.
3258
+ */
3259
+ export const GetInviteResponseSchema: GenMessage<GetInviteResponse> = /*@__PURE__*/
3260
+ messageDesc(file_proto_silvana_orderbook_v1_orderbook, 62);
3261
+
3262
+ /**
3263
+ * Use invite code (increments count, marks used if at max)
3264
+ *
3265
+ * @generated from message silvana.orderbook.v1.UseInviteRequest
3266
+ */
3267
+ export type UseInviteRequest = Message<"silvana.orderbook.v1.UseInviteRequest"> & {
3268
+ /**
3269
+ * @generated from field: string invite_code = 1;
3270
+ */
3271
+ inviteCode: string;
3272
+
3273
+ /**
3274
+ * Who is using the invite
3275
+ *
3276
+ * @generated from field: optional string party_id = 2;
3277
+ */
3278
+ partyId?: string;
3279
+ };
3280
+
3281
+ /**
3282
+ * Describes the message silvana.orderbook.v1.UseInviteRequest.
3283
+ * Use `create(UseInviteRequestSchema)` to create a new message.
3284
+ */
3285
+ export const UseInviteRequestSchema: GenMessage<UseInviteRequest> = /*@__PURE__*/
3286
+ messageDesc(file_proto_silvana_orderbook_v1_orderbook, 63);
3287
+
3288
+ /**
3289
+ * @generated from message silvana.orderbook.v1.UseInviteResponse
3290
+ */
3291
+ export type UseInviteResponse = Message<"silvana.orderbook.v1.UseInviteResponse"> & {
3292
+ /**
3293
+ * @generated from field: bool success = 1;
3294
+ */
3295
+ success: boolean;
3296
+
3297
+ /**
3298
+ * @generated from field: string message = 2;
3299
+ */
3300
+ message: string;
3301
+
3302
+ /**
3303
+ * Updated invite after use
3304
+ *
3305
+ * @generated from field: optional silvana.orderbook.v1.Invite invite = 3;
3306
+ */
3307
+ invite?: Invite;
3308
+ };
3309
+
3310
+ /**
3311
+ * Describes the message silvana.orderbook.v1.UseInviteResponse.
3312
+ * Use `create(UseInviteResponseSchema)` to create a new message.
3313
+ */
3314
+ export const UseInviteResponseSchema: GenMessage<UseInviteResponse> = /*@__PURE__*/
3315
+ messageDesc(file_proto_silvana_orderbook_v1_orderbook, 64);
3316
+
2769
3317
  /**
2770
3318
  * Create a new instrument
2771
3319
  *
@@ -2843,7 +3391,7 @@ export type CreateInstrumentRequest = Message<"silvana.orderbook.v1.CreateInstru
2843
3391
  * Use `create(CreateInstrumentRequestSchema)` to create a new message.
2844
3392
  */
2845
3393
  export const CreateInstrumentRequestSchema: GenMessage<CreateInstrumentRequest> = /*@__PURE__*/
2846
- messageDesc(file_proto_silvana_orderbook_v1_orderbook, 53);
3394
+ messageDesc(file_proto_silvana_orderbook_v1_orderbook, 65);
2847
3395
 
2848
3396
  /**
2849
3397
  * @generated from message silvana.orderbook.v1.CreateInstrumentResponse
@@ -2870,7 +3418,7 @@ export type CreateInstrumentResponse = Message<"silvana.orderbook.v1.CreateInstr
2870
3418
  * Use `create(CreateInstrumentResponseSchema)` to create a new message.
2871
3419
  */
2872
3420
  export const CreateInstrumentResponseSchema: GenMessage<CreateInstrumentResponse> = /*@__PURE__*/
2873
- messageDesc(file_proto_silvana_orderbook_v1_orderbook, 54);
3421
+ messageDesc(file_proto_silvana_orderbook_v1_orderbook, 66);
2874
3422
 
2875
3423
  /**
2876
3424
  * Create a new market
@@ -2967,7 +3515,7 @@ export type CreateMarketRequest = Message<"silvana.orderbook.v1.CreateMarketRequ
2967
3515
  * Use `create(CreateMarketRequestSchema)` to create a new message.
2968
3516
  */
2969
3517
  export const CreateMarketRequestSchema: GenMessage<CreateMarketRequest> = /*@__PURE__*/
2970
- messageDesc(file_proto_silvana_orderbook_v1_orderbook, 55);
3518
+ messageDesc(file_proto_silvana_orderbook_v1_orderbook, 67);
2971
3519
 
2972
3520
  /**
2973
3521
  * @generated from message silvana.orderbook.v1.CreateMarketResponse
@@ -2994,7 +3542,7 @@ export type CreateMarketResponse = Message<"silvana.orderbook.v1.CreateMarketRes
2994
3542
  * Use `create(CreateMarketResponseSchema)` to create a new message.
2995
3543
  */
2996
3544
  export const CreateMarketResponseSchema: GenMessage<CreateMarketResponse> = /*@__PURE__*/
2997
- messageDesc(file_proto_silvana_orderbook_v1_orderbook, 56);
3545
+ messageDesc(file_proto_silvana_orderbook_v1_orderbook, 68);
2998
3546
 
2999
3547
  /**
3000
3548
  * Update price feeds for an existing market
@@ -3032,7 +3580,7 @@ export type UpdateMarketPriceFeedsRequest = Message<"silvana.orderbook.v1.Update
3032
3580
  * Use `create(UpdateMarketPriceFeedsRequestSchema)` to create a new message.
3033
3581
  */
3034
3582
  export const UpdateMarketPriceFeedsRequestSchema: GenMessage<UpdateMarketPriceFeedsRequest> = /*@__PURE__*/
3035
- messageDesc(file_proto_silvana_orderbook_v1_orderbook, 57);
3583
+ messageDesc(file_proto_silvana_orderbook_v1_orderbook, 69);
3036
3584
 
3037
3585
  /**
3038
3586
  * @generated from message silvana.orderbook.v1.UpdateMarketPriceFeedsResponse
@@ -3061,7 +3609,7 @@ export type UpdateMarketPriceFeedsResponse = Message<"silvana.orderbook.v1.Updat
3061
3609
  * Use `create(UpdateMarketPriceFeedsResponseSchema)` to create a new message.
3062
3610
  */
3063
3611
  export const UpdateMarketPriceFeedsResponseSchema: GenMessage<UpdateMarketPriceFeedsResponse> = /*@__PURE__*/
3064
- messageDesc(file_proto_silvana_orderbook_v1_orderbook, 58);
3612
+ messageDesc(file_proto_silvana_orderbook_v1_orderbook, 70);
3065
3613
 
3066
3614
  /**
3067
3615
  * Order type enumeration
@@ -3275,6 +3823,44 @@ export enum MarketType {
3275
3823
  export const MarketTypeSchema: GenEnum<MarketType> = /*@__PURE__*/
3276
3824
  enumDesc(file_proto_silvana_orderbook_v1_orderbook, 4);
3277
3825
 
3826
+ /**
3827
+ * Invite status enum
3828
+ *
3829
+ * @generated from enum silvana.orderbook.v1.InviteStatus
3830
+ */
3831
+ export enum InviteStatus {
3832
+ /**
3833
+ * @generated from enum value: INVITE_STATUS_UNSPECIFIED = 0;
3834
+ */
3835
+ UNSPECIFIED = 0,
3836
+
3837
+ /**
3838
+ * @generated from enum value: INVITE_STATUS_VALID = 1;
3839
+ */
3840
+ VALID = 1,
3841
+
3842
+ /**
3843
+ * @generated from enum value: INVITE_STATUS_EXPIRED = 2;
3844
+ */
3845
+ EXPIRED = 2,
3846
+
3847
+ /**
3848
+ * @generated from enum value: INVITE_STATUS_USED = 3;
3849
+ */
3850
+ USED = 3,
3851
+
3852
+ /**
3853
+ * @generated from enum value: INVITE_STATUS_CANCELLED = 4;
3854
+ */
3855
+ CANCELLED = 4,
3856
+ }
3857
+
3858
+ /**
3859
+ * Describes the enum silvana.orderbook.v1.InviteStatus.
3860
+ */
3861
+ export const InviteStatusSchema: GenEnum<InviteStatus> = /*@__PURE__*/
3862
+ enumDesc(file_proto_silvana_orderbook_v1_orderbook, 5);
3863
+
3278
3864
  /**
3279
3865
  * @generated from service silvana.orderbook.v1.OrderbookService
3280
3866
  */
@@ -3389,6 +3975,44 @@ export const OrderbookService: GenService<{
3389
3975
  input: typeof GetPartiesRequestSchema;
3390
3976
  output: typeof GetPartiesResponseSchema;
3391
3977
  },
3978
+ /**
3979
+ * Liquidity provider operations
3980
+ *
3981
+ * @generated from rpc silvana.orderbook.v1.OrderbookService.GetLiquidityProviders
3982
+ */
3983
+ getLiquidityProviders: {
3984
+ methodKind: "unary";
3985
+ input: typeof GetLiquidityProvidersRequestSchema;
3986
+ output: typeof GetLiquidityProvidersResponseSchema;
3987
+ },
3988
+ /**
3989
+ * Waiting list operations (JWT auth with user 'onboard')
3990
+ *
3991
+ * @generated from rpc silvana.orderbook.v1.OrderbookService.AddWaitingListEntry
3992
+ */
3993
+ addWaitingListEntry: {
3994
+ methodKind: "unary";
3995
+ input: typeof AddWaitingListEntryRequestSchema;
3996
+ output: typeof AddWaitingListEntryResponseSchema;
3997
+ },
3998
+ /**
3999
+ * Invite operations
4000
+ *
4001
+ * @generated from rpc silvana.orderbook.v1.OrderbookService.GetInvite
4002
+ */
4003
+ getInvite: {
4004
+ methodKind: "unary";
4005
+ input: typeof GetInviteRequestSchema;
4006
+ output: typeof GetInviteResponseSchema;
4007
+ },
4008
+ /**
4009
+ * @generated from rpc silvana.orderbook.v1.OrderbookService.UseInvite
4010
+ */
4011
+ useInvite: {
4012
+ methodKind: "unary";
4013
+ input: typeof UseInviteRequestSchema;
4014
+ output: typeof UseInviteResponseSchema;
4015
+ },
3392
4016
  /**
3393
4017
  * Admin operations (require operator authentication)
3394
4018
  *