@shipload/sdk 1.0.0-next.17 → 1.0.0-next.19

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 (38) hide show
  1. package/lib/shipload.d.ts +136 -16
  2. package/lib/shipload.js +505 -149
  3. package/lib/shipload.js.map +1 -1
  4. package/lib/shipload.m.js +494 -151
  5. package/lib/shipload.m.js.map +1 -1
  6. package/lib/testing.d.ts +18 -6
  7. package/lib/testing.js +78 -40
  8. package/lib/testing.js.map +1 -1
  9. package/lib/testing.m.js +79 -41
  10. package/lib/testing.m.js.map +1 -1
  11. package/package.json +1 -1
  12. package/src/capabilities/gathering.ts +2 -1
  13. package/src/contracts/server.ts +52 -15
  14. package/src/data/capability-formulas.ts +1 -1
  15. package/src/data/items.json +24 -24
  16. package/src/data/kind-registry.json +7 -0
  17. package/src/data/kind-registry.ts +14 -1
  18. package/src/data/recipes-runtime.ts +5 -0
  19. package/src/data/recipes.json +64 -54
  20. package/src/derivation/build-methods.ts +45 -0
  21. package/src/derivation/capabilities.ts +11 -5
  22. package/src/derivation/index.ts +7 -2
  23. package/src/derivation/reserve-regen.ts +34 -0
  24. package/src/derivation/resources.ts +9 -1
  25. package/src/derivation/stratum.ts +10 -10
  26. package/src/derivation/tiers.ts +28 -7
  27. package/src/entities/makers.ts +2 -0
  28. package/src/index-module.ts +28 -2
  29. package/src/managers/actions.ts +19 -0
  30. package/src/managers/construction-types.ts +47 -0
  31. package/src/managers/construction.ts +147 -0
  32. package/src/managers/index.ts +11 -0
  33. package/src/managers/plot.ts +123 -0
  34. package/src/nft/buildImmutableData.ts +9 -9
  35. package/src/nft/description.ts +6 -6
  36. package/src/resolution/describe-module.ts +2 -4
  37. package/src/subscriptions/types.ts +1 -0
  38. package/src/types.ts +2 -0
package/lib/shipload.js CHANGED
@@ -225,7 +225,7 @@ var platform = /*#__PURE__*/Object.freeze({
225
225
  Contract: Contract$1
226
226
  });
227
227
 
228
- const abiBlob = antelope.Blob.from('DmVvc2lvOjphYmkvMS4yAhVCX3ZlY3Rvcl9lbnRpdHlfcmVmX0UMZW50aXR5X3JlZltdDWxvY2F0aW9uX3R5cGUFdWludDiSAQlhZGRtb2R1bGUABAllbnRpdHlfaWQGdWludDY0DG1vZHVsZV9pbmRleAV1aW50OAptb2R1bGVfcmVmCWNhcmdvX3JlZgp0YXJnZXRfcmVmCmNhcmdvX3JlZj8IYWRkbmV4dXMAAwpuZXh1c19uYW1lBnN0cmluZwF4BWludDY0AXkFaW50NjQHYWR2YW5jZQACBnJldmVhbAZzdHJpbmcGY29tbWl0C2NoZWNrc3VtMjU2BWJsZW5kAAICaWQGdWludDY0BmlucHV0cwxjYXJnb19pdGVtW10GY2FuY2VsAAICaWQGdWludDY0BWNvdW50BnVpbnQ2NA5jYW5jZWxfcmVzdWx0cwAGCWVudGl0eV9pZAZ1aW50NjQLZW50aXR5X3R5cGUEbmFtZQ9jYW5jZWxsZWRfY291bnQFdWludDgQc2NoZWR1bGVfc3RhcnRlZAt0aW1lX3BvaW50PwtlbnRpdHlncm91cAd1aW50NjQ/DWdyb3VwX21lbWJlcnMWQl92ZWN0b3JfZW50aXR5X3JlZl9FPwpjYXJnb19pdGVtAAQHaXRlbV9pZAZ1aW50MTYFc3RhdHMGdWludDY0B21vZHVsZXMObW9kdWxlX2VudHJ5W10IcXVhbnRpdHkGdWludDMyCWNhcmdvX3JlZgADB2l0ZW1faWQGdWludDE2BXN0YXRzBnVpbnQ2NAdtb2R1bGVzDm1vZHVsZV9lbnRyeVtdCWNhcmdvX3JvdwAGAmlkBnVpbnQ2NAllbnRpdHlfaWQGdWludDY0B2l0ZW1faWQGdWludDY0CHF1YW50aXR5BnVpbnQ2NAVzdGF0cwZ1aW50NjQHbW9kdWxlcw5tb2R1bGVfZW50cnlbXQpjYXJnb192aWV3AAUHaXRlbV9pZAZ1aW50MTYFc3RhdHMGdWludDY0B21vZHVsZXMObW9kdWxlX2VudHJ5W10IcXVhbnRpdHkGdWludDMyAmlkBnVpbnQ2NAxjbGFpbXN0YXJ0ZXIAAwdhY2NvdW50BG5hbWUBeAVpbnQ2NAF5BWludDY0CWNsZWFucnN2cAACBWVwb2NoBnVpbnQ2NAhtYXhfcm93cwZ1aW50NjQKY2xlYXJ0YWJsZQADCnRhYmxlX25hbWUEbmFtZQVzY29wZQVuYW1lPwhtYXhfcm93cwd1aW50NjQ/BmNvbW1pdAABBmNvbW1pdAtjaGVja3N1bTI1Ngljb25maWdsb2cAAQZjb25maWcLZ2FtZV9jb25maWcLY29vcmRpbmF0ZXMAAwF4BWludDY0AXkFaW50NjQBegd1aW50MTY/BWNyYWZ0AAQCaWQGdWludDY0CXJlY2lwZV9pZAZ1aW50MTYIcXVhbnRpdHkGdWludDMyBmlucHV0cwxjYXJnb19pdGVtW10NY3JhZnRlcl9zdGF0cwACBXNwZWVkBnVpbnQxNgVkcmFpbgZ1aW50MTYIZGVtb2xpc2gAAQllbnRpdHlfaWQGdWludDY0BmRlcGxveQACAmlkBnVpbnQ2NANyZWYJY2FyZ29fcmVmCWRlcGxveW5mdAADBW93bmVyBG5hbWUIYXNzZXRfaWQGdWludDY0D3RhcmdldF9uZXh1c19pZAZ1aW50NjQKZGVzY2VudGl0eQAEB2l0ZW1faWQGdWludDE2Cmh1bGxfc3RhdHMGdWludDY0DG1vZHVsZV9pdGVtcwh1aW50MTZbXQxtb2R1bGVfc3RhdHMIdWludDY0W10GZW5hYmxlAAEHZW5hYmxlZARib29sDGVuZXJneV9zdGF0cwACCGNhcGFjaXR5BnVpbnQxNghyZWNoYXJnZQZ1aW50MTYUZW50aXR5X2N1cnJlbnRfc3RhdGUAAgtjb29yZGluYXRlcwtjb29yZGluYXRlcwZlbmVyZ3kGdWludDE2D2VudGl0eV9kZWZhdWx0cwACC3dhcmVob3VzZV96BnVpbnQxNgtjb250YWluZXJfegZ1aW50MTYLZW50aXR5X2luZm8AGQR0eXBlBG5hbWUCaWQGdWludDY0BW93bmVyBG5hbWULZW50aXR5X25hbWUGc3RyaW5nC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzCWNhcmdvbWFzcwZ1aW50MzIFY2FyZ28MY2FyZ29fdmlld1tdB2xvYWRlcnMNbG9hZGVyX3N0YXRzPwdtb2R1bGVzDm1vZHVsZV9lbnRyeVtdBmVuZXJneQd1aW50MTY/CGh1bGxtYXNzB3VpbnQzMj8HZW5naW5lcw9tb3ZlbWVudF9zdGF0cz8JZ2VuZXJhdG9yDWVuZXJneV9zdGF0cz8IY2FwYWNpdHkHdWludDMyPwhnYXRoZXJlcg9nYXRoZXJlcl9zdGF0cz8GaGF1bGVyDWhhdWxlcl9zdGF0cz8Ed2FycAt3YXJwX3N0YXRzPwdjcmFmdGVyDmNyYWZ0ZXJfc3RhdHM/B2lzX2lkbGUEYm9vbAxjdXJyZW50X3Rhc2sFdGFzaz8UY3VycmVudF90YXNrX2VsYXBzZWQGdWludDMyFmN1cnJlbnRfdGFza19yZW1haW5pbmcGdWludDMyDXBlbmRpbmdfdGFza3MGdGFza1tdB2lkbGVfYXQLdGltZV9wb2ludD8Ic2NoZWR1bGUJc2NoZWR1bGU/DWVudGl0eV9sYXlvdXQAAg5lbnRpdHlfaXRlbV9pZAZ1aW50MTYFc2xvdHMKc2xvdF9kZWZbXRVlbnRpdHlfbGF5b3V0c19yZXN1bHQAAQhlbnRpdGllcw9lbnRpdHlfbGF5b3V0W10KZW50aXR5X3JlZgACC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAplbnRpdHlfcm93ABQCaWQGdWludDY0BW93bmVyBG5hbWUEa2luZARuYW1lBG5hbWUGc3RyaW5nBXN0YXRzBnVpbnQ2NAtjb29yZGluYXRlcwtjb29yZGluYXRlcwhodWxsbWFzcwd1aW50MzI/CGNhcGFjaXR5B3VpbnQzMj8GZW5lcmd5B3VpbnQxNj8JY2FyZ29tYXNzBnVpbnQzMgdlbmdpbmVzD21vdmVtZW50X3N0YXRzPwlnZW5lcmF0b3INZW5lcmd5X3N0YXRzPwdsb2FkZXJzDWxvYWRlcl9zdGF0cz8IZ2F0aGVyZXIPZ2F0aGVyZXJfc3RhdHM/BHdhcnALd2FycF9zdGF0cz8HY3JhZnRlcg5jcmFmdGVyX3N0YXRzPwZoYXVsZXINaGF1bGVyX3N0YXRzPwdtb2R1bGVzDm1vZHVsZV9lbnRyeVtdCHNjaGVkdWxlCXNjaGVkdWxlPwdpdGVtX2lkBnVpbnQxNg5lbnRpdHlfc3VtbWFyeQAIBHR5cGUEbmFtZQJpZAZ1aW50NjQFb3duZXIEbmFtZQtlbnRpdHlfbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMHaXNfaWRsZQRib29sDnJlc29sdmVkX2NvdW50BnVpbnQzMg1wZW5kaW5nX2NvdW50BnVpbnQzMhBlbnRpdHlfdGFza19pbmZvAAQJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lCnRhc2tfY291bnQFdWludDgQc2NoZWR1bGVfc3RhcnRlZAp0aW1lX3BvaW50D2VudGl0eWdyb3VwX3JvdwACAmlkBnVpbnQ2NAxwYXJ0aWNpcGFudHMMZW50aXR5X3JlZltdC2VudW1fbWVtYmVyAAIFdmFsdWUFdWludDgEbmFtZQZzdHJpbmcLZW51bV9yZXN1bHQAAQdtZW1iZXJzDWVudW1fbWVtYmVyW10MZml4Y2FyZ29tYXNzAAEJZW50aXR5X2lkBnVpbnQ2NAtnYW1lX2NvbmZpZwADB3ZlcnNpb24GdWludDMyCGRlZmF1bHRzD2VudGl0eV9kZWZhdWx0cwVpdGVtcwppdGVtX2RlZltdBmdhdGhlcgAECXNvdXJjZV9pZAZ1aW50NjQOZGVzdGluYXRpb25faWQGdWludDY0B3N0cmF0dW0GdWludDE2CHF1YW50aXR5BnVpbnQzMg5nYXRoZXJlcl9zdGF0cwAEBXlpZWxkBnVpbnQxNgVkcmFpbgZ1aW50MTYFZGVwdGgGdWludDE2BXNwZWVkBnVpbnQxNglnZXRjb25maWcAAAtnZXRlbGlnaWJsZQACBmNvb3Jkcwtjb29yZGluYXRlcwdzdHJhdHVtBnVpbnQxNglnZXRlbnRjbHMAAAtnZXRlbnRpdGllcwACBW93bmVyBG5hbWULZW50aXR5X3R5cGUFbmFtZT8JZ2V0ZW50aXR5AAEJZW50aXR5X2lkBnVpbnQ2NAtnZXRpdGVtZGF0YQAACmdldGl0ZW1pZHMAAAhnZXRpdGVtcwAADGdldGl0ZW10eXBlcwAAC2dldGtpbmRtZXRhAAALZ2V0bG9jYXRpb24AAgF4BWludDY0AXkFaW50NjQKZ2V0bG9jZGF0YQACAXgFaW50NjQBeQVpbnQ2NAtnZXRtb2R0eXBlcwAACmdldG1vZHVsZXMAAAlnZXRuZWFyYnkAAgllbnRpdHlfaWQGdWludDY0CHJlY2hhcmdlBGJvb2wKZ2V0bmZ0aW5mbwAACWdldHBsYXllcgABB2FjY291bnQEbmFtZQxnZXRwcm9qc3RhdGUAAgllbnRpdHlfaWQGdWludDY0CnRhc2tfY291bnQGdWludDg/CWdldHJlY2lwZQABDm91dHB1dF9pdGVtX2lkBnVpbnQxNgpnZXRyZWNpcGVzAAILbG93ZXJfYm91bmQGdWludDE2BWxpbWl0BXVpbnQ4CmdldHJlc2NhdHMAAAtnZXRyZXNlcnZlcwACAXgFaW50NjQBeQVpbnQ2NAxnZXRyZXNvdXJjZXMAAAhnZXRzbG90cwAACmdldHN0cmF0dW0AAwF4BWludDY0AXkFaW50NjQHc3RyYXR1bQZ1aW50MTYMZ2V0c3VtbWFyaWVzAAIFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQVuYW1lPwtncm91cHRyYXZlbAAECGVudGl0aWVzDGVudGl0eV9yZWZbXQF4BWludDY0AXkFaW50NjQIcmVjaGFyZ2UEYm9vbARoYXNoAAEFdmFsdWUGc3RyaW5nB2hhc2g1MTIAAQV2YWx1ZQZzdHJpbmcMaGF1bGVyX3N0YXRzAAMIY2FwYWNpdHkFdWludDgKZWZmaWNpZW5jeQZ1aW50MTYFZHJhaW4GdWludDE2C2ltcG9ydGNhcmdvAAEDcm93CWNhcmdvX3JvdwxpbXBvcnRlbnRpdHkAAQNyb3cKZW50aXR5X3JvdwtpbXBvcnRncm91cAABA3Jvdw9lbnRpdHlncm91cF9yb3cMaW1wb3J0cGxheWVyAAEFb3duZXIEbmFtZQ1pbXBvcnRyZXNlcnZlAAILZXBvY2hfc2NvcGUGdWludDMyA3JvdwtyZXNlcnZlX3JvdwtpbXBvcnRzdGF0ZQABA3JvdwlzdGF0ZV9yb3cKaW5pdGlhbGl6ZQABBHNlZWQLY2hlY2tzdW0yNTYIaXRlbV9kZWYABQJpZAZ1aW50MTYEbWFzcwZ1aW50MzIEdHlwZQV1aW50OAdzdWJ0eXBlBXVpbnQ4BHRpZXIFdWludDgMaXRlbV9pZF9wYWlyAAICaWQGdWludDE2BG5hbWUGc3RyaW5nD2l0ZW1faWRzX3Jlc3VsdAABBWl0ZW1zDml0ZW1faWRfcGFpcltdD2l0ZW1kYXRhX3Jlc3VsdAACBWl0ZW1zCml0ZW1fZGVmW10HcmVjaXBlcw5yZWNpcGVzX3Jlc3VsdAppdGVtc19pbmZvAAEFaXRlbXMKaXRlbV9kZWZbXQRqb2luAAEHYWNjb3VudARuYW1lEGtpbmRfbWV0YV9yZXN1bHQAAgVraW5kcw9raW5kX21ldGFfcm93W10JdGVtcGxhdGVzE3RlbXBsYXRlX21ldGFfcm93W10Na2luZF9tZXRhX3JvdwAFBGtpbmQEbmFtZQ5jbGFzc2lmaWNhdGlvbgV1aW50OBBjYXBhYmlsaXR5X2ZsYWdzBXVpbnQ4B3pfY29vcmQGdWludDMyDWRlZmF1bHRfbGFiZWwGc3RyaW5nDGxvYWRlcl9zdGF0cwADBG1hc3MGdWludDMyBnRocnVzdAZ1aW50MTYIcXVhbnRpdHkFdWludDgQbG9jYXRpb25fZGVyaXZlZAACDHN0YXRpY19wcm9wcw9sb2NhdGlvbl9zdGF0aWMEc2l6ZQZ1aW50MTYNbG9jYXRpb25faW5mbwACBmNvb3Jkcwtjb29yZGluYXRlcwlpc19zeXN0ZW0EYm9vbA9sb2NhdGlvbl9zdGF0aWMABQZjb29yZHMLY29vcmRpbmF0ZXMEdHlwZQ1sb2NhdGlvbl90eXBlB3N1YnR5cGUFdWludDgFc2VlZDAFdWludDgFc2VlZDEFdWludDgMbW9kdWxlX2VudHJ5AAIEdHlwZQV1aW50OAlpbnN0YWxsZWQOcGFja2VkX21vZHVsZT8LbW9kdWxlX2luZm8ABAJpZAZ1aW50MTYEbWFzcwZ1aW50MzILbW9kdWxlX3R5cGUFdWludDgEdGllcgV1aW50OA5tb2R1bGVzX3Jlc3VsdAABB21vZHVsZXMNbW9kdWxlX2luZm9bXQ5tb3ZlbWVudF9zdGF0cwACBnRocnVzdAZ1aW50MzIFZHJhaW4GdWludDE2C25lYXJieV9pbmZvAAUKY2FuX3RyYXZlbARib29sB2N1cnJlbnQUZW50aXR5X2N1cnJlbnRfc3RhdGUJcHJvamVjdGVkFGVudGl0eV9jdXJyZW50X3N0YXRlCm1heF9lbmVyZ3kGdWludDE2B3N5c3RlbXMPbmVhcmJ5X3N5c3RlbVtdDW5lYXJieV9zeXN0ZW0ABAhkaXN0YW5jZQZ1aW50NjQLZW5lcmd5X2Nvc3QGdWludDY0C2ZsaWdodF90aW1lBnVpbnQzMghsb2NhdGlvbg1sb2NhdGlvbl9pbmZvEG5mdF9pdGVtX3BheWxvYWQAAgRpdGVtCmNhcmdvX2l0ZW0IbG9jYXRpb24MY29vcmRpbmF0ZXM/Dm5mdF9zY2hlbWFfZGVmAAILc2NoZW1hX25hbWUEbmFtZQZmaWVsZHMOc2NoZW1hX2ZpZWxkW10QbmZ0X3RlbXBsYXRlX2RlZgADB2l0ZW1faWQGdWludDE2C3NjaGVtYV9uYW1lBG5hbWULdGVtcGxhdGVfaWQFaW50MzINbmZ0Y29uZmlnX3JvdwADB2l0ZW1faWQGdWludDE2C3RlbXBsYXRlX2lkBWludDMyC3NjaGVtYV9uYW1lBG5hbWUJbmZ0aW1ndXJsAAIEaXRlbQpjYXJnb19pdGVtCGxvY2F0aW9uDGNvb3JkaW5hdGVzPw5uZnRpbmZvX3Jlc3VsdAACB3NjaGVtYXMQbmZ0X3NjaGVtYV9kZWZbXQl0ZW1wbGF0ZXMSbmZ0X3RlbXBsYXRlX2RlZltdBm5vdGlmeQABBWV2ZW50CnRhc2tfZXZlbnQNcGFja2VkX21vZHVsZQACB2l0ZW1faWQGdWludDE2BXN0YXRzBnVpbnQ2NAtwbGF5ZXJfaW5mbwADBW93bmVyBG5hbWUJaXNfcGxheWVyBGJvb2wMY29tcGFueV9uYW1lBnN0cmluZwpwbGF5ZXJfcm93AAEFb3duZXIEbmFtZQ9wcm9qZWN0ZWRfc3RhdGUADgVvd25lcgRuYW1lC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzBmVuZXJneQd1aW50MTY/CWNhcmdvbWFzcwZ1aW50MzIFY2FyZ28MY2FyZ29fdmlld1tdCGh1bGxtYXNzB3VpbnQzMj8HZW5naW5lcw9tb3ZlbWVudF9zdGF0cz8HbG9hZGVycw1sb2FkZXJfc3RhdHM/CWdlbmVyYXRvcg1lbmVyZ3lfc3RhdHM/CGNhcGFjaXR5B3VpbnQzMj8IZ2F0aGVyZXIPZ2F0aGVyZXJfc3RhdHM/BmhhdWxlcg1oYXVsZXJfc3RhdHM/BHdhcnALd2FycF9zdGF0cz8HY3JhZnRlcg5jcmFmdGVyX3N0YXRzPwhyZWNoYXJnZQABAmlkBnVpbnQ2NAxyZWNpcGVfaW5wdXQABAdpdGVtX2lkBnVpbnQxNghjYXRlZ29yeQV1aW50OAR0aWVyBXVpbnQ4CHF1YW50aXR5BnVpbnQzMhByZWNpcGVfaXRlbV9pbmZvAAICaWQGdWludDE2BG1hc3MGdWludDMyD3JlY2lwZV9yZXNwb25zZQAHDm91dHB1dF9pdGVtX2lkBnVpbnQxNgtvdXRwdXRfbWFzcwZ1aW50MzIGaW5wdXRzDnJlY2lwZV9pbnB1dFtdCnN0YXRfc2xvdHMUc3RhdF9zbG90X3Jlc3BvbnNlW10NYmxlbmRfd2VpZ2h0cwVieXRlcwtvdXRwdXRfaXRlbRByZWNpcGVfaXRlbV9pbmZvC2lucHV0X2l0ZW1zEnJlY2lwZV9pdGVtX2luZm9bXQ5yZWNpcGVzX3Jlc3VsdAABB3JlY2lwZXMRcmVjaXBlX3Jlc3BvbnNlW10McmVmcnNoZW50aXR5AAEJZW50aXR5X2lkBnVpbnQ2NAtyZXNlcnZlX3JvdwAEAmlkBnVpbnQ2NAhjb29yZF9pZAZ1aW50NjQHc3RyYXR1bQZ1aW50MTYJcmVtYWluaW5nBnVpbnQzMgdyZXNvbHZlAAICaWQGdWludDY0BWNvdW50B3VpbnQ2ND8PcmVzb2x2ZV9yZXN1bHRzAAYJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lDnJlc29sdmVkX2NvdW50BXVpbnQ4FG5ld19zY2hlZHVsZV9zdGFydGVkC3RpbWVfcG9pbnQ/C2VudGl0eWdyb3VwB3VpbnQ2ND8NZ3JvdXBfbWVtYmVycxZCX3ZlY3Rvcl9lbnRpdHlfcmVmX0U/DXJlc291cmNlX2luZm8ABAJpZAZ1aW50MTYEbWFzcwZ1aW50MzIIY2F0ZWdvcnkFdWludDgEdGllcgV1aW50OA5yZXNvdXJjZV9zdGF0cwADBXN0YXQxBnVpbnQxNgVzdGF0MgZ1aW50MTYFc3RhdDMGdWludDE2EHJlc291cmNlc19yZXN1bHQAAQlyZXNvdXJjZXMPcmVzb3VyY2VfaW5mb1tdCHJtbW9kdWxlAAMJZW50aXR5X2lkBnVpbnQ2NAxtb2R1bGVfaW5kZXgFdWludDgKdGFyZ2V0X3JlZgpjYXJnb19yZWY/CHJtbmZ0Y2ZnAAEHaXRlbV9pZAZ1aW50MTYEc2FsdAABBHNhbHQGdWludDY0CHNjaGVkdWxlAAIHc3RhcnRlZAp0aW1lX3BvaW50BXRhc2tzBnRhc2tbXQxzY2hlbWFfZmllbGQAAgRuYW1lBnN0cmluZwpmaWVsZF90eXBlBnN0cmluZwlzZXRuZnRjZmcAAwdpdGVtX2lkBnVpbnQxNgt0ZW1wbGF0ZV9pZAVpbnQzMgtzY2hlbWFfbmFtZQRuYW1lCnNraXByZXZlYWwAAQZjb21taXQLY2hlY2tzdW0yNTYIc2xvdF9kZWYAAgR0eXBlBXVpbnQ4Cm91dHB1dF9wY3QGdWludDE2EnN0YXRfc2xvdF9yZXNwb25zZQABB3NvdXJjZXMNc3RhdF9zb3VyY2VbXQtzdGF0X3NvdXJjZQACC2lucHV0X2luZGV4BXVpbnQ4EGlucHV0X3N0YXRfaW5kZXgFdWludDgJc3RhdGVfcm93AAUHZW5hYmxlZARib29sBWVwb2NoBnVpbnQzMgRzYWx0BnVpbnQ2NARzZWVkC2NoZWNrc3VtMjU2BmNvbW1pdAtjaGVja3N1bTI1NgxzdHJhdHVtX2RhdGEAAgdzdHJhdHVtDHN0cmF0dW1faW5mbwVzdGF0cw5yZXNvdXJjZV9zdGF0cwxzdHJhdHVtX2luZm8ABQdpdGVtX2lkBnVpbnQxNgRzZWVkBnVpbnQ2NAhyaWNobmVzcwZ1aW50MTYHcmVzZXJ2ZQZ1aW50MzILcmVzZXJ2ZV9tYXgGdWludDMyEXN0cmF0dW1fcmVtYWluaW5nAAIHc3RyYXR1bQZ1aW50MTYJcmVtYWluaW5nBnVpbnQzMgR0YXNrAAgEdHlwZQV1aW50OAhkdXJhdGlvbgZ1aW50MzIKY2FuY2VsYWJsZQV1aW50OAtjb29yZGluYXRlcwxjb29yZGluYXRlcz8FY2FyZ28MY2FyZ29faXRlbVtdDGVudGl0eXRhcmdldAtlbnRpdHlfcmVmPwtlbnRpdHlncm91cAd1aW50NjQ/C2VuZXJneV9jb3N0B3VpbnQxNj8KdGFza19ldmVudAAJCmV2ZW50X3R5cGUFdWludDgFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQKdGFza19pbmRleAV1aW50OAR0YXNrBHRhc2sJc3RhcnRzX2F0CnRpbWVfcG9pbnQMY29tcGxldGVzX2F0CnRpbWVfcG9pbnQKbmV3X2VuZXJneQd1aW50MTY/DHRhc2tfcmVzdWx0cwABCGVudGl0aWVzEmVudGl0eV90YXNrX2luZm9bXRF0ZW1wbGF0ZV9tZXRhX3JvdwADB2l0ZW1faWQGdWludDE2BGtpbmQEbmFtZQ1kaXNwbGF5X2xhYmVsBnN0cmluZwh0cmFuc2ZlcgADCXNvdXJjZV9pZAZ1aW50NjQHZGVzdF9pZAZ1aW50NjQFaXRlbXMMY2FyZ29faXRlbVtdBnRyYXZlbAAEAmlkBnVpbnQ2NAF4BWludDY0AXkFaW50NjQIcmVjaGFyZ2UEYm9vbAl0eXBlc19yb3cABQJpZAZ1aW50NjQTZW50aXR5X3N1bW1hcnlfdHlwZQ5lbnRpdHlfc3VtbWFyeRBnYW1lX2NvbmZpZ190eXBlC2dhbWVfY29uZmlnFnN0cmF0dW1fcmVtYWluaW5nX3R5cGURc3RyYXR1bV9yZW1haW5pbmcVbmZ0X2l0ZW1fcGF5bG9hZF90eXBlEG5mdF9pdGVtX3BheWxvYWQIdW5kZXBsb3kAAgdob3N0X2lkBnVpbnQ2NAl0YXJnZXRfaWQGdWludDY0CXVud3JhcG5mdAADBW93bmVyBG5hbWUIYXNzZXRfaWQGdWludDY0B2hvc3RfaWQGdWludDY0BHdhcnAAAwJpZAZ1aW50NjQBeAVpbnQ2NAF5BWludDY0CndhcnBfc3RhdHMAAQVyYW5nZQZ1aW50MzIEd2lwZQAABHdyYXAABQVvd25lcgRuYW1lCWVudGl0eV9pZAZ1aW50NjQIbmV4dXNfaWQGdWludDY0CGNhcmdvX2lkBnVpbnQ2NAhxdWFudGl0eQZ1aW50NjQKd3JhcGVudGl0eQACCWVudGl0eV9pZAZ1aW50NjQIbmV4dXNfaWQGdWludDY0SQAAUFEnKlMyCWFkZG1vZHVsZccDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGFkZG1vZHVsZQpzdW1tYXJ5OiAnSW5zdGFsbCBhIG1vZHVsZSBpbnRvIGEgc2xvdCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5zdGFsbCBhIG1vZHVsZSBmcm9tIGNhcmdvIGludG8gYSBtb2R1bGUgc2xvdCBvbiBhIGxpdmUgZW50aXR5IG9yIGEgcGFja2VkIGVudGl0eSBpbiBjYXJnby4gVGhlIGVudGl0eSBtdXN0IGJlIGlkbGUgd2l0aCBubyBzY2hlZHVsZWQgdGFza3MuIFRoZSBtb2R1bGUgdHlwZSBtdXN0IGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgdGFyZ2V0IHNsb3QgdHlwZS4gVGhlIG1vZHVsZSBpdGVtIGlzIHJlbW92ZWQgZnJvbSBjYXJnbyB1cG9uIGluc3RhbGxhdGlvbi4AAABYdzVTMghhZGRuZXh1c6cDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGFkZG5leHVzCnN1bW1hcnk6ICdBZGQgYSBuZXh1cyBsb2NhdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ3JlYXRlIGEgbmV3IG5leHVzIGVudGl0eSBhdCB0aGUgZ2l2ZW4gY29vcmRpbmF0ZXMuIE5leHVzZXMgYXJlIG93bmVkIGJ5IHRoZSBjb250cmFjdCBhbmQgc2VydmUgYXMgZml4ZWQgZ2F0aGVyaW5nIHBvaW50cyB3aGVyZSBwbGF5ZXJzIGNhbiB3cmFwLCB1bndyYXAsIGRlcGxveSwgYW5kIG90aGVyd2lzZSBpbnRlcmFjdCB3aXRoIE5GVC1iYWNrZWQgYXNzZXRzLiBSZXF1aXJlcyBjb250cmFjdCBhdXRob3JpdHkuAAAAQKFpdjIHYWR2YW5jZdMBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGFkdmFuY2UKc3VtbWFyeTogJ0FkdmFuY2UgdHVybicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQWR2YW5jZSB0aGUgZ2FtZSB0byB0aGUgbmV4dCB0dXJuLgAAAACANFU8BWJsZW5k/AItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYmxlbmQKc3VtbWFyeTogJ0JsZW5kIGNhcmdvIHN0YWNrcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ29tYmluZSBtdWx0aXBsZSBjYXJnbyBzdGFja3Mgb2YgdGhlIHNhbWUgaXRlbSB0eXBlIGludG8gYSBzaW5nbGUgc3RhY2sgd2l0aCBuZXcgYmxlbmRlZCBzdGF0cy4gQWxsIGlucHV0IHN0YWNrcyBtdXN0IHNoYXJlIHRoZSBzYW1lIGl0ZW0gaWQuIFRoZSBvdXRwdXQgc3RhY2sgaGFzIHRoZSBjb21iaW5lZCBxdWFudGl0eSBvZiBhbGwgaW5wdXRzLgAAAABEhaZBBmNhbmNlbMICLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNhbmNlbApzdW1tYXJ5OiAnQ2FuY2VsIHNjaGVkdWxlZCB0YXNrcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FuY2VsIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHRhc2tzIGZyb20gdGhlIGVuZCBvZiBhbiBlbnRpdHkncyBzY2hlZHVsZS4gVGFza3MgdGhhdCBhcmUgaW1tdXRhYmxlIGFuZCBpbiBwcm9ncmVzcyBjYW5ub3QgYmUgY2FuY2VsbGVkLnBVviZj6UxEDGNsYWltc3RhcnRlcoUELS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNsYWltc3RhcnRlcgpzdW1tYXJ5OiAnREVCVUc6IGNsYWltIGEgc3RhcnRlciBzaGlwJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTcGF3biBhIHByZS1raXR0ZWQgVDEgc3RhcnRlciBzaGlwIGF0IHRoZSBnaXZlbiBjb29yZGluYXRlcyBmb3IgYSByZWdpc3RlcmVkIHBsYXllci4gQXZhaWxhYmxlIG9ubHkgb24gdGVzdCBkZXBsb3ltZW50cyB3aGVyZSBubyBpbi1nYW1lIHNoaXAgZWNvbm9teSB5ZXQgZXhpc3RzLiBSZXF1aXJlcyB0aGUgY2FsbGVyIHRvIGJlIGEgam9pbmVkIHBsYXllciB3aXRoIG5vIGV4aXN0aW5nIHNoaXBzOyB0aGUgcmVzdWx0aW5nIHNoaXAgaXMgZml0dGVkIHdpdGggYSBnZW5lcmF0b3IsIGVuZ2luZSwgZ2F0aGVyZXIsIGNyYWZ0ZXIsIGFuZCBoYXVsZXIgbW9kdWxlLgAAqBvfaVRECWNsZWFucnN2cOwCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNsZWFucnN2cApzdW1tYXJ5OiAnQ2xlYW4gdXAgcGFzdCBlcG9jaCByZXNlcnZlcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKRXJhc2UgcmVzZXJ2ZSB0YWJsZSByb3dzIGZyb20gYSBwYXN0IGVwb2NoLiBDYW5ub3QgY2xlYW4gdGhlIGN1cnJlbnQgb3IgZnV0dXJlIGVwb2Nocy4gVGhlIG1heF9yb3dzIHBhcmFtZXRlciBjYXBzIHRoZSBudW1iZXIgb2Ygcm93cyBlcmFzZWQgcGVyIGNhbGwgdG8gbGltaXQgQ1BVIHVzYWdlLgCAisfka1RECmNsZWFydGFibGW+AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjbGVhcnRhYmxlCnN1bW1hcnk6ICdERUJVRzogY2xlYXJ0YWJsZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0AAAAAZCclRQZjb21taXTsAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjb21taXQKc3VtbWFyeTogJ1NldCBjb21taXQgdmFsdWUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClNldCB0aGUgaW5pdGlhbCBjb21taXQgdmFsdWUgZHVyaW5nIGdhbWUgaW5pdGlhbGl6YXRpb24uAABgNDK3JkUJY29uZmlnbG9n3QItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY29uZmlnbG9nCnN1bW1hcnk6ICdMb2cgZ2FtZSBjb25maWd1cmF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnRlcm5hbCBhY3Rpb24gdGhhdCBsb2dzIHRoZSBjdXJyZW50IGdhbWUgY29uZmlndXJhdGlvbi4gQ2FsbGVkIGlubGluZSBhZnRlciBpbml0aWFsaXphdGlvbiB0byBicm9hZGNhc3QgY29uZmlnIHZpYSBhY3Rpb24gdHJhY2VzLiBSZXF1aXJlcyBjb250cmFjdCBhdXRob3JpdHkuAAAAAIC8zEUFY3JhZnTIAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjcmFmdApzdW1tYXJ5OiAnQ3JhZnQgaXRlbXMgZnJvbSBhIHJlY2lwZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVHJhbnNmb3JtIGNhcmdvIGl0ZW1zIGludG8gYSBuZXcgaXRlbSB1c2luZyBhIHJlY2lwZS4gVGhlIGVudGl0eSBtdXN0IGhhdmUgYSBjcmFmdGVyIG1vZHVsZSBpbnN0YWxsZWQuIENvbnN1bWVzIGVuZXJneSBhbmQgc2NoZWR1bGVzIGEgY3JhZnRpbmcgdGFzayB3aXRoIGR1cmF0aW9uIGJhc2VkIG9uIHRvdGFsIGlucHV0IG1hc3MgYW5kIGNyYWZ0ZXIgc3BlZWQuIElucHV0IHF1YW50aXRpZXMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSByZWNpcGUgcmVxdWlyZW1lbnRzLgAAAA27SKVKCGRlbW9saXNo8QMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZGVtb2xpc2gKc3VtbWFyeTogJ0RlbW9saXNoIGEgc3RhdGlvbmFyeSBlbnRpdHknCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkRlY29tbWlzc2lvbiBhbiBlbnRpdHksIGVyYXNpbmcgaXQgZnJvbSB0aGUgZ2FtZS4gVGhlIGVudGl0eSBtdXN0IGJlIGlkbGUsIGhhdmUgZW1wdHkgY2FyZ28sIGFuZCBoYXZlIG5vIGluc3RhbGxlZCBtb2R1bGVzIChyZW1vdmUgZWFjaCB2aWEgcm1tb2R1bGUgZmlyc3QpLiBTY2hlZHVsZXMgYSBkZW1vbGlzaCB0YXNrIHRoYXQgZXJhc2VzIHRoZSBlbnRpdHkgb24gcmVzb2x1dGlvbi4gT25seSB2YWxpZCBmb3IgZW50aXRpZXMgdGhhdCBjYW5ub3QgbW92ZTsgdXNlIHVuZGVwbG95IG9yIHdyYXBlbnRpdHkgZm9yIHRoZSByZXN0LgAAAAB4GqtKBmRlcGxveewCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGRlcGxveQpzdW1tYXJ5OiAnRGVwbG95IGEgcGFja2VkIGVudGl0eScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVW5wYWNrIGEgcGFja2VkIGVudGl0eSBpdGVtIChwYWNrZWQgc2hpcCBvciBwYWNrZWQgY29udGFpbmVyKSBmcm9tIGNhcmdvLCBzY2hlZHVsaW5nIGEgZGVwbG95IHRhc2sgdGhhdCBjcmVhdGVzIHRoZSBuZXcgZW50aXR5IGF0IHRoZSBkZXBsb3lpbmcgZW50aXR5J3MgbG9jYXRpb24gdXBvbiByZXNvbHV0aW9uLgAAyGt6GqtKCWRlcGxveW5mdN8ELS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGRlcGxveW5mdApzdW1tYXJ5OiAnRGVwbG95IGFuIGVudGl0eSBORlQgZGlyZWN0bHkgdG8gYSBuZXh1cycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKRGVwbG95IGEgcGFja2VkLWVudGl0eSBBdG9taWNBc3NldHMgTkZUIChvcmJpdGFsIHZlc3NlbDogc2hpcCBvciBjb250YWluZXIpIGRpcmVjdGx5IGFzIGEgbGl2ZSBlbnRpdHkuIFBhaXJzIHdpdGggYW4gYXRvbWljYXNzZXRzOjp0cmFuc2ZlciBjYXJyeWluZyB0aGUgJ2RlcGxveScgbWVtbyBpbiB0aGUgc2FtZSB0cmFuc2FjdGlvbi4gVGhlIE5GVCBpcyBidXJuZWQsIGEgbmV3IGVudGl0eSByb3cgaXMgZW1wbGFjZWQgYXQgdGhlIE5GVCdzIHdyYXAgb3JpZ2luIHBhaWQgYnkgdGhlIG93bmVyLCBhbmQgVEFTS19UUkFWRUwgcGx1cyBUQVNLX1JFQ0hBUkdFIGFyZSBxdWV1ZWQgdG8gZGVsaXZlciB0aGUgZW50aXR5IHRvIHRoZSB0YXJnZXQgbmV4dXMgYW5kIGJyaW5nIGl0IHRvIGZ1bGwgZW5lcmd5LgCAzy5PhbBKCmRlc2NlbnRpdHnJAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBkZXNjZW50aXR5CnN1bW1hcnk6ICdEZXNjcmliZSBhIHBhY2tlZCBlbnRpdHknCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIGEgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gc3RyaW5nIGZvciBhIHBhY2tlZCBlbnRpdHksIGRlcml2ZWQgZnJvbSB0aGUgZW50aXR5IGl0ZW0gaWQsIGh1bGwgc3RhdHMsIGFuZCB0aGUgbGlzdCBvZiBpbnN0YWxsZWQgbW9kdWxlIGl0ZW0gaWRzIGFuZCBzdGF0cy4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyBhbmQgTkZUIHJlbmRlcmVycyB0byBkaXNwbGF5IHBhY2tlZCBlbnRpdGllcy4AAAAAqHjMVAZlbmFibGXdAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBlbmFibGUKc3VtbWFyeTogJ1NldCBlbmFibGVkIHN0YXRlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpFbmFibGUgb3IgZGlzYWJsZSB0aGlzIGdhbWUgb2YgU2hpcGxvYWQugLGRlF2DulsMZml4Y2FyZ29tYXNzkAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZml4Y2FyZ29tYXNzCnN1bW1hcnk6ICdERUJVRzogcmVjb21wdXRlIGVudGl0eSBjYXJnbyBtYXNzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZWNvbXB1dGUgYW5kIHJld3JpdGUgYW4gZW50aXR5J3MgY2FyZ28gbWFzcyBmcm9tIGl0cyBjdXJyZW50IGNhcmdvLiBSZXF1aXJlcyBjb250cmFjdCBhdXRob3JpdHkuIEF2YWlsYWJsZSBmb3IgcmVwYWlyaW5nIGRyaWZ0IGJldHdlZW4gY2FjaGVkIGNhcmdvIG1hc3MgYW5kIHRoZSB0cnVlIG1hc3MgZGVyaXZlZCBmcm9tIGNhcmdvIHJvd3MuAAAAAFzVsmEGZ2F0aGVylwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2F0aGVyCnN1bW1hcnk6ICdHYXRoZXIgcmVzb3VyY2VzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpHYXRoZXIgcmVzb3VyY2VzIGF0IHRoZSBzaGlwJ3MgY3VycmVudCBsb2NhdGlvbi4gT25seSB3b3JrcyBhdCBnYXRoZXJhYmxlIGxvY2F0aW9uIHR5cGVzLiBTY2hlZHVsZXMgYSBnYXRoZXIgdGFzayB0aGF0IGNvbnN1bWVzIGVuZXJneSBhbmQgeWllbGRzIGNhcmdvIGJhc2VkIG9uIHRoZSBzaGlwJ3MgZ2F0aGVyZXIgc3RhdHMgYW5kIHRoZSBsb2NhdGlvbidzIHJlc291cmNlIGNvbXBvc2l0aW9uLgAAYG5NirJiCWdldGNvbmZpZ8oCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGNvbmZpZwpzdW1tYXJ5OiAnR2V0IGdhbWUgY29uZmlndXJhdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyB0aGUgZ2FtZSBjb25maWd1cmF0aW9uIGluY2x1ZGluZyBkZWZhdWx0IGVudGl0eSBzdGF0cyBmb3Igd2FyZWhvdXNlcyBhbmQgY29udGFpbmVycywgYW5kIHRoZSBmdWxsIGl0ZW0gZGVmaW5pdGlvbnMgdGFibGUuAFQ8jrmosmILZ2V0ZWxpZ2libGXIAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRlbGlnaWJsZQpzdW1tYXJ5OiAnR2V0IGVsaWdpYmxlIHJlc291cmNlIGl0ZW0gSURzIGF0IGEgbG9jYXRpb24gYW5kIHN0cmF0dW0nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBsaXN0IG9mIHJlc291cmNlIGl0ZW0gSURzIGVsaWdpYmxlIHRvIGJlIGdhdGhlcmVkIGF0IHRoZSBnaXZlbiBjb29yZGluYXRlcyBhbmQgc3RyYXR1bSBkZXB0aC4gSXRlbXMgYXJlIGdhdGVkIGJ5IGJvdGggdGhlIGxvY2F0aW9uJ3MgcmVzb3VyY2UgcHJvZmlsZSBhbmQgdGhlIGRlcHRoIHRocmVzaG9sZCBmb3IgZWFjaCB0aWVyLgAAwBHlqbJiCWdldGVudGNsc4wDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGVudGNscwpzdW1tYXJ5OiAnR2V0IGVudGl0eSBjbGFzcyBlbnVtIHZhbHVlcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGZ1bGwgc2V0IG9mIGVudGl0eSBjbGFzcyBlbnVtIHZhbHVlcyBhbmQgdGhlaXIgc3RyaW5nIG5hbWVzIChPcmJpdGFsVmVzc2VsLCBQbGFuZXRhcnlTdHJ1Y3R1cmUpLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIGRlY29kZSBlbnRpdHkgY2xhc3MgaWRlbnRpZmllcnMuALBy2eWpsmILZ2V0ZW50aXRpZXOkAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRlbnRpdGllcwpzdW1tYXJ5OiAnR2V0IGFsbCBlbnRpdGllcyBmb3IgYSBwbGF5ZXInCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJldHVybnMgZnVsbCBlbnRpdHkgaW5mbyBmb3IgYWxsIGVudGl0aWVzIG93bmVkIGJ5IGEgcGxheWVyLiBPcHRpb25hbGx5IGZpbHRlciBieSBlbnRpdHkgdHlwZS4AAPDZ5amyYglnZXRlbnRpdHmiAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRlbnRpdHkKc3VtbWFyeTogJ0dldCBlbnRpdHkgc3RhdGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJldHVybnMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgYW4gZW50aXR5IGluY2x1ZGluZyBpZGVudGl0eSwgY2FyZ28sIHNjaGVkdWxlIHN0YXRlLCBhbmQgdHlwZS1zcGVjaWZpYyBmaWVsZHMuAEw2SarssmILZ2V0aXRlbWRhdGGoAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRpdGVtZGF0YQpzdW1tYXJ5OiAnR2V0IGZ1bGwgaXRlbSBjYXRhbG9nJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgY29tcGxldGUgaXRlbSBjYXRhbG9nIGFzIHRoZSBjb250cmFjdCBzZWVzIGl0LCBpbmNsdWRpbmcgdHlwZSwgc3VidHlwZSwgdGllciwgbWFzcywgYW5kIG90aGVyIHN0YXRpYyBtZXRhZGF0YS4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyBhbmQgY2xpZW50cyB0byBtaXJyb3IgdGhlIGNvbnRyYWN0J3MgaXRlbSBkZWZpbml0aW9ucy4AAE5OquyyYgpnZXRpdGVtaWRzhgMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0aXRlbWlkcwpzdW1tYXJ5OiAnR2V0IGl0ZW0gaWQgdG8gbmFtZSBtYXBwaW5ncycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGZ1bGwgbWFwcGluZyBvZiBpdGVtIGlkIGNvbnN0YW50cyB0byB0aGVpciBjYW5vbmljYWwgc3RyaW5nIG5hbWVzLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIHJlc29sdmUgbnVtZXJpYyBpdGVtIGlkcyB0byBodW1hbi1yZWFkYWJsZSBpZGVudGlmaWVycy4AAABYquyyYghnZXRpdGVtc5oCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGl0ZW1zCnN1bW1hcnk6ICdHZXQgYWxsIGF2YWlsYWJsZSBpdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgYWxsIGl0ZW1zIGluIHRoZSBnYW1lIGluY2x1ZGluZyB0aGVpciBpZCwgYmFzZSBwcmljZSwgYW5kIG1hc3MugFX1WarssmIMZ2V0aXRlbXR5cGVziAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0aXRlbXR5cGVzCnN1bW1hcnk6ICdHZXQgaXRlbSB0eXBlIGVudW0gdmFsdWVzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgZnVsbCBzZXQgb2YgaXRlbSB0eXBlIGVudW0gdmFsdWVzIGFuZCB0aGVpciBzdHJpbmcgbmFtZXMgKHJlc291cmNlLCBjb21wb25lbnQsIG1vZHVsZSwgZW50aXR5KS4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBkZWNvZGUgaXRlbSB0eXBlIGlkZW50aWZpZXJzLgBMVjJNB7NiC2dldGtpbmRtZXRh+AMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0a2luZG1ldGEKc3VtbWFyeTogJ0dldCBlbnRpdHkga2luZCBtZXRhZGF0YScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGVudGl0eSBraW5kIHJlZ2lzdHJ5IGFuZCB0ZW1wbGF0ZSByZWdpc3RyeSwgaW5jbHVkaW5nIGVhY2gga2luZCdzIGNsYXNzaWZpY2F0aW9uLCBjYXBhYmlsaXR5IGZsYWdzLCBaLWNvb3JkaW5hdGUsIGFuZCBkZWZhdWx0IGxhYmVsLCBwbHVzIHRoZSBtYXBwaW5nIG9mIGVudGl0eSBpdGVtIGlkcyB0byBraW5kcyB3aXRoIGRpc3BsYXkgbGFiZWxzLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIGludGVycHJldCBlbnRpdHkga2luZHMgYW5kIGNhcGFiaWxpdGllcy4AJnXZIBqzYgtnZXRsb2NhdGlvbuICLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGxvY2F0aW9uCnN1bW1hcnk6ICdHZXQgbG9jYXRpb24gaW5mb3JtYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYSBsb2NhdGlvbiBpbmNsdWRpbmcgd2hldGhlciBhIHN5c3RlbSBleGlzdHMsIGFuZCBmb3IgZWFjaCBpdGVtOiBwcmljZSwgc3VwcGx5LCByYXJpdHkgbXVsdGlwbGllciwgYW5kIGxvY2F0aW9uIG11bHRpcGxpZXIuAIDJJiEas2IKZ2V0bG9jZGF0Yf4CLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGxvY2RhdGEKc3VtbWFyeTogJ0dldCBkZXJpdmVkIGxvY2F0aW9uIGRhdGEnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgZGVyaXZlZCBsb2NhdGlvbiBkYXRhIGluY2x1ZGluZyBzdGF0aWMgcHJvcGVydGllcyAodHlwZSwgZGlmZmljdWx0eSwgc2VlZHMpIGZyb20gdGhlIGdhbWUgc2VlZCBhbmQgZXBvY2gtc3BlY2lmaWMgcHJvcGVydGllcyAoYWN0aXZlLCBzZWVkcykgZnJvbSB0aGUgY3VycmVudCBlcG9jaCBzZWVkLgCwqj4nKrNiC2dldG1vZHR5cGVz1gMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bW9kdHlwZXMKc3VtbWFyeTogJ0dldCBtb2R1bGUgdHlwZSBlbnVtIHZhbHVlcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGZ1bGwgc2V0IG9mIG1vZHVsZSB0eXBlIGVudW0gdmFsdWVzIGFuZCB0aGVpciBzdHJpbmcgbmFtZXMgKGFueSwgZW5naW5lLCBnZW5lcmF0b3IsIGdhdGhlcmVyLCBsb2FkZXIsIHdhcnAsIGNyYWZ0ZXIsIGxhdW5jaGVyLCBzdG9yYWdlLCBoYXVsZXIpLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIGRlY29kZSBtb2R1bGUgc3VidHlwZSBpZGVudGlmaWVycyBhbmQgc2xvdCBjb21wYXRpYmlsaXR5LgAAVlEnKrNiCmdldG1vZHVsZXOAAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRtb2R1bGVzCnN1bW1hcnk6ICdHZXQgYWxsIG1vZHVsZSBpdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIHN1YnNldCBvZiBpdGVtcyBjbGFzc2lmaWVkIGFzIG1vZHVsZXMsIGluY2x1ZGluZyBlYWNoIG1vZHVsZSdzIGlkLCBtYXNzLCBzdWJ0eXBlLCBhbmQgdGllci4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBlbnVtZXJhdGUgaW5zdGFsbGFibGUgZXF1aXBtZW50LgAA8OcaNbNiCWdldG5lYXJied4DLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldG5lYXJieQpzdW1tYXJ5OiAnR2V0IG5lYXJieSByZWFjaGFibGUgc3lzdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBuZWFyYnkgc3lzdGVtcyByZWFjaGFibGUgYnkgYW4gZW50aXR5IGZyb20gaXRzIHByb2plY3RlZCBsb2NhdGlvbi4gUmV0dXJucyBjdXJyZW50IHN0YXRlICh3aXRoIGNvbXBsZXRlZCB0YXNrcyByZXNvbHZlZCksIHByb2plY3RlZCBzdGF0ZSAoYWZ0ZXIgYWxsIHNjaGVkdWxlZCB0YXNrcyksIGFuZCBhIGxpc3Qgb2YgcmVhY2hhYmxlIHN5c3RlbXMgd2l0aCBkaXN0YW5jZSwgZW5lcmd5IGNvc3QsIGZsaWdodCB0aW1lLCBhbmQgbWFya2V0IGluZm9ybWF0aW9uLgAAXdPlNbNiCmdldG5mdGluZm/wAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRuZnRpbmZvCnN1bW1hcnk6ICdHZXQgTkZUIHNjaGVtYSBhbmQgdGVtcGxhdGUgY29uZmlndXJhdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGZ1bGwgc2V0IG9mIEF0b21pY0Fzc2V0cyBzY2hlbWFzIGFuZCB0ZW1wbGF0ZXMgdGhlIGdhbWUgY29udHJhY3QgZXhwZWN0cywgcGx1cyB0aGUgY3VycmVudCBgaXRlbV9pZCDihpIgKHRlbXBsYXRlX2lkLCBzY2hlbWFfbmFtZSlgIG1hcHBpbmcgc3RvcmVkIGluIHRoZSBgbmZ0Y29uZmlnYCB0YWJsZS4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBzeW5jIGF0b21pY2Fzc2V0cyBzdGF0ZSB3aXRoIHRoZSBjb250cmFjdC4AALjKm1izYglnZXRwbGF5ZXL9Ai0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRwbGF5ZXIKc3VtbWFyeTogJ0dldCBwbGF5ZXIgaW5mb3JtYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYSBwbGF5ZXIgaW5jbHVkaW5nIGJhbGFuY2UsIGRlYnQsIG5ldHdvcnRoLCBlbnRpdHkgY291bnRzLCBhbmQgcHJpY2luZyBmb3IgbmV4dCBwdXJjaGFzZXMuIFJldHVybnMgaXNfcGxheWVyPWZhbHNlIGlmIHRoZSBhY2NvdW50IGhhcyBub3Qgam9pbmVkIHRoZSBnYW1lLqCyyfjRW7NiDGdldHByb2pzdGF0ZcsDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHByb2pzdGF0ZQpzdW1tYXJ5OiAnR2V0IHByb2plY3RlZCBlbnRpdHkgc3RhdGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBwcm9qZWN0ZWQgc3RhdGUgb2YgYW4gZW50aXR5IGFmdGVyIGFwcGx5aW5nIHRoZSBuZXh0IHRhc2tfY291bnQgc2NoZWR1bGVkIHRhc2tzIChvciBhbGwgdGFza3MgaWYgdGFza19jb3VudCBpcyBvbWl0dGVkKS4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBwcmV2aWV3IHRoZSByZXN1bHQgb2YgYW4gZW50aXR5J3Mgc2NoZWR1bGUgd2l0aG91dCByZXNvbHZpbmcgb24tY2hhaW4uAABQ1SF1s2IJZ2V0cmVjaXBlpgMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0cmVjaXBlCnN1bW1hcnk6ICdHZXQgYSBzaW5nbGUgY3JhZnRpbmcgcmVjaXBlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgcmVjaXBlIHdob3NlIG91dHB1dCBtYXRjaGVzIHRoZSBnaXZlbiBpdGVtIGlkLCBpbmNsdWRpbmcgaXRzIGlucHV0cywgYmxlbmQgd2VpZ2h0cywgc3RhdCBzbG90cywgYW5kIHJlc29sdmVkIGl0ZW0gbWFzcyBpbmZvLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIGRpc3BsYXkgY3JhZnRpbmcgcmVxdWlyZW1lbnRzLgAAVtUhdbNiCmdldHJlY2lwZXOsAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRyZWNpcGVzCnN1bW1hcnk6ICdMaXN0IGNyYWZ0aW5nIHJlY2lwZXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIGEgcGFnaW5hdGVkIGxpc3Qgb2YgY3JhZnRpbmcgcmVjaXBlcyBzdGFydGluZyBhdCB0aGUgcHJvdmlkZWQgbG93ZXIgYm91bmQgb3V0cHV0IGl0ZW0gaWQsIHVwIHRvIHRoZSBzcGVjaWZpZWQgbGltaXQuIEVhY2ggZW50cnkgaW5jbHVkZXMgaW5wdXRzLCBibGVuZCB3ZWlnaHRzLCBzdGF0IHNsb3RzLCBhbmQgcmVzb2x2ZWQgaXRlbSBtYXNzIGluZm8uAADOBmF1s2IKZ2V0cmVzY2F0c54DLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHJlc2NhdHMKc3VtbWFyeTogJ0dldCByZXNvdXJjZSBjYXRlZ29yeSBlbnVtIHZhbHVlcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGZ1bGwgc2V0IG9mIHJlc291cmNlIGNhdGVnb3J5IGVudW0gdmFsdWVzIGFuZCB0aGVpciBzdHJpbmcgbmFtZXMgKG9yZSwgZ2FzLCByZWdvbGl0aCwgYmlvbWFzcywgY3J5c3RhbCkuIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gZGVjb2RlIHJlc291cmNlIHN1YnR5cGUgaWRlbnRpZmllcnMuALDaV2F1s2ILZ2V0cmVzZXJ2ZXP8Ay0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRyZXNlcnZlcwpzdW1tYXJ5OiAnR2V0IGN1cnJlbnQgcmVzZXJ2ZSBtb2RpZmljYXRpb25zIGF0IGEgbG9jYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgdGhlIGNoYWluJ3MgbW9kaWZpY2F0aW9ucyB0byBkZXJpdmVkIHJlc2VydmVzIGF0IHRoZSBnaXZlbiBjb29yZGluYXRlIGZvciB0aGUgY3VycmVudCBlcG9jaCBhcyBhIGxpc3Qgb2Yge3N0cmF0dW0sIHJlbWFpbmluZ30gcGFpcnMuIFN0cmF0YSBub3QgcHJlc2VudCBpbiB0aGUgcmVzcG9uc2UgdXNlIHRoZWlyIGRlcml2ZWQgaW5pdGlhbCByZXNlcnZlLiBDb21wb3NlIHdpdGggU0RLIGRlcml2YXRpb24gdG8gZ2V0IHRoZSBmdWxsIHBlci1sb2NhdGlvbiBzdHJhdGEgdmlldy6AFbqaYnWzYgxnZXRyZXNvdXJjZXOHAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRyZXNvdXJjZXMKc3VtbWFyeTogJ0dldCBhbGwgcmVzb3VyY2UgaXRlbXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBzdWJzZXQgb2YgaXRlbXMgY2xhc3NpZmllZCBhcyByZXNvdXJjZXMsIGluY2x1ZGluZyBlYWNoIHJlc291cmNlJ3MgaWQsIG1hc3MsIHN1YnR5cGUsIGFuZCB0aWVyLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIGVudW1lcmF0ZSBnYXRoZXJhYmxlIG1hdGVyaWFscy4AAAA404izYghnZXRzbG90c7sDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHNsb3RzCnN1bW1hcnk6ICdHZXQgZW50aXR5IHNsb3QgbGF5b3V0cycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIG1vZHVsZSBzbG90IGxheW91dCBmb3IgZXZlcnkgZW50aXR5IGl0ZW0gdHlwZSwgbGlzdGluZyB0aGUgb3JkZXJlZCBzbG90IHR5cGVzIGF2YWlsYWJsZSBmb3IgbW9kdWxlIGluc3RhbGxhdGlvbi4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBkZXRlcm1pbmUgd2hpY2ggbW9kdWxlIHR5cGVzIGFyZSBjb21wYXRpYmxlIHdpdGggYSBnaXZlbiBlbnRpdHkgaHVsbC4AgNTZ3IyzYgpnZXRzdHJhdHVt0gItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0c3RyYXR1bQpzdW1tYXJ5OiAnR2V0IHJlc291cmNlIHN0cmF0dW0gZGF0YScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyByZXNvdXJjZSBzdHJhdHVtIGRhdGEgZm9yIGEgc3BlY2lmaWMgZGVwdGggbGF5ZXIgYXQgYSBjb29yZGluYXRlLCBpbmNsdWRpbmcgdGhlIHN0cmF0dW0gc2VlZCBpbmZvIGFuZCBkZXJpdmVkIHJlc291cmNlIHN0YXRzLoCVu0ZKjbNiDGdldHN1bW1hcmllc+gCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHN1bW1hcmllcwpzdW1tYXJ5OiAnR2V0IGVudGl0eSBzdW1tYXJpZXMgZm9yIGEgcGxheWVyJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXR1cm5zIGxpZ2h0d2VpZ2h0IHN1bW1hcmllcyBvZiBhbGwgZW50aXRpZXMgb3duZWQgYnkgYSBwbGF5ZXIgaW5jbHVkaW5nIHR5cGUsIGlkLCBvd25lciwgbmFtZSwgbG9jYXRpb24sIGFuZCBpZGxlIHN0YXR1cy4gT3B0aW9uYWxseSBmaWx0ZXIgYnkgZW50aXR5IHR5cGUuAKLa5uaq6WULZ3JvdXB0cmF2ZWyaBC0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBncm91cHRyYXZlbApzdW1tYXJ5OiAnTW92ZSBtdWx0aXBsZSBlbnRpdGllcyB0b2dldGhlcicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5pdGlhdGUgZ3JvdXAgdHJhdmVsIGZvciBtdWx0aXBsZSBlbnRpdGllcyB0byBhIGRlc3RpbmF0aW9uLiBBbGwgZW50aXRpZXMgbXVzdCBiZSBhdCB0aGUgc2FtZSBsb2NhdGlvbiBhbmQgb3duZWQgYnkgdGhlIGNhbGxlci4gQXQgbGVhc3Qgb25lIGVudGl0eSB3aXRoIGVuZ2luZXMgaXMgcmVxdWlyZWQgdG8gcHJvdmlkZSB0aHJ1c3QuIEZsaWdodCBkdXJhdGlvbiBpcyBjYWxjdWxhdGVkIGZyb20gY29tYmluZWQgdGhydXN0IGFuZCB0b3RhbCBtYXNzIG9mIGFsbCBlbnRpdGllcy4gQ3JlYXRlcyBhbiBlbnRpdHlncm91cCBmb3IgYXRvbWljIHJlc29sdXRpb24gYW5kIGNhbmNlbGxhdGlvbi4AAAAAANCwaQRoYXNo+AEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaGFzaApzdW1tYXJ5OiAnQ2FsY3VsYXRlIHNoYTI1NiBoYXNoJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYWxjdWxhdGVzIHRoZSBzaGEyNTYgaGFzaCBvZiBhIHN0cmluZyBiYXNlZCB1c2luZyB0aGUgZ2FtZSBzZWVkLgAAAECE0rBpB2hhc2g1MTL7AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBoYXNoNTEyCnN1bW1hcnk6ICdDYWxjdWxhdGUgc2hhNTEyIGhhc2gnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNhbGN1bGF0ZXMgdGhlIHNoYTUxMiBoYXNoIG9mIGEgc3RyaW5nIGJhc2VkIHVzaW5nIHRoZSBnYW1lIHNlZWQuACi7BuVLq3QLaW1wb3J0Y2FyZ28A4LPLU+VLq3QMaW1wb3J0ZW50aXR5AACqppflS6t0C2ltcG9ydGdyb3VwAHCVN7HmS6t0DGltcG9ydHBsYXllcgC6r8Lq5kurdA1pbXBvcnRyZXNlcnZlAABUNhnnS6t0C2ltcG9ydHN0YXRlAACA+i4al910CmluaXRpYWxpemWAAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBpbml0aWFsaXplCnN1bW1hcnk6ICdJbml0aWFsaXplIGdhbWUgc2VlZCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5pdGlhbGl6ZSBhIHRoZSBnYW1lcyBzZWVkIGFuZCBzZWVkIHZhbHVlcyB0byBib290c3RyYXAgZ2FtZSBzdGF0ZS4AAAAAADAdfQRqb2luxAEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogam9pbgpzdW1tYXJ5OiAnSm9pbiBhIGdhbWUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkpvaW4gYSBnYW1lIG9mIFNoaXBsb2FkAACIVzPp8poJbmZ0aW1ndXJssgMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogbmZ0aW1ndXJsCnN1bW1hcnk6ICdHZXQgTkZUIGltYWdlIFVSTCBmb3IgYSBjYXJnbyBpdGVtJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgaW1hZ2UgVVJMIHRoZSBjb250cmFjdCBlbWl0cyBmb3IgYSBnaXZlbiBjYXJnbyBpdGVtLCBvcHRpb25hbGx5IHNjb3BlZCB0byBhIGxvY2F0aW9uLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIGFuZCBORlQgcmVuZGVyZXJzIHRvIGZldGNoIHRoZSBjYW5vbmljYWwgYXJ0d29yayBmb3IgYW4gaXRlbSBvciBwYWNrZWQgZW50aXR5LgAAAAD45TKdBm5vdGlmeYoDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IG5vdGlmeQpzdW1tYXJ5OiAnVGFzayBsaWZlY3ljbGUgbm90aWZpY2F0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnRlcm5hbCBhY3Rpb24gdGhhdCBub3RpZmllcyBlbnRpdHkgb3duZXJzIG9mIHRhc2sgbGlmZWN5Y2xlIGV2ZW50cyAocmVzb2x2ZWQsIGNhbmNlbGxlZCkuIENhbGxlZCBpbmxpbmUgd2hlbiB0YXNrcyBjaGFuZ2Ugc3RhdGUuIFVzZXMgcmVxdWlyZV9yZWNpcGllbnQgdG8gZW5hYmxlIG9mZi1jaGFpbiBtb25pdG9yaW5nIHZpYSBhY3Rpb24gdHJhY2VzLgAAAIpd05C6CHJlY2hhcmdlzQItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcmVjaGFyZ2UKc3VtbWFyeTogJ1JlY2hhcmdlIHNoaXAgZW5lcmd5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTY2hlZHVsZSBhIHJlY2hhcmdlIHRhc2sgZm9yIGFuIGVudGl0eSB0byByZXN0b3JlIGVuZXJneSB0byBmdWxsIGNhcGFjaXR5LiBUaGUgcmVjaGFyZ2UgZHVyYXRpb24gZGVwZW5kcyBvbiBjdXJyZW50IGVuZXJneSBsZXZlbCBhbmQgcmVjaGFyZ2UgcmF0ZS7gs8tTNXyXugxyZWZyc2hlbnRpdHm4Ay0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiByZWZyc2hlbnRpdHkKc3VtbWFyeTogJ1JlZnJlc2ggZGVyaXZlZCBlbnRpdHkgc3RhdGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJlY29tcHV0ZSBkZXJpdmVkIGZpZWxkcyBvbiBhbiBlbnRpdHkgZnJvbSBpdHMgY3VycmVudCBjYXJnbyBhbmQgbW9kdWxlcywgcmVmcmVzaGluZyBjYXBhYmlsaXR5IHN0YXRzIGFuZCBjYXJnbyBtYXNzLiBUaGUgZW50aXR5IG11c3QgYmUgaWRsZSB3aXRoIG5vIHNjaGVkdWxlZCB0YXNrcy4gVXNlZCB0byByZWNvbmNpbGUgZGVyaXZlZCBzdGF0ZSBhZnRlciBkYXRhIG1pZ3JhdGlvbnMgb3IgY29udHJhY3QgdXBncmFkZXMuAAAAQO1IsboHcmVzb2x2ZdADLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHJlc29sdmUKc3VtbWFyeTogJ0NvbXBsZXRlIHNjaGVkdWxlZCB0YXNrcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmVzb2x2ZSBjb21wbGV0ZWQgdGFza3MgaW4gYW4gZW50aXR5J3Mgc2NoZWR1bGUsIGFwcGx5aW5nIHRoZWlyIGVmZmVjdHMgKHJlY2hhcmdlIGVuZXJneSwgdXBkYXRlIGxvY2F0aW9uLCBsb2FkL3VubG9hZCBjYXJnbykuIElmIGNvdW50IGlzIHNwZWNpZmllZCwgcmVzb2x2ZSBleGFjdGx5IHRoYXQgbWFueSB0YXNrczsgb3RoZXJ3aXNlIHJlc29sdmUgYWxsIGNvbXBsZXRlZCB0YXNrcy4gRmFpbHMgaWYgY291bnQgZXhjZWVkcyB0aGUgbnVtYmVyIG9mIGNvbXBsZXRlZCB0YXNrcy4AAAAq6kSlvAhybW1vZHVsZbwDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHJtbW9kdWxlCnN1bW1hcnk6ICdSZW1vdmUgYSBtb2R1bGUgZnJvbSBhIHNsb3QnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJlbW92ZSBhbiBpbnN0YWxsZWQgbW9kdWxlIGZyb20gYSBzbG90IG9uIGEgbGl2ZSBlbnRpdHkgb3IgYSBwYWNrZWQgZW50aXR5IGluIGNhcmdvLiBUaGUgZW50aXR5IG11c3QgYmUgaWRsZSB3aXRoIG5vIHNjaGVkdWxlZCB0YXNrcy4gVGhlIG1vZHVsZSBpcyByZXR1cm5lZCB0byBjYXJnby4gRmFpbHMgaWYgdGhlIGVudGl0eSBkb2VzIG5vdCBoYXZlIGVub3VnaCBjYXJnbyBjYXBhY2l0eSB0byBob2xkIHRoZSByZXR1cm5lZCBtb2R1bGUuAAAAbKG8prwIcm1uZnRjZmehAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBybW5mdGNmZwpzdW1tYXJ5OiAnUmVtb3ZlIE5GVCB0ZW1wbGF0ZSBtYXBwaW5nIGZvciBhbiBpdGVtJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZW1vdmUgdGhlIEF0b21pY0Fzc2V0cyB0ZW1wbGF0ZSBtYXBwaW5nIGZvciB0aGUgc3BlY2lmaWVkIGl0ZW0gaWQgZnJvbSB0aGUgYG5mdGNvbmZpZ2AgdGFibGUuIEFmdGVyIHJlbW92YWwgdGhlIGl0ZW0gY2FuIG5vIGxvbmdlciBiZSB3cmFwcGVkIG9yIHVud3JhcHBlZCB1bnRpbCBhIG5ldyBtYXBwaW5nIGlzIHNldC4gUmVxdWlyZXMgY29udHJhY3QgYXV0aG9yaXR5LgAAAAAAkKPBBHNhbHTYAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBzYWx0CnN1bW1hcnk6ICdBcHBlbmQgU2FsdCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQWRkIGFkZGl0aW9uYWwgc2FsdCB0byB0aGUgbmV4dCBlcG9jaCBzZWVkLgAAYAvlNbPCCXNldG5mdGNmZ8QDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHNldG5mdGNmZwpzdW1tYXJ5OiAnU2V0IE5GVCB0ZW1wbGF0ZSBtYXBwaW5nIGZvciBhbiBpdGVtJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpCaW5kIGFuIGl0ZW0gaWQgdG8gYW4gQXRvbWljQXNzZXRzIHRlbXBsYXRlIGlkIGFuZCBzY2hlbWEgbmFtZS4gVXNlZCB0byBjb25maWd1cmUgaG93IHRoZSBjb250cmFjdCBtaW50cyBhbmQgcmVjb2duaXplcyBORlRzIGZvciBhIGdpdmVuIGl0ZW0uIEluc2VydHMgYSBuZXcgbWFwcGluZyBpZiBvbmUgZG9lcyBub3QgZXhpc3QsIG9yIHVwZGF0ZXMgdGhlIGV4aXN0aW5nIG1hcHBpbmcuIFJlcXVpcmVzIGNvbnRyYWN0IGF1dGhvcml0eS4AQDRqq1sdxApza2lwcmV2ZWFsvwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc2tpcHJldmVhbApzdW1tYXJ5OiAnREVCVUc6IHNraXAgYW4gZXBvY2ggcmV2ZWFsJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpBZHZhbmNlIHRoZSBlcG9jaCBzdGF0ZSBwYXN0IGEgc3R1Y2sgY29tbWl0IGJ5IHNraXBwaW5nIHRoZSByZXZlYWwgc3RlcCwgcmVjb3JkaW5nIHRoZSBjdXJyZW50IGVwb2NoIGhlaWdodCB3aXRob3V0IGNvbnN1bWluZyB0aGUgb3JpZ2luYWwgY29tbWl0IHZhbHVlLiBSZXF1aXJlcyBjb250cmFjdCBhdXRob3JpdHkuIFVzZWQgdG8gdW5ibG9jayB0aGUgY2hhaW4gd2hlbiB0aGUgbWF0Y2hpbmcgcmV2ZWFsIGNhbm5vdCBiZSBwcm9kdWNlZC4AAABXLTzNzQh0cmFuc2ZlcsgDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRyYW5zZmVyCnN1bW1hcnk6ICdUcmFuc2ZlciBjYXJnbyBiZXR3ZWVuIGVudGl0aWVzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUcmFuc2ZlciBjYXJnbyBiZXR3ZWVuIHR3byBlbnRpdGllcyBhdCB0aGUgc2FtZSBsb2NhdGlvbi4gQm90aCBlbnRpdGllcyBtdXN0IGJlIG93bmVkIGJ5IHRoZSBjYWxsZXIgYW5kIGF0IGxlYXN0IG9uZSBtdXN0IGhhdmUgbG9hZGVycy4gQ3JlYXRlcyBsb2FkIGFuZCB1bmxvYWQgdGFza3Mgb24gYm90aCBlbnRpdGllcyB3aXRoIGR1cmF0aW9uIGJhc2VkIG9uIGNvbWJpbmVkIGxvYWRlciBjYXBhY2l0eSBhbmQgWi1kaXN0YW5jZSBiZXR3ZWVuIHRoZW0uAAAAAES1zc0GdHJhdmVs+wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdHJhdmVsCnN1bW1hcnk6ICdNb3ZlIGEgc2hpcCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5pdGlhdGUgdHJhdmVsIG9mIGFuIGVudGl0eSBmcm9tIGl0cyBjdXJyZW50IGxvY2F0aW9uIHRvIGEgbmV3IGRlc3RpbmF0aW9uLgAAAJ7GqtLUCHVuZGVwbG955wQtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdW5kZXBsb3kKc3VtbWFyeTogJ1BhY2sgYSBkZXBsb3llZCBlbnRpdHkgaW50byBhIGhvc3QnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClBhY2sgYW4gZW50aXR5IGludG8gYSBob3N0IGVudGl0eSdzIGNhcmdvIGFzIGEgcGFja2VkLWVudGl0eSBpdGVtLiBIb3N0IGFuZCB0YXJnZXQgbXVzdCBzaGFyZSB0aGUgc2FtZSBvd25lciBhbmQgY29vcmRpbmF0ZXMsIHRoZSBob3N0IG11c3QgaGF2ZSBsb2FkZXJzIGFuZCBlbm91Z2ggY2FwYWNpdHkgZm9yIHRoZSBwYWNrZWQgbWFzcywgYW5kIHRoZSB0YXJnZXQgbXVzdCBiZSBpZGxlIHdpdGggZW1wdHkgY2FyZ28uIENyZWF0ZXMgYW4gZW50aXR5Z3JvdXAgYW5kIHNjaGVkdWxlcyB1bmRlcGxveSB0YXNrcyBvbiBib3RoIGVudGl0aWVzOyBvbiByZXNvbHV0aW9uIHRoZSB0YXJnZXQgaXMgZXJhc2VkIGFuZCB0aGUgcGFja2VkIGVudGl0eSBpcyBhZGRlZCB0byB0aGUgaG9zdCdzIGNhcmdvLiBJbnZlcnNlIG9mIGRlcGxveS4AAMhrVnP51Al1bndyYXBuZnTNBC0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB1bndyYXBuZnQKc3VtbWFyeTogJ0RlcG9zaXQgYW4gTkZUIGludG8gYSBob3N0IGVudGl0eScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKRGVwb3NpdCBhbiBBdG9taWNBc3NldHMgTkZUIGludG8gYSBob3N0IGVudGl0eSdzIGNhcmdvLiBQYWlycyB3aXRoIGFuIGF0b21pY2Fzc2V0czo6dHJhbnNmZXIgY2FycnlpbmcgdGhlICd1bndyYXAnIG1lbW8gaW4gdGhlIHNhbWUgdHJhbnNhY3Rpb24uIFRoZSBjYWxsZXIgbXVzdCBvd24gdGhlIGhvc3QsIHRoZSBob3N0IG11c3QgaGF2ZSBsb2FkZXJzLCBhbmQgdGhlIGhvc3QgbXVzdCBoYXZlIGNhcGFjaXR5IGhlYWRyb29tIGZvciB0aGUgdW53cmFwcGVkIG1hc3MuIFNjaGVkdWxlcyBhIFRBU0tfVU5XUkFQIG9uIHRoZSBob3N0IHRoYXQsIG9uIHJlc29sdXRpb24sIHBsYWNlcyB0aGUgZGVjb2RlZCBpdGVtIGludG8gdGhlIGhvc3QncyBjYXJnbyBhbmQgYnVybnMgdGhlIE5GVC4AAAAAAFCv4QR3YXJwnwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogd2FycApzdW1tYXJ5OiAnV2FycCB0byBhIGRlc3RpbmF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnN0YW50bHkgdGVsZXBvcnQgYW4gZW50aXR5IHRvIGEgZGVzdGluYXRpb24gc3lzdGVtLiBSZXF1aXJlcyB3YXJwIGNhcGFiaWxpdHksIGZ1bGwgZW5lcmd5LCBlbXB0eSBjYXJnbywgYW5kIGFuIGVtcHR5IHNjaGVkdWxlLiBUaGUgZGVzdGluYXRpb24gbXVzdCBiZSBhIHZhbGlkIHN5c3RlbSB3aXRoaW4gd2FycCByYW5nZS4gUmVzb2x2ZXMgaW1tZWRpYXRlbHkgYXMgYSB6ZXJvLWR1cmF0aW9uIHRhc2suAAAAAACgquMEd2lwZbIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGUKc3VtbWFyeTogJ0RFQlVHOiB3aXBlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQAAAAAAUM3lBHdyYXDMBC0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3cmFwCnN1bW1hcnk6ICdXcmFwIGNhcmdvIGludG8gYW4gTkZUJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpXcmFwIGEgcXVhbnRpdHkgb2YgY2FyZ28gZnJvbSBhbiBlbnRpdHkgaW50byBhbiBBdG9taWNBc3NldHMgTkZUIG1pbnRlZCB0byB0aGUgc3BlY2lmaWVkIG93bmVyLiBUaGUgZW50aXR5IG11c3QgYmUgYXQgYSBuZXh1cywgaGF2ZSBsb2FkZXJzLCBhbmQgY29udGFpbiBlbm91Z2ggb2YgdGhlIHJlcXVlc3RlZCBjYXJnby4gUmVtb3ZlcyB0aGUgY2FyZ28gZnJvbSB0aGUgZW50aXR5IGFuZCBtaW50cyB0aGUgTkZUIGlubGluZSB1c2luZyB0aGUgdGVtcGxhdGUgY29uZmlndXJlZCBmb3IgdGhhdCBpdGVtIGlkOyB0aGUgcGxheWVyIHBheXMgUkFNIGZvciB0aGUgbmV3IGFzc2V0IHJvdy4gUmVxdWlyZXMgdGhlIG93bmVyJ3MgYWN0aXZlIHBlcm1pc3Npb24gKG5vIHNlc3Npb24ta2V5IGNvbXBhdGliaWxpdHkpLgCAzy5PVc3lCndyYXBlbnRpdHm1BC0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3cmFwZW50aXR5CnN1bW1hcnk6ICdXcmFwIGEgZGVwbG95ZWQgZW50aXR5IGludG8gYW4gTkZUJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpXcmFwIGFuIGVudGl0eSBpbnRvIGFuIEF0b21pY0Fzc2V0cyBORlQgbWludGVkIHRvIGl0cyBvd25lci4gVGhlIGVudGl0eSBtdXN0IGJlIGF0IGEgbmV4dXMsIGlkbGUgd2l0aCBlbXB0eSBjYXJnbywgYW5kIGhhdmUgYW4gbmZ0Y29uZmlnIG1hcHBpbmcgZm9yIGl0cyBpdGVtIGlkLiBFcmFzZXMgdGhlIGVudGl0eSBhbmQgbWludHMgdGhlIE5GVCBpbmxpbmUsIHByZXNlcnZpbmcgaXRzIHN0YXRzIGFuZCBpbnN0YWxsZWQgbW9kdWxlczsgdGhlIHBsYXllciBwYXlzIFJBTSBmb3IgdGhlIG5ldyBhc3NldCByb3cuIFJlcXVpcmVzIHRoZSBvd25lcidzIGFjdGl2ZSBwZXJtaXNzaW9uIChubyBzZXNzaW9uLWtleSBjb21wYXRpYmlsaXR5KS4IAAAAAADKrkEDaTY0AAAJY2FyZ29fcm93AAAAAPjs8lQDaTY0AAAKZW50aXR5X3JvdwCqppf57PJUA2k2NAAAD2VudGl0eWdyb3VwX3JvdwAAYG5NivKaA2k2NAAADW5mdGNvbmZpZ19yb3cAAAAAXOVNrANpNjQAAApwbGF5ZXJfcm93AAAAQO2rsLoDaTY0AAALcmVzZXJ2ZV9yb3cAAAAAAJVNxgNpNjQAAAlzdGF0ZV9yb3cAAAAAAKyqzwNpNjQAAAl0eXBlc19yb3cBEVNoaXBsb2FkIChTZXJ2ZXIpEVNoaXBsb2FkIChTZXJ2ZXIpAAAALgAAAABEhaZBDmNhbmNlbF9yZXN1bHRzAAAAAIC8zEUMdGFza19yZXN1bHRzAAAADbtIpUoMdGFza19yZXN1bHRzAAAAAHgaq0oMdGFza19yZXN1bHRzAADIa3oaq0oMdGFza19yZXN1bHRzAIDPLk+FsEoGc3RyaW5nAAAAAFzVsmEMdGFza19yZXN1bHRzAABgbk2KsmILZ2FtZV9jb25maWcAVDyOuaiyYgh1aW50MTZbXQAAwBHlqbJiC2VudW1fcmVzdWx0ALBy2eWpsmINZW50aXR5X2luZm9bXQAA8NnlqbJiC2VudGl0eV9pbmZvAEw2SarssmIPaXRlbWRhdGFfcmVzdWx0AABOTqrssmIPaXRlbV9pZHNfcmVzdWx0AAAAWKrssmIKaXRlbXNfaW5mb4BV9Vmq7LJiC2VudW1fcmVzdWx0AExWMk0Hs2IQa2luZF9tZXRhX3Jlc3VsdAAmddkgGrNiDWxvY2F0aW9uX2luZm8AgMkmIRqzYhBsb2NhdGlvbl9kZXJpdmVkALCqPicqs2ILZW51bV9yZXN1bHQAAFZRJyqzYg5tb2R1bGVzX3Jlc3VsdAAA8OcaNbNiC25lYXJieV9pbmZvAABd0+U1s2IObmZ0aW5mb19yZXN1bHQAALjKm1izYgtwbGF5ZXJfaW5mb6CyyfjRW7NiD3Byb2plY3RlZF9zdGF0ZQAAUNUhdbNiDnJlY2lwZXNfcmVzdWx0AABW1SF1s2IOcmVjaXBlc19yZXN1bHQAAM4GYXWzYgtlbnVtX3Jlc3VsdACw2ldhdbNiE3N0cmF0dW1fcmVtYWluaW5nW12AFbqaYnWzYhByZXNvdXJjZXNfcmVzdWx0AAAAONOIs2IVZW50aXR5X2xheW91dHNfcmVzdWx0AIDU2dyMs2IMc3RyYXR1bV9kYXRhgJW7RkqNs2IQZW50aXR5X3N1bW1hcnlbXQCi2ubmqullDHRhc2tfcmVzdWx0cwAAAAAA0LBpC2NoZWNrc3VtMjU2AAAAQITSsGkLY2hlY2tzdW01MTIAAIhXM+nymgZzdHJpbmcAAACKXdOQugx0YXNrX3Jlc3VsdHMAAABA7Uixug9yZXNvbHZlX3Jlc3VsdHMAAABXLTzNzQx0YXNrX3Jlc3VsdHMAAAAARLXNzQx0YXNrX3Jlc3VsdHMAAACexqrS1Ax0YXNrX3Jlc3VsdHMAAMhrVnP51Ax0YXNrX3Jlc3VsdHMAAAAAAFCv4Qx0YXNrX3Jlc3VsdHMAAAAAAFDN5Qx0YXNrX3Jlc3VsdHMAgM8uT1XN5Qx0YXNrX3Jlc3VsdHM=');
228
+ const abiBlob = antelope.Blob.from('DmVvc2lvOjphYmkvMS4yAhVCX3ZlY3Rvcl9lbnRpdHlfcmVmX0UMZW50aXR5X3JlZltdDWxvY2F0aW9uX3R5cGUFdWludDiUAQlhZGRtb2R1bGUABAllbnRpdHlfaWQGdWludDY0DG1vZHVsZV9pbmRleAV1aW50OAptb2R1bGVfcmVmCWNhcmdvX3JlZgp0YXJnZXRfcmVmCmNhcmdvX3JlZj8IYWRkbmV4dXMAAwpuZXh1c19uYW1lBnN0cmluZwF4BWludDY0AXkFaW50NjQHYWR2YW5jZQACBnJldmVhbAZzdHJpbmcGY29tbWl0C2NoZWNrc3VtMjU2BWJsZW5kAAICaWQGdWludDY0BmlucHV0cwxjYXJnb19pdGVtW10JYnVpbGRwbG90AAICaWQGdWludDY0B3Bsb3RfaWQGdWludDY0BmNhbmNlbAACAmlkBnVpbnQ2NAVjb3VudAZ1aW50NjQOY2FuY2VsX3Jlc3VsdHMABgllbnRpdHlfaWQGdWludDY0C2VudGl0eV90eXBlBG5hbWUPY2FuY2VsbGVkX2NvdW50BXVpbnQ4EHNjaGVkdWxlX3N0YXJ0ZWQLdGltZV9wb2ludD8LZW50aXR5Z3JvdXAHdWludDY0Pw1ncm91cF9tZW1iZXJzFkJfdmVjdG9yX2VudGl0eV9yZWZfRT8KY2FyZ29faXRlbQAEB2l0ZW1faWQGdWludDE2BXN0YXRzBnVpbnQ2NAdtb2R1bGVzDm1vZHVsZV9lbnRyeVtdCHF1YW50aXR5BnVpbnQzMgljYXJnb19yZWYAAwdpdGVtX2lkBnVpbnQxNgVzdGF0cwZ1aW50NjQHbW9kdWxlcw5tb2R1bGVfZW50cnlbXQljYXJnb19yb3cABgJpZAZ1aW50NjQJZW50aXR5X2lkBnVpbnQ2NAdpdGVtX2lkBnVpbnQ2NAhxdWFudGl0eQZ1aW50NjQFc3RhdHMGdWludDY0B21vZHVsZXMObW9kdWxlX2VudHJ5W10KY2FyZ29fdmlldwAFB2l0ZW1faWQGdWludDE2BXN0YXRzBnVpbnQ2NAdtb2R1bGVzDm1vZHVsZV9lbnRyeVtdCHF1YW50aXR5BnVpbnQzMgJpZAZ1aW50NjQJY2xhaW1wbG90AAMCaWQGdWludDY0DnRhcmdldF9pdGVtX2lkBnVpbnQxNgZjb29yZHMLY29vcmRpbmF0ZXMMY2xhaW1zdGFydGVyAAMHYWNjb3VudARuYW1lAXgFaW50NjQBeQVpbnQ2NAljbGVhbnJzdnAAAgVlcG9jaAZ1aW50NjQIbWF4X3Jvd3MGdWludDY0CmNsZWFydGFibGUAAwp0YWJsZV9uYW1lBG5hbWUFc2NvcGUFbmFtZT8IbWF4X3Jvd3MHdWludDY0PwZjb21taXQAAQZjb21taXQLY2hlY2tzdW0yNTYJY29uZmlnbG9nAAEGY29uZmlnC2dhbWVfY29uZmlnC2Nvb3JkaW5hdGVzAAMBeAVpbnQ2NAF5BWludDY0AXoHdWludDE2PwVjcmFmdAAEAmlkBnVpbnQ2NAlyZWNpcGVfaWQGdWludDE2CHF1YW50aXR5BnVpbnQzMgZpbnB1dHMMY2FyZ29faXRlbVtdDWNyYWZ0ZXJfc3RhdHMAAgVzcGVlZAZ1aW50MTYFZHJhaW4GdWludDE2CGRlbW9saXNoAAEJZW50aXR5X2lkBnVpbnQ2NAZkZXBsb3kAAgJpZAZ1aW50NjQDcmVmCWNhcmdvX3JlZglkZXBsb3luZnQAAwVvd25lcgRuYW1lCGFzc2V0X2lkBnVpbnQ2NA90YXJnZXRfbmV4dXNfaWQGdWludDY0CmRlc2NlbnRpdHkABAdpdGVtX2lkBnVpbnQxNgpodWxsX3N0YXRzBnVpbnQ2NAxtb2R1bGVfaXRlbXMIdWludDE2W10MbW9kdWxlX3N0YXRzCHVpbnQ2NFtdBmVuYWJsZQABB2VuYWJsZWQEYm9vbAxlbmVyZ3lfc3RhdHMAAghjYXBhY2l0eQZ1aW50MTYIcmVjaGFyZ2UGdWludDE2FGVudGl0eV9jdXJyZW50X3N0YXRlAAILY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMGZW5lcmd5BnVpbnQxNg9lbnRpdHlfZGVmYXVsdHMAAgt3YXJlaG91c2VfegZ1aW50MTYLY29udGFpbmVyX3oGdWludDE2C2VudGl0eV9pbmZvABoEdHlwZQRuYW1lAmlkBnVpbnQ2NAVvd25lcgRuYW1lC2VudGl0eV9uYW1lBnN0cmluZwtjb29yZGluYXRlcwtjb29yZGluYXRlcwdpdGVtX2lkBnVpbnQxNgljYXJnb21hc3MGdWludDMyBWNhcmdvDGNhcmdvX3ZpZXdbXQdsb2FkZXJzDWxvYWRlcl9zdGF0cz8HbW9kdWxlcw5tb2R1bGVfZW50cnlbXQZlbmVyZ3kHdWludDE2PwhodWxsbWFzcwd1aW50MzI/B2VuZ2luZXMPbW92ZW1lbnRfc3RhdHM/CWdlbmVyYXRvcg1lbmVyZ3lfc3RhdHM/CGNhcGFjaXR5B3VpbnQzMj8IZ2F0aGVyZXIPZ2F0aGVyZXJfc3RhdHM/BmhhdWxlcg1oYXVsZXJfc3RhdHM/BHdhcnALd2FycF9zdGF0cz8HY3JhZnRlcg5jcmFmdGVyX3N0YXRzPwdpc19pZGxlBGJvb2wMY3VycmVudF90YXNrBXRhc2s/FGN1cnJlbnRfdGFza19lbGFwc2VkBnVpbnQzMhZjdXJyZW50X3Rhc2tfcmVtYWluaW5nBnVpbnQzMg1wZW5kaW5nX3Rhc2tzBnRhc2tbXQdpZGxlX2F0C3RpbWVfcG9pbnQ/CHNjaGVkdWxlCXNjaGVkdWxlPw1lbnRpdHlfbGF5b3V0AAIOZW50aXR5X2l0ZW1faWQGdWludDE2BXNsb3RzCnNsb3RfZGVmW10VZW50aXR5X2xheW91dHNfcmVzdWx0AAEIZW50aXRpZXMPZW50aXR5X2xheW91dFtdCmVudGl0eV9yZWYAAgtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQKZW50aXR5X3JvdwAUAmlkBnVpbnQ2NAVvd25lcgRuYW1lBGtpbmQEbmFtZQRuYW1lBnN0cmluZwVzdGF0cwZ1aW50NjQLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMIaHVsbG1hc3MHdWludDMyPwhjYXBhY2l0eQd1aW50MzI/BmVuZXJneQd1aW50MTY/CWNhcmdvbWFzcwZ1aW50MzIHZW5naW5lcw9tb3ZlbWVudF9zdGF0cz8JZ2VuZXJhdG9yDWVuZXJneV9zdGF0cz8HbG9hZGVycw1sb2FkZXJfc3RhdHM/CGdhdGhlcmVyD2dhdGhlcmVyX3N0YXRzPwR3YXJwC3dhcnBfc3RhdHM/B2NyYWZ0ZXIOY3JhZnRlcl9zdGF0cz8GaGF1bGVyDWhhdWxlcl9zdGF0cz8HbW9kdWxlcw5tb2R1bGVfZW50cnlbXQhzY2hlZHVsZQlzY2hlZHVsZT8HaXRlbV9pZAZ1aW50MTYOZW50aXR5X3N1bW1hcnkACAR0eXBlBG5hbWUCaWQGdWludDY0BW93bmVyBG5hbWULZW50aXR5X25hbWUGc3RyaW5nC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzB2lzX2lkbGUEYm9vbA5yZXNvbHZlZF9jb3VudAZ1aW50MzINcGVuZGluZ19jb3VudAZ1aW50MzIQZW50aXR5X3Rhc2tfaW5mbwAECWVudGl0eV9pZAZ1aW50NjQLZW50aXR5X3R5cGUEbmFtZQp0YXNrX2NvdW50BXVpbnQ4EHNjaGVkdWxlX3N0YXJ0ZWQKdGltZV9wb2ludA9lbnRpdHlncm91cF9yb3cAAgJpZAZ1aW50NjQMcGFydGljaXBhbnRzDGVudGl0eV9yZWZbXQtlbnVtX21lbWJlcgACBXZhbHVlBXVpbnQ4BG5hbWUGc3RyaW5nC2VudW1fcmVzdWx0AAEHbWVtYmVycw1lbnVtX21lbWJlcltdDGZpeGNhcmdvbWFzcwABCWVudGl0eV9pZAZ1aW50NjQLZ2FtZV9jb25maWcAAwd2ZXJzaW9uBnVpbnQzMghkZWZhdWx0cw9lbnRpdHlfZGVmYXVsdHMFaXRlbXMKaXRlbV9kZWZbXQZnYXRoZXIABAlzb3VyY2VfaWQGdWludDY0DmRlc3RpbmF0aW9uX2lkBnVpbnQ2NAdzdHJhdHVtBnVpbnQxNghxdWFudGl0eQZ1aW50MzIOZ2F0aGVyZXJfc3RhdHMAAwV5aWVsZAZ1aW50MTYFZHJhaW4GdWludDE2BWRlcHRoBnVpbnQxNglnZXRjb25maWcAAAtnZXRlbGlnaWJsZQACBmNvb3Jkcwtjb29yZGluYXRlcwdzdHJhdHVtBnVpbnQxNglnZXRlbnRjbHMAAAtnZXRlbnRpdGllcwACBW93bmVyBG5hbWULZW50aXR5X3R5cGUFbmFtZT8JZ2V0ZW50aXR5AAEJZW50aXR5X2lkBnVpbnQ2NAtnZXRpdGVtZGF0YQAACmdldGl0ZW1pZHMAAAhnZXRpdGVtcwAADGdldGl0ZW10eXBlcwAAC2dldGtpbmRtZXRhAAALZ2V0bG9jYXRpb24AAgF4BWludDY0AXkFaW50NjQKZ2V0bG9jZGF0YQACAXgFaW50NjQBeQVpbnQ2NAtnZXRtb2R0eXBlcwAACmdldG1vZHVsZXMAAAlnZXRuZWFyYnkAAgllbnRpdHlfaWQGdWludDY0CHJlY2hhcmdlBGJvb2wKZ2V0bmZ0aW5mbwAACWdldHBsYXllcgABB2FjY291bnQEbmFtZQxnZXRwcm9qc3RhdGUAAgllbnRpdHlfaWQGdWludDY0CnRhc2tfY291bnQGdWludDg/CWdldHJlY2lwZQABDm91dHB1dF9pdGVtX2lkBnVpbnQxNgpnZXRyZWNpcGVzAAILbG93ZXJfYm91bmQGdWludDE2BWxpbWl0BXVpbnQ4CmdldHJlc2NhdHMAAAtnZXRyZXNlcnZlcwACAXgFaW50NjQBeQVpbnQ2NAxnZXRyZXNvdXJjZXMAAAhnZXRzbG90cwAACmdldHN0cmF0dW0AAwF4BWludDY0AXkFaW50NjQHc3RyYXR1bQZ1aW50MTYMZ2V0c3VtbWFyaWVzAAIFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQVuYW1lPwtncm91cHRyYXZlbAAECGVudGl0aWVzDGVudGl0eV9yZWZbXQF4BWludDY0AXkFaW50NjQIcmVjaGFyZ2UEYm9vbARoYXNoAAEFdmFsdWUGc3RyaW5nB2hhc2g1MTIAAQV2YWx1ZQZzdHJpbmcMaGF1bGVyX3N0YXRzAAMIY2FwYWNpdHkFdWludDgKZWZmaWNpZW5jeQZ1aW50MTYFZHJhaW4GdWludDE2C2ltcG9ydGNhcmdvAAEDcm93CWNhcmdvX3JvdwxpbXBvcnRlbnRpdHkAAQNyb3cKZW50aXR5X3JvdwtpbXBvcnRncm91cAABA3Jvdw9lbnRpdHlncm91cF9yb3cMaW1wb3J0cGxheWVyAAEFb3duZXIEbmFtZQ1pbXBvcnRyZXNlcnZlAAILZXBvY2hfc2NvcGUGdWludDMyA3JvdwtyZXNlcnZlX3JvdwtpbXBvcnRzdGF0ZQABA3JvdwlzdGF0ZV9yb3cKaW5pdGlhbGl6ZQABBHNlZWQLY2hlY2tzdW0yNTYIaXRlbV9kZWYABQJpZAZ1aW50MTYEbWFzcwZ1aW50MzIEdHlwZQV1aW50OAdzdWJ0eXBlBXVpbnQ4BHRpZXIFdWludDgMaXRlbV9pZF9wYWlyAAICaWQGdWludDE2BG5hbWUGc3RyaW5nD2l0ZW1faWRzX3Jlc3VsdAABBWl0ZW1zDml0ZW1faWRfcGFpcltdD2l0ZW1kYXRhX3Jlc3VsdAACBWl0ZW1zCml0ZW1fZGVmW10HcmVjaXBlcw5yZWNpcGVzX3Jlc3VsdAppdGVtc19pbmZvAAEFaXRlbXMKaXRlbV9kZWZbXQRqb2luAAEHYWNjb3VudARuYW1lEGtpbmRfbWV0YV9yZXN1bHQAAgVraW5kcw9raW5kX21ldGFfcm93W10JdGVtcGxhdGVzE3RlbXBsYXRlX21ldGFfcm93W10Na2luZF9tZXRhX3JvdwAFBGtpbmQEbmFtZQ5jbGFzc2lmaWNhdGlvbgV1aW50OBBjYXBhYmlsaXR5X2ZsYWdzBXVpbnQ4B3pfY29vcmQGdWludDMyDWRlZmF1bHRfbGFiZWwGc3RyaW5nDGxvYWRlcl9zdGF0cwADBG1hc3MGdWludDMyBnRocnVzdAZ1aW50MTYIcXVhbnRpdHkFdWludDgQbG9jYXRpb25fZGVyaXZlZAACDHN0YXRpY19wcm9wcw9sb2NhdGlvbl9zdGF0aWMEc2l6ZQZ1aW50MTYNbG9jYXRpb25faW5mbwACBmNvb3Jkcwtjb29yZGluYXRlcwlpc19zeXN0ZW0EYm9vbA9sb2NhdGlvbl9zdGF0aWMABQZjb29yZHMLY29vcmRpbmF0ZXMEdHlwZQ1sb2NhdGlvbl90eXBlB3N1YnR5cGUFdWludDgFc2VlZDAFdWludDgFc2VlZDEFdWludDgMbW9kdWxlX2VudHJ5AAIEdHlwZQV1aW50OAlpbnN0YWxsZWQOcGFja2VkX21vZHVsZT8LbW9kdWxlX2luZm8ABAJpZAZ1aW50MTYEbWFzcwZ1aW50MzILbW9kdWxlX3R5cGUFdWludDgEdGllcgV1aW50OA5tb2R1bGVzX3Jlc3VsdAABB21vZHVsZXMNbW9kdWxlX2luZm9bXQ5tb3ZlbWVudF9zdGF0cwACBnRocnVzdAZ1aW50MzIFZHJhaW4GdWludDE2C25lYXJieV9pbmZvAAUKY2FuX3RyYXZlbARib29sB2N1cnJlbnQUZW50aXR5X2N1cnJlbnRfc3RhdGUJcHJvamVjdGVkFGVudGl0eV9jdXJyZW50X3N0YXRlCm1heF9lbmVyZ3kGdWludDE2B3N5c3RlbXMPbmVhcmJ5X3N5c3RlbVtdDW5lYXJieV9zeXN0ZW0ABAhkaXN0YW5jZQZ1aW50NjQLZW5lcmd5X2Nvc3QGdWludDY0C2ZsaWdodF90aW1lBnVpbnQzMghsb2NhdGlvbg1sb2NhdGlvbl9pbmZvEG5mdF9pdGVtX3BheWxvYWQAAgRpdGVtCmNhcmdvX2l0ZW0IbG9jYXRpb24MY29vcmRpbmF0ZXM/Dm5mdF9zY2hlbWFfZGVmAAILc2NoZW1hX25hbWUEbmFtZQZmaWVsZHMOc2NoZW1hX2ZpZWxkW10QbmZ0X3RlbXBsYXRlX2RlZgADB2l0ZW1faWQGdWludDE2C3NjaGVtYV9uYW1lBG5hbWULdGVtcGxhdGVfaWQFaW50MzINbmZ0Y29uZmlnX3JvdwADB2l0ZW1faWQGdWludDE2C3RlbXBsYXRlX2lkBWludDMyC3NjaGVtYV9uYW1lBG5hbWUJbmZ0aW1ndXJsAAIEaXRlbQpjYXJnb19pdGVtCGxvY2F0aW9uDGNvb3JkaW5hdGVzPw5uZnRpbmZvX3Jlc3VsdAACB3NjaGVtYXMQbmZ0X3NjaGVtYV9kZWZbXQl0ZW1wbGF0ZXMSbmZ0X3RlbXBsYXRlX2RlZltdBm5vdGlmeQABBWV2ZW50CnRhc2tfZXZlbnQNcGFja2VkX21vZHVsZQACB2l0ZW1faWQGdWludDE2BXN0YXRzBnVpbnQ2NAtwbGF5ZXJfaW5mbwADBW93bmVyBG5hbWUJaXNfcGxheWVyBGJvb2wMY29tcGFueV9uYW1lBnN0cmluZwpwbGF5ZXJfcm93AAEFb3duZXIEbmFtZQ9wcm9qZWN0ZWRfc3RhdGUADgVvd25lcgRuYW1lC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzBmVuZXJneQd1aW50MTY/CWNhcmdvbWFzcwZ1aW50MzIFY2FyZ28MY2FyZ29fdmlld1tdCGh1bGxtYXNzB3VpbnQzMj8HZW5naW5lcw9tb3ZlbWVudF9zdGF0cz8HbG9hZGVycw1sb2FkZXJfc3RhdHM/CWdlbmVyYXRvcg1lbmVyZ3lfc3RhdHM/CGNhcGFjaXR5B3VpbnQzMj8IZ2F0aGVyZXIPZ2F0aGVyZXJfc3RhdHM/BmhhdWxlcg1oYXVsZXJfc3RhdHM/BHdhcnALd2FycF9zdGF0cz8HY3JhZnRlcg5jcmFmdGVyX3N0YXRzPwhyZWNoYXJnZQABAmlkBnVpbnQ2NAxyZWNpcGVfaW5wdXQABAdpdGVtX2lkBnVpbnQxNghjYXRlZ29yeQV1aW50OAR0aWVyBXVpbnQ4CHF1YW50aXR5BnVpbnQzMhByZWNpcGVfaXRlbV9pbmZvAAICaWQGdWludDE2BG1hc3MGdWludDMyD3JlY2lwZV9yZXNwb25zZQAHDm91dHB1dF9pdGVtX2lkBnVpbnQxNgtvdXRwdXRfbWFzcwZ1aW50MzIGaW5wdXRzDnJlY2lwZV9pbnB1dFtdCnN0YXRfc2xvdHMUc3RhdF9zbG90X3Jlc3BvbnNlW10NYmxlbmRfd2VpZ2h0cwVieXRlcwtvdXRwdXRfaXRlbRByZWNpcGVfaXRlbV9pbmZvC2lucHV0X2l0ZW1zEnJlY2lwZV9pdGVtX2luZm9bXQ5yZWNpcGVzX3Jlc3VsdAABB3JlY2lwZXMRcmVjaXBlX3Jlc3BvbnNlW10McmVmcnNoZW50aXR5AAEJZW50aXR5X2lkBnVpbnQ2NAtyZXNlcnZlX3JvdwAFAmlkBnVpbnQ2NAhjb29yZF9pZAZ1aW50NjQHc3RyYXR1bQZ1aW50MTYJcmVtYWluaW5nBnVpbnQzMgpsYXN0X2Jsb2NrFGJsb2NrX3RpbWVzdGFtcF90eXBlB3Jlc29sdmUAAgJpZAZ1aW50NjQFY291bnQHdWludDY0Pw9yZXNvbHZlX3Jlc3VsdHMABgllbnRpdHlfaWQGdWludDY0C2VudGl0eV90eXBlBG5hbWUOcmVzb2x2ZWRfY291bnQFdWludDgUbmV3X3NjaGVkdWxlX3N0YXJ0ZWQLdGltZV9wb2ludD8LZW50aXR5Z3JvdXAHdWludDY0Pw1ncm91cF9tZW1iZXJzFkJfdmVjdG9yX2VudGl0eV9yZWZfRT8NcmVzb3VyY2VfaW5mbwAEAmlkBnVpbnQxNgRtYXNzBnVpbnQzMghjYXRlZ29yeQV1aW50OAR0aWVyBXVpbnQ4DnJlc291cmNlX3N0YXRzAAMFc3RhdDEGdWludDE2BXN0YXQyBnVpbnQxNgVzdGF0MwZ1aW50MTYQcmVzb3VyY2VzX3Jlc3VsdAABCXJlc291cmNlcw9yZXNvdXJjZV9pbmZvW10Icm1tb2R1bGUAAwllbnRpdHlfaWQGdWludDY0DG1vZHVsZV9pbmRleAV1aW50OAp0YXJnZXRfcmVmCmNhcmdvX3JlZj8Icm1uZnRjZmcAAQdpdGVtX2lkBnVpbnQxNgRzYWx0AAEEc2FsdAZ1aW50NjQIc2NoZWR1bGUAAgdzdGFydGVkCnRpbWVfcG9pbnQFdGFza3MGdGFza1tdDHNjaGVtYV9maWVsZAACBG5hbWUGc3RyaW5nCmZpZWxkX3R5cGUGc3RyaW5nCXNldG5mdGNmZwADB2l0ZW1faWQGdWludDE2C3RlbXBsYXRlX2lkBWludDMyC3NjaGVtYV9uYW1lBG5hbWUKc2tpcHJldmVhbAABBmNvbW1pdAtjaGVja3N1bTI1NghzbG90X2RlZgACBHR5cGUFdWludDgKb3V0cHV0X3BjdAZ1aW50MTYSc3RhdF9zbG90X3Jlc3BvbnNlAAEHc291cmNlcw1zdGF0X3NvdXJjZVtdC3N0YXRfc291cmNlAAILaW5wdXRfaW5kZXgFdWludDgQaW5wdXRfc3RhdF9pbmRleAV1aW50OAlzdGF0ZV9yb3cABQdlbmFibGVkBGJvb2wFZXBvY2gGdWludDMyBHNhbHQGdWludDY0BHNlZWQLY2hlY2tzdW0yNTYGY29tbWl0C2NoZWNrc3VtMjU2DHN0cmF0dW1fZGF0YQACB3N0cmF0dW0Mc3RyYXR1bV9pbmZvBXN0YXRzDnJlc291cmNlX3N0YXRzDHN0cmF0dW1faW5mbwAFB2l0ZW1faWQGdWludDE2BHNlZWQGdWludDY0CHJpY2huZXNzBnVpbnQxNgdyZXNlcnZlBnVpbnQzMgtyZXNlcnZlX21heAZ1aW50MzIRc3RyYXR1bV9yZW1haW5pbmcAAwdzdHJhdHVtBnVpbnQxNglyZW1haW5pbmcGdWludDMyCmxhc3RfYmxvY2sUYmxvY2tfdGltZXN0YW1wX3R5cGUEdGFzawAIBHR5cGUFdWludDgIZHVyYXRpb24GdWludDMyCmNhbmNlbGFibGUFdWludDgLY29vcmRpbmF0ZXMMY29vcmRpbmF0ZXM/BWNhcmdvDGNhcmdvX2l0ZW1bXQxlbnRpdHl0YXJnZXQLZW50aXR5X3JlZj8LZW50aXR5Z3JvdXAHdWludDY0PwtlbmVyZ3lfY29zdAd1aW50MTY/CnRhc2tfZXZlbnQACQpldmVudF90eXBlBXVpbnQ4BW93bmVyBG5hbWULZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0CnRhc2tfaW5kZXgFdWludDgEdGFzawR0YXNrCXN0YXJ0c19hdAp0aW1lX3BvaW50DGNvbXBsZXRlc19hdAp0aW1lX3BvaW50Cm5ld19lbmVyZ3kHdWludDE2Pwx0YXNrX3Jlc3VsdHMAAQhlbnRpdGllcxJlbnRpdHlfdGFza19pbmZvW10RdGVtcGxhdGVfbWV0YV9yb3cAAwdpdGVtX2lkBnVpbnQxNgRraW5kBG5hbWUNZGlzcGxheV9sYWJlbAZzdHJpbmcIdHJhbnNmZXIAAwlzb3VyY2VfaWQGdWludDY0B2Rlc3RfaWQGdWludDY0BWl0ZW1zDGNhcmdvX2l0ZW1bXQZ0cmF2ZWwABAJpZAZ1aW50NjQBeAVpbnQ2NAF5BWludDY0CHJlY2hhcmdlBGJvb2wJdHlwZXNfcm93AAUCaWQGdWludDY0E2VudGl0eV9zdW1tYXJ5X3R5cGUOZW50aXR5X3N1bW1hcnkQZ2FtZV9jb25maWdfdHlwZQtnYW1lX2NvbmZpZxZzdHJhdHVtX3JlbWFpbmluZ190eXBlEXN0cmF0dW1fcmVtYWluaW5nFW5mdF9pdGVtX3BheWxvYWRfdHlwZRBuZnRfaXRlbV9wYXlsb2FkCHVuZGVwbG95AAIHaG9zdF9pZAZ1aW50NjQJdGFyZ2V0X2lkBnVpbnQ2NAl1bndyYXBuZnQAAwVvd25lcgRuYW1lCGFzc2V0X2lkBnVpbnQ2NAdob3N0X2lkBnVpbnQ2NAR3YXJwAAMCaWQGdWludDY0AXgFaW50NjQBeQVpbnQ2NAp3YXJwX3N0YXRzAAEFcmFuZ2UGdWludDMyBHdpcGUAAAR3cmFwAAUFb3duZXIEbmFtZQllbnRpdHlfaWQGdWludDY0CG5leHVzX2lkBnVpbnQ2NAhjYXJnb19pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0CndyYXBlbnRpdHkAAgllbnRpdHlfaWQGdWludDY0CG5leHVzX2lkBnVpbnQ2NEsAAFBRJypTMglhZGRtb2R1bGXHAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBhZGRtb2R1bGUKc3VtbWFyeTogJ0luc3RhbGwgYSBtb2R1bGUgaW50byBhIHNsb3QnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluc3RhbGwgYSBtb2R1bGUgZnJvbSBjYXJnbyBpbnRvIGEgbW9kdWxlIHNsb3Qgb24gYSBsaXZlIGVudGl0eSBvciBhIHBhY2tlZCBlbnRpdHkgaW4gY2FyZ28uIFRoZSBlbnRpdHkgbXVzdCBiZSBpZGxlIHdpdGggbm8gc2NoZWR1bGVkIHRhc2tzLiBUaGUgbW9kdWxlIHR5cGUgbXVzdCBiZSBjb21wYXRpYmxlIHdpdGggdGhlIHRhcmdldCBzbG90IHR5cGUuIFRoZSBtb2R1bGUgaXRlbSBpcyByZW1vdmVkIGZyb20gY2FyZ28gdXBvbiBpbnN0YWxsYXRpb24uAAAAWHc1UzIIYWRkbmV4dXOnAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBhZGRuZXh1cwpzdW1tYXJ5OiAnQWRkIGEgbmV4dXMgbG9jYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNyZWF0ZSBhIG5ldyBuZXh1cyBlbnRpdHkgYXQgdGhlIGdpdmVuIGNvb3JkaW5hdGVzLiBOZXh1c2VzIGFyZSBvd25lZCBieSB0aGUgY29udHJhY3QgYW5kIHNlcnZlIGFzIGZpeGVkIGdhdGhlcmluZyBwb2ludHMgd2hlcmUgcGxheWVycyBjYW4gd3JhcCwgdW53cmFwLCBkZXBsb3ksIGFuZCBvdGhlcndpc2UgaW50ZXJhY3Qgd2l0aCBORlQtYmFja2VkIGFzc2V0cy4gUmVxdWlyZXMgY29udHJhY3QgYXV0aG9yaXR5LgAAAEChaXYyB2FkdmFuY2XTAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBhZHZhbmNlCnN1bW1hcnk6ICdBZHZhbmNlIHR1cm4nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkFkdmFuY2UgdGhlIGdhbWUgdG8gdGhlIG5leHQgdHVybi4AAAAAgDRVPAVibGVuZPwCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGJsZW5kCnN1bW1hcnk6ICdCbGVuZCBjYXJnbyBzdGFja3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNvbWJpbmUgbXVsdGlwbGUgY2FyZ28gc3RhY2tzIG9mIHRoZSBzYW1lIGl0ZW0gdHlwZSBpbnRvIGEgc2luZ2xlIHN0YWNrIHdpdGggbmV3IGJsZW5kZWQgc3RhdHMuIEFsbCBpbnB1dCBzdGFja3MgbXVzdCBzaGFyZSB0aGUgc2FtZSBpdGVtIGlkLiBUaGUgb3V0cHV0IHN0YWNrIGhhcyB0aGUgY29tYmluZWQgcXVhbnRpdHkgb2YgYWxsIGlucHV0cy4AAMg01hSdPglidWlsZHBsb3QAAAAAAESFpkEGY2FuY2VswgItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY2FuY2VsCnN1bW1hcnk6ICdDYW5jZWwgc2NoZWR1bGVkIHRhc2tzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYW5jZWwgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgdGFza3MgZnJvbSB0aGUgZW5kIG9mIGFuIGVudGl0eSdzIHNjaGVkdWxlLiBUYXNrcyB0aGF0IGFyZSBpbW11dGFibGUgYW5kIGluIHByb2dyZXNzIGNhbm5vdCBiZSBjYW5jZWxsZWQuAADINFbpTEQJY2xhaW1wbG90AHBVviZj6UxEDGNsYWltc3RhcnRlcoUELS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNsYWltc3RhcnRlcgpzdW1tYXJ5OiAnREVCVUc6IGNsYWltIGEgc3RhcnRlciBzaGlwJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTcGF3biBhIHByZS1raXR0ZWQgVDEgc3RhcnRlciBzaGlwIGF0IHRoZSBnaXZlbiBjb29yZGluYXRlcyBmb3IgYSByZWdpc3RlcmVkIHBsYXllci4gQXZhaWxhYmxlIG9ubHkgb24gdGVzdCBkZXBsb3ltZW50cyB3aGVyZSBubyBpbi1nYW1lIHNoaXAgZWNvbm9teSB5ZXQgZXhpc3RzLiBSZXF1aXJlcyB0aGUgY2FsbGVyIHRvIGJlIGEgam9pbmVkIHBsYXllciB3aXRoIG5vIGV4aXN0aW5nIHNoaXBzOyB0aGUgcmVzdWx0aW5nIHNoaXAgaXMgZml0dGVkIHdpdGggYSBnZW5lcmF0b3IsIGVuZ2luZSwgZ2F0aGVyZXIsIGNyYWZ0ZXIsIGFuZCBoYXVsZXIgbW9kdWxlLgAAqBvfaVRECWNsZWFucnN2cOwCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNsZWFucnN2cApzdW1tYXJ5OiAnQ2xlYW4gdXAgcGFzdCBlcG9jaCByZXNlcnZlcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKRXJhc2UgcmVzZXJ2ZSB0YWJsZSByb3dzIGZyb20gYSBwYXN0IGVwb2NoLiBDYW5ub3QgY2xlYW4gdGhlIGN1cnJlbnQgb3IgZnV0dXJlIGVwb2Nocy4gVGhlIG1heF9yb3dzIHBhcmFtZXRlciBjYXBzIHRoZSBudW1iZXIgb2Ygcm93cyBlcmFzZWQgcGVyIGNhbGwgdG8gbGltaXQgQ1BVIHVzYWdlLgCAisfka1RECmNsZWFydGFibGW+AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjbGVhcnRhYmxlCnN1bW1hcnk6ICdERUJVRzogY2xlYXJ0YWJsZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0AAAAAZCclRQZjb21taXTsAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjb21taXQKc3VtbWFyeTogJ1NldCBjb21taXQgdmFsdWUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClNldCB0aGUgaW5pdGlhbCBjb21taXQgdmFsdWUgZHVyaW5nIGdhbWUgaW5pdGlhbGl6YXRpb24uAABgNDK3JkUJY29uZmlnbG9n3QItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY29uZmlnbG9nCnN1bW1hcnk6ICdMb2cgZ2FtZSBjb25maWd1cmF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnRlcm5hbCBhY3Rpb24gdGhhdCBsb2dzIHRoZSBjdXJyZW50IGdhbWUgY29uZmlndXJhdGlvbi4gQ2FsbGVkIGlubGluZSBhZnRlciBpbml0aWFsaXphdGlvbiB0byBicm9hZGNhc3QgY29uZmlnIHZpYSBhY3Rpb24gdHJhY2VzLiBSZXF1aXJlcyBjb250cmFjdCBhdXRob3JpdHkuAAAAAIC8zEUFY3JhZnTIAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjcmFmdApzdW1tYXJ5OiAnQ3JhZnQgaXRlbXMgZnJvbSBhIHJlY2lwZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVHJhbnNmb3JtIGNhcmdvIGl0ZW1zIGludG8gYSBuZXcgaXRlbSB1c2luZyBhIHJlY2lwZS4gVGhlIGVudGl0eSBtdXN0IGhhdmUgYSBjcmFmdGVyIG1vZHVsZSBpbnN0YWxsZWQuIENvbnN1bWVzIGVuZXJneSBhbmQgc2NoZWR1bGVzIGEgY3JhZnRpbmcgdGFzayB3aXRoIGR1cmF0aW9uIGJhc2VkIG9uIHRvdGFsIGlucHV0IG1hc3MgYW5kIGNyYWZ0ZXIgc3BlZWQuIElucHV0IHF1YW50aXRpZXMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSByZWNpcGUgcmVxdWlyZW1lbnRzLgAAAA27SKVKCGRlbW9saXNo8QMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZGVtb2xpc2gKc3VtbWFyeTogJ0RlbW9saXNoIGEgc3RhdGlvbmFyeSBlbnRpdHknCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkRlY29tbWlzc2lvbiBhbiBlbnRpdHksIGVyYXNpbmcgaXQgZnJvbSB0aGUgZ2FtZS4gVGhlIGVudGl0eSBtdXN0IGJlIGlkbGUsIGhhdmUgZW1wdHkgY2FyZ28sIGFuZCBoYXZlIG5vIGluc3RhbGxlZCBtb2R1bGVzIChyZW1vdmUgZWFjaCB2aWEgcm1tb2R1bGUgZmlyc3QpLiBTY2hlZHVsZXMgYSBkZW1vbGlzaCB0YXNrIHRoYXQgZXJhc2VzIHRoZSBlbnRpdHkgb24gcmVzb2x1dGlvbi4gT25seSB2YWxpZCBmb3IgZW50aXRpZXMgdGhhdCBjYW5ub3QgbW92ZTsgdXNlIHVuZGVwbG95IG9yIHdyYXBlbnRpdHkgZm9yIHRoZSByZXN0LgAAAAB4GqtKBmRlcGxveewCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGRlcGxveQpzdW1tYXJ5OiAnRGVwbG95IGEgcGFja2VkIGVudGl0eScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVW5wYWNrIGEgcGFja2VkIGVudGl0eSBpdGVtIChwYWNrZWQgc2hpcCBvciBwYWNrZWQgY29udGFpbmVyKSBmcm9tIGNhcmdvLCBzY2hlZHVsaW5nIGEgZGVwbG95IHRhc2sgdGhhdCBjcmVhdGVzIHRoZSBuZXcgZW50aXR5IGF0IHRoZSBkZXBsb3lpbmcgZW50aXR5J3MgbG9jYXRpb24gdXBvbiByZXNvbHV0aW9uLgAAyGt6GqtKCWRlcGxveW5mdN8ELS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGRlcGxveW5mdApzdW1tYXJ5OiAnRGVwbG95IGFuIGVudGl0eSBORlQgZGlyZWN0bHkgdG8gYSBuZXh1cycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKRGVwbG95IGEgcGFja2VkLWVudGl0eSBBdG9taWNBc3NldHMgTkZUIChvcmJpdGFsIHZlc3NlbDogc2hpcCBvciBjb250YWluZXIpIGRpcmVjdGx5IGFzIGEgbGl2ZSBlbnRpdHkuIFBhaXJzIHdpdGggYW4gYXRvbWljYXNzZXRzOjp0cmFuc2ZlciBjYXJyeWluZyB0aGUgJ2RlcGxveScgbWVtbyBpbiB0aGUgc2FtZSB0cmFuc2FjdGlvbi4gVGhlIE5GVCBpcyBidXJuZWQsIGEgbmV3IGVudGl0eSByb3cgaXMgZW1wbGFjZWQgYXQgdGhlIE5GVCdzIHdyYXAgb3JpZ2luIHBhaWQgYnkgdGhlIG93bmVyLCBhbmQgVEFTS19UUkFWRUwgcGx1cyBUQVNLX1JFQ0hBUkdFIGFyZSBxdWV1ZWQgdG8gZGVsaXZlciB0aGUgZW50aXR5IHRvIHRoZSB0YXJnZXQgbmV4dXMgYW5kIGJyaW5nIGl0IHRvIGZ1bGwgZW5lcmd5LgCAzy5PhbBKCmRlc2NlbnRpdHnJAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBkZXNjZW50aXR5CnN1bW1hcnk6ICdEZXNjcmliZSBhIHBhY2tlZCBlbnRpdHknCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIGEgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gc3RyaW5nIGZvciBhIHBhY2tlZCBlbnRpdHksIGRlcml2ZWQgZnJvbSB0aGUgZW50aXR5IGl0ZW0gaWQsIGh1bGwgc3RhdHMsIGFuZCB0aGUgbGlzdCBvZiBpbnN0YWxsZWQgbW9kdWxlIGl0ZW0gaWRzIGFuZCBzdGF0cy4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyBhbmQgTkZUIHJlbmRlcmVycyB0byBkaXNwbGF5IHBhY2tlZCBlbnRpdGllcy4AAAAAqHjMVAZlbmFibGXdAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBlbmFibGUKc3VtbWFyeTogJ1NldCBlbmFibGVkIHN0YXRlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpFbmFibGUgb3IgZGlzYWJsZSB0aGlzIGdhbWUgb2YgU2hpcGxvYWQugLGRlF2DulsMZml4Y2FyZ29tYXNzkAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZml4Y2FyZ29tYXNzCnN1bW1hcnk6ICdERUJVRzogcmVjb21wdXRlIGVudGl0eSBjYXJnbyBtYXNzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZWNvbXB1dGUgYW5kIHJld3JpdGUgYW4gZW50aXR5J3MgY2FyZ28gbWFzcyBmcm9tIGl0cyBjdXJyZW50IGNhcmdvLiBSZXF1aXJlcyBjb250cmFjdCBhdXRob3JpdHkuIEF2YWlsYWJsZSBmb3IgcmVwYWlyaW5nIGRyaWZ0IGJldHdlZW4gY2FjaGVkIGNhcmdvIG1hc3MgYW5kIHRoZSB0cnVlIG1hc3MgZGVyaXZlZCBmcm9tIGNhcmdvIHJvd3MuAAAAAFzVsmEGZ2F0aGVylwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2F0aGVyCnN1bW1hcnk6ICdHYXRoZXIgcmVzb3VyY2VzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpHYXRoZXIgcmVzb3VyY2VzIGF0IHRoZSBzaGlwJ3MgY3VycmVudCBsb2NhdGlvbi4gT25seSB3b3JrcyBhdCBnYXRoZXJhYmxlIGxvY2F0aW9uIHR5cGVzLiBTY2hlZHVsZXMgYSBnYXRoZXIgdGFzayB0aGF0IGNvbnN1bWVzIGVuZXJneSBhbmQgeWllbGRzIGNhcmdvIGJhc2VkIG9uIHRoZSBzaGlwJ3MgZ2F0aGVyZXIgc3RhdHMgYW5kIHRoZSBsb2NhdGlvbidzIHJlc291cmNlIGNvbXBvc2l0aW9uLgAAYG5NirJiCWdldGNvbmZpZ8oCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGNvbmZpZwpzdW1tYXJ5OiAnR2V0IGdhbWUgY29uZmlndXJhdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyB0aGUgZ2FtZSBjb25maWd1cmF0aW9uIGluY2x1ZGluZyBkZWZhdWx0IGVudGl0eSBzdGF0cyBmb3Igd2FyZWhvdXNlcyBhbmQgY29udGFpbmVycywgYW5kIHRoZSBmdWxsIGl0ZW0gZGVmaW5pdGlvbnMgdGFibGUuAFQ8jrmosmILZ2V0ZWxpZ2libGXIAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRlbGlnaWJsZQpzdW1tYXJ5OiAnR2V0IGVsaWdpYmxlIHJlc291cmNlIGl0ZW0gSURzIGF0IGEgbG9jYXRpb24gYW5kIHN0cmF0dW0nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBsaXN0IG9mIHJlc291cmNlIGl0ZW0gSURzIGVsaWdpYmxlIHRvIGJlIGdhdGhlcmVkIGF0IHRoZSBnaXZlbiBjb29yZGluYXRlcyBhbmQgc3RyYXR1bSBkZXB0aC4gSXRlbXMgYXJlIGdhdGVkIGJ5IGJvdGggdGhlIGxvY2F0aW9uJ3MgcmVzb3VyY2UgcHJvZmlsZSBhbmQgdGhlIGRlcHRoIHRocmVzaG9sZCBmb3IgZWFjaCB0aWVyLgAAwBHlqbJiCWdldGVudGNsc4wDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGVudGNscwpzdW1tYXJ5OiAnR2V0IGVudGl0eSBjbGFzcyBlbnVtIHZhbHVlcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGZ1bGwgc2V0IG9mIGVudGl0eSBjbGFzcyBlbnVtIHZhbHVlcyBhbmQgdGhlaXIgc3RyaW5nIG5hbWVzIChPcmJpdGFsVmVzc2VsLCBQbGFuZXRhcnlTdHJ1Y3R1cmUpLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIGRlY29kZSBlbnRpdHkgY2xhc3MgaWRlbnRpZmllcnMuALBy2eWpsmILZ2V0ZW50aXRpZXOkAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRlbnRpdGllcwpzdW1tYXJ5OiAnR2V0IGFsbCBlbnRpdGllcyBmb3IgYSBwbGF5ZXInCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJldHVybnMgZnVsbCBlbnRpdHkgaW5mbyBmb3IgYWxsIGVudGl0aWVzIG93bmVkIGJ5IGEgcGxheWVyLiBPcHRpb25hbGx5IGZpbHRlciBieSBlbnRpdHkgdHlwZS4AAPDZ5amyYglnZXRlbnRpdHmiAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRlbnRpdHkKc3VtbWFyeTogJ0dldCBlbnRpdHkgc3RhdGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJldHVybnMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgYW4gZW50aXR5IGluY2x1ZGluZyBpZGVudGl0eSwgY2FyZ28sIHNjaGVkdWxlIHN0YXRlLCBhbmQgdHlwZS1zcGVjaWZpYyBmaWVsZHMuAEw2SarssmILZ2V0aXRlbWRhdGGoAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRpdGVtZGF0YQpzdW1tYXJ5OiAnR2V0IGZ1bGwgaXRlbSBjYXRhbG9nJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgY29tcGxldGUgaXRlbSBjYXRhbG9nIGFzIHRoZSBjb250cmFjdCBzZWVzIGl0LCBpbmNsdWRpbmcgdHlwZSwgc3VidHlwZSwgdGllciwgbWFzcywgYW5kIG90aGVyIHN0YXRpYyBtZXRhZGF0YS4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyBhbmQgY2xpZW50cyB0byBtaXJyb3IgdGhlIGNvbnRyYWN0J3MgaXRlbSBkZWZpbml0aW9ucy4AAE5OquyyYgpnZXRpdGVtaWRzhgMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0aXRlbWlkcwpzdW1tYXJ5OiAnR2V0IGl0ZW0gaWQgdG8gbmFtZSBtYXBwaW5ncycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGZ1bGwgbWFwcGluZyBvZiBpdGVtIGlkIGNvbnN0YW50cyB0byB0aGVpciBjYW5vbmljYWwgc3RyaW5nIG5hbWVzLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIHJlc29sdmUgbnVtZXJpYyBpdGVtIGlkcyB0byBodW1hbi1yZWFkYWJsZSBpZGVudGlmaWVycy4AAABYquyyYghnZXRpdGVtc5oCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGl0ZW1zCnN1bW1hcnk6ICdHZXQgYWxsIGF2YWlsYWJsZSBpdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgYWxsIGl0ZW1zIGluIHRoZSBnYW1lIGluY2x1ZGluZyB0aGVpciBpZCwgYmFzZSBwcmljZSwgYW5kIG1hc3MugFX1WarssmIMZ2V0aXRlbXR5cGVziAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0aXRlbXR5cGVzCnN1bW1hcnk6ICdHZXQgaXRlbSB0eXBlIGVudW0gdmFsdWVzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgZnVsbCBzZXQgb2YgaXRlbSB0eXBlIGVudW0gdmFsdWVzIGFuZCB0aGVpciBzdHJpbmcgbmFtZXMgKHJlc291cmNlLCBjb21wb25lbnQsIG1vZHVsZSwgZW50aXR5KS4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBkZWNvZGUgaXRlbSB0eXBlIGlkZW50aWZpZXJzLgBMVjJNB7NiC2dldGtpbmRtZXRh+AMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0a2luZG1ldGEKc3VtbWFyeTogJ0dldCBlbnRpdHkga2luZCBtZXRhZGF0YScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGVudGl0eSBraW5kIHJlZ2lzdHJ5IGFuZCB0ZW1wbGF0ZSByZWdpc3RyeSwgaW5jbHVkaW5nIGVhY2gga2luZCdzIGNsYXNzaWZpY2F0aW9uLCBjYXBhYmlsaXR5IGZsYWdzLCBaLWNvb3JkaW5hdGUsIGFuZCBkZWZhdWx0IGxhYmVsLCBwbHVzIHRoZSBtYXBwaW5nIG9mIGVudGl0eSBpdGVtIGlkcyB0byBraW5kcyB3aXRoIGRpc3BsYXkgbGFiZWxzLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIGludGVycHJldCBlbnRpdHkga2luZHMgYW5kIGNhcGFiaWxpdGllcy4AJnXZIBqzYgtnZXRsb2NhdGlvbuICLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGxvY2F0aW9uCnN1bW1hcnk6ICdHZXQgbG9jYXRpb24gaW5mb3JtYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYSBsb2NhdGlvbiBpbmNsdWRpbmcgd2hldGhlciBhIHN5c3RlbSBleGlzdHMsIGFuZCBmb3IgZWFjaCBpdGVtOiBwcmljZSwgc3VwcGx5LCByYXJpdHkgbXVsdGlwbGllciwgYW5kIGxvY2F0aW9uIG11bHRpcGxpZXIuAIDJJiEas2IKZ2V0bG9jZGF0Yf4CLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGxvY2RhdGEKc3VtbWFyeTogJ0dldCBkZXJpdmVkIGxvY2F0aW9uIGRhdGEnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgZGVyaXZlZCBsb2NhdGlvbiBkYXRhIGluY2x1ZGluZyBzdGF0aWMgcHJvcGVydGllcyAodHlwZSwgZGlmZmljdWx0eSwgc2VlZHMpIGZyb20gdGhlIGdhbWUgc2VlZCBhbmQgZXBvY2gtc3BlY2lmaWMgcHJvcGVydGllcyAoYWN0aXZlLCBzZWVkcykgZnJvbSB0aGUgY3VycmVudCBlcG9jaCBzZWVkLgCwqj4nKrNiC2dldG1vZHR5cGVz1gMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bW9kdHlwZXMKc3VtbWFyeTogJ0dldCBtb2R1bGUgdHlwZSBlbnVtIHZhbHVlcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGZ1bGwgc2V0IG9mIG1vZHVsZSB0eXBlIGVudW0gdmFsdWVzIGFuZCB0aGVpciBzdHJpbmcgbmFtZXMgKGFueSwgZW5naW5lLCBnZW5lcmF0b3IsIGdhdGhlcmVyLCBsb2FkZXIsIHdhcnAsIGNyYWZ0ZXIsIGxhdW5jaGVyLCBzdG9yYWdlLCBoYXVsZXIpLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIGRlY29kZSBtb2R1bGUgc3VidHlwZSBpZGVudGlmaWVycyBhbmQgc2xvdCBjb21wYXRpYmlsaXR5LgAAVlEnKrNiCmdldG1vZHVsZXOAAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRtb2R1bGVzCnN1bW1hcnk6ICdHZXQgYWxsIG1vZHVsZSBpdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIHN1YnNldCBvZiBpdGVtcyBjbGFzc2lmaWVkIGFzIG1vZHVsZXMsIGluY2x1ZGluZyBlYWNoIG1vZHVsZSdzIGlkLCBtYXNzLCBzdWJ0eXBlLCBhbmQgdGllci4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBlbnVtZXJhdGUgaW5zdGFsbGFibGUgZXF1aXBtZW50LgAA8OcaNbNiCWdldG5lYXJied4DLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldG5lYXJieQpzdW1tYXJ5OiAnR2V0IG5lYXJieSByZWFjaGFibGUgc3lzdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBuZWFyYnkgc3lzdGVtcyByZWFjaGFibGUgYnkgYW4gZW50aXR5IGZyb20gaXRzIHByb2plY3RlZCBsb2NhdGlvbi4gUmV0dXJucyBjdXJyZW50IHN0YXRlICh3aXRoIGNvbXBsZXRlZCB0YXNrcyByZXNvbHZlZCksIHByb2plY3RlZCBzdGF0ZSAoYWZ0ZXIgYWxsIHNjaGVkdWxlZCB0YXNrcyksIGFuZCBhIGxpc3Qgb2YgcmVhY2hhYmxlIHN5c3RlbXMgd2l0aCBkaXN0YW5jZSwgZW5lcmd5IGNvc3QsIGZsaWdodCB0aW1lLCBhbmQgbWFya2V0IGluZm9ybWF0aW9uLgAAXdPlNbNiCmdldG5mdGluZm/wAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRuZnRpbmZvCnN1bW1hcnk6ICdHZXQgTkZUIHNjaGVtYSBhbmQgdGVtcGxhdGUgY29uZmlndXJhdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGZ1bGwgc2V0IG9mIEF0b21pY0Fzc2V0cyBzY2hlbWFzIGFuZCB0ZW1wbGF0ZXMgdGhlIGdhbWUgY29udHJhY3QgZXhwZWN0cywgcGx1cyB0aGUgY3VycmVudCBgaXRlbV9pZCDihpIgKHRlbXBsYXRlX2lkLCBzY2hlbWFfbmFtZSlgIG1hcHBpbmcgc3RvcmVkIGluIHRoZSBgbmZ0Y29uZmlnYCB0YWJsZS4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBzeW5jIGF0b21pY2Fzc2V0cyBzdGF0ZSB3aXRoIHRoZSBjb250cmFjdC4AALjKm1izYglnZXRwbGF5ZXL9Ai0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRwbGF5ZXIKc3VtbWFyeTogJ0dldCBwbGF5ZXIgaW5mb3JtYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYSBwbGF5ZXIgaW5jbHVkaW5nIGJhbGFuY2UsIGRlYnQsIG5ldHdvcnRoLCBlbnRpdHkgY291bnRzLCBhbmQgcHJpY2luZyBmb3IgbmV4dCBwdXJjaGFzZXMuIFJldHVybnMgaXNfcGxheWVyPWZhbHNlIGlmIHRoZSBhY2NvdW50IGhhcyBub3Qgam9pbmVkIHRoZSBnYW1lLqCyyfjRW7NiDGdldHByb2pzdGF0ZcsDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHByb2pzdGF0ZQpzdW1tYXJ5OiAnR2V0IHByb2plY3RlZCBlbnRpdHkgc3RhdGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBwcm9qZWN0ZWQgc3RhdGUgb2YgYW4gZW50aXR5IGFmdGVyIGFwcGx5aW5nIHRoZSBuZXh0IHRhc2tfY291bnQgc2NoZWR1bGVkIHRhc2tzIChvciBhbGwgdGFza3MgaWYgdGFza19jb3VudCBpcyBvbWl0dGVkKS4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBwcmV2aWV3IHRoZSByZXN1bHQgb2YgYW4gZW50aXR5J3Mgc2NoZWR1bGUgd2l0aG91dCByZXNvbHZpbmcgb24tY2hhaW4uAABQ1SF1s2IJZ2V0cmVjaXBlpgMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0cmVjaXBlCnN1bW1hcnk6ICdHZXQgYSBzaW5nbGUgY3JhZnRpbmcgcmVjaXBlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgcmVjaXBlIHdob3NlIG91dHB1dCBtYXRjaGVzIHRoZSBnaXZlbiBpdGVtIGlkLCBpbmNsdWRpbmcgaXRzIGlucHV0cywgYmxlbmQgd2VpZ2h0cywgc3RhdCBzbG90cywgYW5kIHJlc29sdmVkIGl0ZW0gbWFzcyBpbmZvLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIGRpc3BsYXkgY3JhZnRpbmcgcmVxdWlyZW1lbnRzLgAAVtUhdbNiCmdldHJlY2lwZXOsAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRyZWNpcGVzCnN1bW1hcnk6ICdMaXN0IGNyYWZ0aW5nIHJlY2lwZXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIGEgcGFnaW5hdGVkIGxpc3Qgb2YgY3JhZnRpbmcgcmVjaXBlcyBzdGFydGluZyBhdCB0aGUgcHJvdmlkZWQgbG93ZXIgYm91bmQgb3V0cHV0IGl0ZW0gaWQsIHVwIHRvIHRoZSBzcGVjaWZpZWQgbGltaXQuIEVhY2ggZW50cnkgaW5jbHVkZXMgaW5wdXRzLCBibGVuZCB3ZWlnaHRzLCBzdGF0IHNsb3RzLCBhbmQgcmVzb2x2ZWQgaXRlbSBtYXNzIGluZm8uAADOBmF1s2IKZ2V0cmVzY2F0c54DLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHJlc2NhdHMKc3VtbWFyeTogJ0dldCByZXNvdXJjZSBjYXRlZ29yeSBlbnVtIHZhbHVlcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGZ1bGwgc2V0IG9mIHJlc291cmNlIGNhdGVnb3J5IGVudW0gdmFsdWVzIGFuZCB0aGVpciBzdHJpbmcgbmFtZXMgKG9yZSwgZ2FzLCByZWdvbGl0aCwgYmlvbWFzcywgY3J5c3RhbCkuIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gZGVjb2RlIHJlc291cmNlIHN1YnR5cGUgaWRlbnRpZmllcnMuALDaV2F1s2ILZ2V0cmVzZXJ2ZXP8Ay0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRyZXNlcnZlcwpzdW1tYXJ5OiAnR2V0IGN1cnJlbnQgcmVzZXJ2ZSBtb2RpZmljYXRpb25zIGF0IGEgbG9jYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgdGhlIGNoYWluJ3MgbW9kaWZpY2F0aW9ucyB0byBkZXJpdmVkIHJlc2VydmVzIGF0IHRoZSBnaXZlbiBjb29yZGluYXRlIGZvciB0aGUgY3VycmVudCBlcG9jaCBhcyBhIGxpc3Qgb2Yge3N0cmF0dW0sIHJlbWFpbmluZ30gcGFpcnMuIFN0cmF0YSBub3QgcHJlc2VudCBpbiB0aGUgcmVzcG9uc2UgdXNlIHRoZWlyIGRlcml2ZWQgaW5pdGlhbCByZXNlcnZlLiBDb21wb3NlIHdpdGggU0RLIGRlcml2YXRpb24gdG8gZ2V0IHRoZSBmdWxsIHBlci1sb2NhdGlvbiBzdHJhdGEgdmlldy6AFbqaYnWzYgxnZXRyZXNvdXJjZXOHAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRyZXNvdXJjZXMKc3VtbWFyeTogJ0dldCBhbGwgcmVzb3VyY2UgaXRlbXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBzdWJzZXQgb2YgaXRlbXMgY2xhc3NpZmllZCBhcyByZXNvdXJjZXMsIGluY2x1ZGluZyBlYWNoIHJlc291cmNlJ3MgaWQsIG1hc3MsIHN1YnR5cGUsIGFuZCB0aWVyLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIGVudW1lcmF0ZSBnYXRoZXJhYmxlIG1hdGVyaWFscy4AAAA404izYghnZXRzbG90c7sDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHNsb3RzCnN1bW1hcnk6ICdHZXQgZW50aXR5IHNsb3QgbGF5b3V0cycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIG1vZHVsZSBzbG90IGxheW91dCBmb3IgZXZlcnkgZW50aXR5IGl0ZW0gdHlwZSwgbGlzdGluZyB0aGUgb3JkZXJlZCBzbG90IHR5cGVzIGF2YWlsYWJsZSBmb3IgbW9kdWxlIGluc3RhbGxhdGlvbi4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBkZXRlcm1pbmUgd2hpY2ggbW9kdWxlIHR5cGVzIGFyZSBjb21wYXRpYmxlIHdpdGggYSBnaXZlbiBlbnRpdHkgaHVsbC4AgNTZ3IyzYgpnZXRzdHJhdHVt0gItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0c3RyYXR1bQpzdW1tYXJ5OiAnR2V0IHJlc291cmNlIHN0cmF0dW0gZGF0YScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyByZXNvdXJjZSBzdHJhdHVtIGRhdGEgZm9yIGEgc3BlY2lmaWMgZGVwdGggbGF5ZXIgYXQgYSBjb29yZGluYXRlLCBpbmNsdWRpbmcgdGhlIHN0cmF0dW0gc2VlZCBpbmZvIGFuZCBkZXJpdmVkIHJlc291cmNlIHN0YXRzLoCVu0ZKjbNiDGdldHN1bW1hcmllc+gCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHN1bW1hcmllcwpzdW1tYXJ5OiAnR2V0IGVudGl0eSBzdW1tYXJpZXMgZm9yIGEgcGxheWVyJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXR1cm5zIGxpZ2h0d2VpZ2h0IHN1bW1hcmllcyBvZiBhbGwgZW50aXRpZXMgb3duZWQgYnkgYSBwbGF5ZXIgaW5jbHVkaW5nIHR5cGUsIGlkLCBvd25lciwgbmFtZSwgbG9jYXRpb24sIGFuZCBpZGxlIHN0YXR1cy4gT3B0aW9uYWxseSBmaWx0ZXIgYnkgZW50aXR5IHR5cGUuAKLa5uaq6WULZ3JvdXB0cmF2ZWyaBC0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBncm91cHRyYXZlbApzdW1tYXJ5OiAnTW92ZSBtdWx0aXBsZSBlbnRpdGllcyB0b2dldGhlcicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5pdGlhdGUgZ3JvdXAgdHJhdmVsIGZvciBtdWx0aXBsZSBlbnRpdGllcyB0byBhIGRlc3RpbmF0aW9uLiBBbGwgZW50aXRpZXMgbXVzdCBiZSBhdCB0aGUgc2FtZSBsb2NhdGlvbiBhbmQgb3duZWQgYnkgdGhlIGNhbGxlci4gQXQgbGVhc3Qgb25lIGVudGl0eSB3aXRoIGVuZ2luZXMgaXMgcmVxdWlyZWQgdG8gcHJvdmlkZSB0aHJ1c3QuIEZsaWdodCBkdXJhdGlvbiBpcyBjYWxjdWxhdGVkIGZyb20gY29tYmluZWQgdGhydXN0IGFuZCB0b3RhbCBtYXNzIG9mIGFsbCBlbnRpdGllcy4gQ3JlYXRlcyBhbiBlbnRpdHlncm91cCBmb3IgYXRvbWljIHJlc29sdXRpb24gYW5kIGNhbmNlbGxhdGlvbi4AAAAAANCwaQRoYXNo+AEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaGFzaApzdW1tYXJ5OiAnQ2FsY3VsYXRlIHNoYTI1NiBoYXNoJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYWxjdWxhdGVzIHRoZSBzaGEyNTYgaGFzaCBvZiBhIHN0cmluZyBiYXNlZCB1c2luZyB0aGUgZ2FtZSBzZWVkLgAAAECE0rBpB2hhc2g1MTL7AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBoYXNoNTEyCnN1bW1hcnk6ICdDYWxjdWxhdGUgc2hhNTEyIGhhc2gnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNhbGN1bGF0ZXMgdGhlIHNoYTUxMiBoYXNoIG9mIGEgc3RyaW5nIGJhc2VkIHVzaW5nIHRoZSBnYW1lIHNlZWQuACi7BuVLq3QLaW1wb3J0Y2FyZ28A4LPLU+VLq3QMaW1wb3J0ZW50aXR5AACqppflS6t0C2ltcG9ydGdyb3VwAHCVN7HmS6t0DGltcG9ydHBsYXllcgC6r8Lq5kurdA1pbXBvcnRyZXNlcnZlAABUNhnnS6t0C2ltcG9ydHN0YXRlAACA+i4al910CmluaXRpYWxpemWAAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBpbml0aWFsaXplCnN1bW1hcnk6ICdJbml0aWFsaXplIGdhbWUgc2VlZCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5pdGlhbGl6ZSBhIHRoZSBnYW1lcyBzZWVkIGFuZCBzZWVkIHZhbHVlcyB0byBib290c3RyYXAgZ2FtZSBzdGF0ZS4AAAAAADAdfQRqb2luxAEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogam9pbgpzdW1tYXJ5OiAnSm9pbiBhIGdhbWUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkpvaW4gYSBnYW1lIG9mIFNoaXBsb2FkAACIVzPp8poJbmZ0aW1ndXJssgMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogbmZ0aW1ndXJsCnN1bW1hcnk6ICdHZXQgTkZUIGltYWdlIFVSTCBmb3IgYSBjYXJnbyBpdGVtJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgaW1hZ2UgVVJMIHRoZSBjb250cmFjdCBlbWl0cyBmb3IgYSBnaXZlbiBjYXJnbyBpdGVtLCBvcHRpb25hbGx5IHNjb3BlZCB0byBhIGxvY2F0aW9uLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIGFuZCBORlQgcmVuZGVyZXJzIHRvIGZldGNoIHRoZSBjYW5vbmljYWwgYXJ0d29yayBmb3IgYW4gaXRlbSBvciBwYWNrZWQgZW50aXR5LgAAAAD45TKdBm5vdGlmeYoDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IG5vdGlmeQpzdW1tYXJ5OiAnVGFzayBsaWZlY3ljbGUgbm90aWZpY2F0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnRlcm5hbCBhY3Rpb24gdGhhdCBub3RpZmllcyBlbnRpdHkgb3duZXJzIG9mIHRhc2sgbGlmZWN5Y2xlIGV2ZW50cyAocmVzb2x2ZWQsIGNhbmNlbGxlZCkuIENhbGxlZCBpbmxpbmUgd2hlbiB0YXNrcyBjaGFuZ2Ugc3RhdGUuIFVzZXMgcmVxdWlyZV9yZWNpcGllbnQgdG8gZW5hYmxlIG9mZi1jaGFpbiBtb25pdG9yaW5nIHZpYSBhY3Rpb24gdHJhY2VzLgAAAIpd05C6CHJlY2hhcmdlzQItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcmVjaGFyZ2UKc3VtbWFyeTogJ1JlY2hhcmdlIHNoaXAgZW5lcmd5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTY2hlZHVsZSBhIHJlY2hhcmdlIHRhc2sgZm9yIGFuIGVudGl0eSB0byByZXN0b3JlIGVuZXJneSB0byBmdWxsIGNhcGFjaXR5LiBUaGUgcmVjaGFyZ2UgZHVyYXRpb24gZGVwZW5kcyBvbiBjdXJyZW50IGVuZXJneSBsZXZlbCBhbmQgcmVjaGFyZ2UgcmF0ZS7gs8tTNXyXugxyZWZyc2hlbnRpdHm4Ay0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiByZWZyc2hlbnRpdHkKc3VtbWFyeTogJ1JlZnJlc2ggZGVyaXZlZCBlbnRpdHkgc3RhdGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJlY29tcHV0ZSBkZXJpdmVkIGZpZWxkcyBvbiBhbiBlbnRpdHkgZnJvbSBpdHMgY3VycmVudCBjYXJnbyBhbmQgbW9kdWxlcywgcmVmcmVzaGluZyBjYXBhYmlsaXR5IHN0YXRzIGFuZCBjYXJnbyBtYXNzLiBUaGUgZW50aXR5IG11c3QgYmUgaWRsZSB3aXRoIG5vIHNjaGVkdWxlZCB0YXNrcy4gVXNlZCB0byByZWNvbmNpbGUgZGVyaXZlZCBzdGF0ZSBhZnRlciBkYXRhIG1pZ3JhdGlvbnMgb3IgY29udHJhY3QgdXBncmFkZXMuAAAAQO1IsboHcmVzb2x2ZdADLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHJlc29sdmUKc3VtbWFyeTogJ0NvbXBsZXRlIHNjaGVkdWxlZCB0YXNrcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmVzb2x2ZSBjb21wbGV0ZWQgdGFza3MgaW4gYW4gZW50aXR5J3Mgc2NoZWR1bGUsIGFwcGx5aW5nIHRoZWlyIGVmZmVjdHMgKHJlY2hhcmdlIGVuZXJneSwgdXBkYXRlIGxvY2F0aW9uLCBsb2FkL3VubG9hZCBjYXJnbykuIElmIGNvdW50IGlzIHNwZWNpZmllZCwgcmVzb2x2ZSBleGFjdGx5IHRoYXQgbWFueSB0YXNrczsgb3RoZXJ3aXNlIHJlc29sdmUgYWxsIGNvbXBsZXRlZCB0YXNrcy4gRmFpbHMgaWYgY291bnQgZXhjZWVkcyB0aGUgbnVtYmVyIG9mIGNvbXBsZXRlZCB0YXNrcy4AAAAq6kSlvAhybW1vZHVsZbwDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHJtbW9kdWxlCnN1bW1hcnk6ICdSZW1vdmUgYSBtb2R1bGUgZnJvbSBhIHNsb3QnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJlbW92ZSBhbiBpbnN0YWxsZWQgbW9kdWxlIGZyb20gYSBzbG90IG9uIGEgbGl2ZSBlbnRpdHkgb3IgYSBwYWNrZWQgZW50aXR5IGluIGNhcmdvLiBUaGUgZW50aXR5IG11c3QgYmUgaWRsZSB3aXRoIG5vIHNjaGVkdWxlZCB0YXNrcy4gVGhlIG1vZHVsZSBpcyByZXR1cm5lZCB0byBjYXJnby4gRmFpbHMgaWYgdGhlIGVudGl0eSBkb2VzIG5vdCBoYXZlIGVub3VnaCBjYXJnbyBjYXBhY2l0eSB0byBob2xkIHRoZSByZXR1cm5lZCBtb2R1bGUuAAAAbKG8prwIcm1uZnRjZmehAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBybW5mdGNmZwpzdW1tYXJ5OiAnUmVtb3ZlIE5GVCB0ZW1wbGF0ZSBtYXBwaW5nIGZvciBhbiBpdGVtJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZW1vdmUgdGhlIEF0b21pY0Fzc2V0cyB0ZW1wbGF0ZSBtYXBwaW5nIGZvciB0aGUgc3BlY2lmaWVkIGl0ZW0gaWQgZnJvbSB0aGUgYG5mdGNvbmZpZ2AgdGFibGUuIEFmdGVyIHJlbW92YWwgdGhlIGl0ZW0gY2FuIG5vIGxvbmdlciBiZSB3cmFwcGVkIG9yIHVud3JhcHBlZCB1bnRpbCBhIG5ldyBtYXBwaW5nIGlzIHNldC4gUmVxdWlyZXMgY29udHJhY3QgYXV0aG9yaXR5LgAAAAAAkKPBBHNhbHTYAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBzYWx0CnN1bW1hcnk6ICdBcHBlbmQgU2FsdCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQWRkIGFkZGl0aW9uYWwgc2FsdCB0byB0aGUgbmV4dCBlcG9jaCBzZWVkLgAAYAvlNbPCCXNldG5mdGNmZ8QDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHNldG5mdGNmZwpzdW1tYXJ5OiAnU2V0IE5GVCB0ZW1wbGF0ZSBtYXBwaW5nIGZvciBhbiBpdGVtJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpCaW5kIGFuIGl0ZW0gaWQgdG8gYW4gQXRvbWljQXNzZXRzIHRlbXBsYXRlIGlkIGFuZCBzY2hlbWEgbmFtZS4gVXNlZCB0byBjb25maWd1cmUgaG93IHRoZSBjb250cmFjdCBtaW50cyBhbmQgcmVjb2duaXplcyBORlRzIGZvciBhIGdpdmVuIGl0ZW0uIEluc2VydHMgYSBuZXcgbWFwcGluZyBpZiBvbmUgZG9lcyBub3QgZXhpc3QsIG9yIHVwZGF0ZXMgdGhlIGV4aXN0aW5nIG1hcHBpbmcuIFJlcXVpcmVzIGNvbnRyYWN0IGF1dGhvcml0eS4AQDRqq1sdxApza2lwcmV2ZWFsvwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc2tpcHJldmVhbApzdW1tYXJ5OiAnREVCVUc6IHNraXAgYW4gZXBvY2ggcmV2ZWFsJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpBZHZhbmNlIHRoZSBlcG9jaCBzdGF0ZSBwYXN0IGEgc3R1Y2sgY29tbWl0IGJ5IHNraXBwaW5nIHRoZSByZXZlYWwgc3RlcCwgcmVjb3JkaW5nIHRoZSBjdXJyZW50IGVwb2NoIGhlaWdodCB3aXRob3V0IGNvbnN1bWluZyB0aGUgb3JpZ2luYWwgY29tbWl0IHZhbHVlLiBSZXF1aXJlcyBjb250cmFjdCBhdXRob3JpdHkuIFVzZWQgdG8gdW5ibG9jayB0aGUgY2hhaW4gd2hlbiB0aGUgbWF0Y2hpbmcgcmV2ZWFsIGNhbm5vdCBiZSBwcm9kdWNlZC4AAABXLTzNzQh0cmFuc2ZlcsgDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRyYW5zZmVyCnN1bW1hcnk6ICdUcmFuc2ZlciBjYXJnbyBiZXR3ZWVuIGVudGl0aWVzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUcmFuc2ZlciBjYXJnbyBiZXR3ZWVuIHR3byBlbnRpdGllcyBhdCB0aGUgc2FtZSBsb2NhdGlvbi4gQm90aCBlbnRpdGllcyBtdXN0IGJlIG93bmVkIGJ5IHRoZSBjYWxsZXIgYW5kIGF0IGxlYXN0IG9uZSBtdXN0IGhhdmUgbG9hZGVycy4gQ3JlYXRlcyBsb2FkIGFuZCB1bmxvYWQgdGFza3Mgb24gYm90aCBlbnRpdGllcyB3aXRoIGR1cmF0aW9uIGJhc2VkIG9uIGNvbWJpbmVkIGxvYWRlciBjYXBhY2l0eSBhbmQgWi1kaXN0YW5jZSBiZXR3ZWVuIHRoZW0uAAAAAES1zc0GdHJhdmVs+wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdHJhdmVsCnN1bW1hcnk6ICdNb3ZlIGEgc2hpcCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5pdGlhdGUgdHJhdmVsIG9mIGFuIGVudGl0eSBmcm9tIGl0cyBjdXJyZW50IGxvY2F0aW9uIHRvIGEgbmV3IGRlc3RpbmF0aW9uLgAAAJ7GqtLUCHVuZGVwbG955wQtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdW5kZXBsb3kKc3VtbWFyeTogJ1BhY2sgYSBkZXBsb3llZCBlbnRpdHkgaW50byBhIGhvc3QnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClBhY2sgYW4gZW50aXR5IGludG8gYSBob3N0IGVudGl0eSdzIGNhcmdvIGFzIGEgcGFja2VkLWVudGl0eSBpdGVtLiBIb3N0IGFuZCB0YXJnZXQgbXVzdCBzaGFyZSB0aGUgc2FtZSBvd25lciBhbmQgY29vcmRpbmF0ZXMsIHRoZSBob3N0IG11c3QgaGF2ZSBsb2FkZXJzIGFuZCBlbm91Z2ggY2FwYWNpdHkgZm9yIHRoZSBwYWNrZWQgbWFzcywgYW5kIHRoZSB0YXJnZXQgbXVzdCBiZSBpZGxlIHdpdGggZW1wdHkgY2FyZ28uIENyZWF0ZXMgYW4gZW50aXR5Z3JvdXAgYW5kIHNjaGVkdWxlcyB1bmRlcGxveSB0YXNrcyBvbiBib3RoIGVudGl0aWVzOyBvbiByZXNvbHV0aW9uIHRoZSB0YXJnZXQgaXMgZXJhc2VkIGFuZCB0aGUgcGFja2VkIGVudGl0eSBpcyBhZGRlZCB0byB0aGUgaG9zdCdzIGNhcmdvLiBJbnZlcnNlIG9mIGRlcGxveS4AAMhrVnP51Al1bndyYXBuZnTNBC0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB1bndyYXBuZnQKc3VtbWFyeTogJ0RlcG9zaXQgYW4gTkZUIGludG8gYSBob3N0IGVudGl0eScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKRGVwb3NpdCBhbiBBdG9taWNBc3NldHMgTkZUIGludG8gYSBob3N0IGVudGl0eSdzIGNhcmdvLiBQYWlycyB3aXRoIGFuIGF0b21pY2Fzc2V0czo6dHJhbnNmZXIgY2FycnlpbmcgdGhlICd1bndyYXAnIG1lbW8gaW4gdGhlIHNhbWUgdHJhbnNhY3Rpb24uIFRoZSBjYWxsZXIgbXVzdCBvd24gdGhlIGhvc3QsIHRoZSBob3N0IG11c3QgaGF2ZSBsb2FkZXJzLCBhbmQgdGhlIGhvc3QgbXVzdCBoYXZlIGNhcGFjaXR5IGhlYWRyb29tIGZvciB0aGUgdW53cmFwcGVkIG1hc3MuIFNjaGVkdWxlcyBhIFRBU0tfVU5XUkFQIG9uIHRoZSBob3N0IHRoYXQsIG9uIHJlc29sdXRpb24sIHBsYWNlcyB0aGUgZGVjb2RlZCBpdGVtIGludG8gdGhlIGhvc3QncyBjYXJnbyBhbmQgYnVybnMgdGhlIE5GVC4AAAAAAFCv4QR3YXJwnwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogd2FycApzdW1tYXJ5OiAnV2FycCB0byBhIGRlc3RpbmF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnN0YW50bHkgdGVsZXBvcnQgYW4gZW50aXR5IHRvIGEgZGVzdGluYXRpb24gc3lzdGVtLiBSZXF1aXJlcyB3YXJwIGNhcGFiaWxpdHksIGZ1bGwgZW5lcmd5LCBlbXB0eSBjYXJnbywgYW5kIGFuIGVtcHR5IHNjaGVkdWxlLiBUaGUgZGVzdGluYXRpb24gbXVzdCBiZSBhIHZhbGlkIHN5c3RlbSB3aXRoaW4gd2FycCByYW5nZS4gUmVzb2x2ZXMgaW1tZWRpYXRlbHkgYXMgYSB6ZXJvLWR1cmF0aW9uIHRhc2suAAAAAACgquMEd2lwZbIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGUKc3VtbWFyeTogJ0RFQlVHOiB3aXBlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQAAAAAAUM3lBHdyYXDMBC0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3cmFwCnN1bW1hcnk6ICdXcmFwIGNhcmdvIGludG8gYW4gTkZUJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpXcmFwIGEgcXVhbnRpdHkgb2YgY2FyZ28gZnJvbSBhbiBlbnRpdHkgaW50byBhbiBBdG9taWNBc3NldHMgTkZUIG1pbnRlZCB0byB0aGUgc3BlY2lmaWVkIG93bmVyLiBUaGUgZW50aXR5IG11c3QgYmUgYXQgYSBuZXh1cywgaGF2ZSBsb2FkZXJzLCBhbmQgY29udGFpbiBlbm91Z2ggb2YgdGhlIHJlcXVlc3RlZCBjYXJnby4gUmVtb3ZlcyB0aGUgY2FyZ28gZnJvbSB0aGUgZW50aXR5IGFuZCBtaW50cyB0aGUgTkZUIGlubGluZSB1c2luZyB0aGUgdGVtcGxhdGUgY29uZmlndXJlZCBmb3IgdGhhdCBpdGVtIGlkOyB0aGUgcGxheWVyIHBheXMgUkFNIGZvciB0aGUgbmV3IGFzc2V0IHJvdy4gUmVxdWlyZXMgdGhlIG93bmVyJ3MgYWN0aXZlIHBlcm1pc3Npb24gKG5vIHNlc3Npb24ta2V5IGNvbXBhdGliaWxpdHkpLgCAzy5PVc3lCndyYXBlbnRpdHm1BC0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3cmFwZW50aXR5CnN1bW1hcnk6ICdXcmFwIGEgZGVwbG95ZWQgZW50aXR5IGludG8gYW4gTkZUJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpXcmFwIGFuIGVudGl0eSBpbnRvIGFuIEF0b21pY0Fzc2V0cyBORlQgbWludGVkIHRvIGl0cyBvd25lci4gVGhlIGVudGl0eSBtdXN0IGJlIGF0IGEgbmV4dXMsIGlkbGUgd2l0aCBlbXB0eSBjYXJnbywgYW5kIGhhdmUgYW4gbmZ0Y29uZmlnIG1hcHBpbmcgZm9yIGl0cyBpdGVtIGlkLiBFcmFzZXMgdGhlIGVudGl0eSBhbmQgbWludHMgdGhlIE5GVCBpbmxpbmUsIHByZXNlcnZpbmcgaXRzIHN0YXRzIGFuZCBpbnN0YWxsZWQgbW9kdWxlczsgdGhlIHBsYXllciBwYXlzIFJBTSBmb3IgdGhlIG5ldyBhc3NldCByb3cuIFJlcXVpcmVzIHRoZSBvd25lcidzIGFjdGl2ZSBwZXJtaXNzaW9uIChubyBzZXNzaW9uLWtleSBjb21wYXRpYmlsaXR5KS4IAAAAAADKrkEDaTY0AAAJY2FyZ29fcm93AAAAAPjs8lQDaTY0AAAKZW50aXR5X3JvdwCqppf57PJUA2k2NAAAD2VudGl0eWdyb3VwX3JvdwAAYG5NivKaA2k2NAAADW5mdGNvbmZpZ19yb3cAAAAAXOVNrANpNjQAAApwbGF5ZXJfcm93AAAAQO2rsLoDaTY0AAALcmVzZXJ2ZV9yb3cAAAAAAJVNxgNpNjQAAAlzdGF0ZV9yb3cAAAAAAKyqzwNpNjQAAAl0eXBlc19yb3cBEVNoaXBsb2FkIChTZXJ2ZXIpEVNoaXBsb2FkIChTZXJ2ZXIpAAAAMAAAyDTWFJ0+DHRhc2tfcmVzdWx0cwAAAABEhaZBDmNhbmNlbF9yZXN1bHRzAADINFbpTEQMdGFza19yZXN1bHRzAAAAAIC8zEUMdGFza19yZXN1bHRzAAAADbtIpUoMdGFza19yZXN1bHRzAAAAAHgaq0oMdGFza19yZXN1bHRzAADIa3oaq0oMdGFza19yZXN1bHRzAIDPLk+FsEoGc3RyaW5nAAAAAFzVsmEMdGFza19yZXN1bHRzAABgbk2KsmILZ2FtZV9jb25maWcAVDyOuaiyYgh1aW50MTZbXQAAwBHlqbJiC2VudW1fcmVzdWx0ALBy2eWpsmINZW50aXR5X2luZm9bXQAA8NnlqbJiC2VudGl0eV9pbmZvAEw2SarssmIPaXRlbWRhdGFfcmVzdWx0AABOTqrssmIPaXRlbV9pZHNfcmVzdWx0AAAAWKrssmIKaXRlbXNfaW5mb4BV9Vmq7LJiC2VudW1fcmVzdWx0AExWMk0Hs2IQa2luZF9tZXRhX3Jlc3VsdAAmddkgGrNiDWxvY2F0aW9uX2luZm8AgMkmIRqzYhBsb2NhdGlvbl9kZXJpdmVkALCqPicqs2ILZW51bV9yZXN1bHQAAFZRJyqzYg5tb2R1bGVzX3Jlc3VsdAAA8OcaNbNiC25lYXJieV9pbmZvAABd0+U1s2IObmZ0aW5mb19yZXN1bHQAALjKm1izYgtwbGF5ZXJfaW5mb6CyyfjRW7NiD3Byb2plY3RlZF9zdGF0ZQAAUNUhdbNiDnJlY2lwZXNfcmVzdWx0AABW1SF1s2IOcmVjaXBlc19yZXN1bHQAAM4GYXWzYgtlbnVtX3Jlc3VsdACw2ldhdbNiE3N0cmF0dW1fcmVtYWluaW5nW12AFbqaYnWzYhByZXNvdXJjZXNfcmVzdWx0AAAAONOIs2IVZW50aXR5X2xheW91dHNfcmVzdWx0AIDU2dyMs2IMc3RyYXR1bV9kYXRhgJW7RkqNs2IQZW50aXR5X3N1bW1hcnlbXQCi2ubmqullDHRhc2tfcmVzdWx0cwAAAAAA0LBpC2NoZWNrc3VtMjU2AAAAQITSsGkLY2hlY2tzdW01MTIAAIhXM+nymgZzdHJpbmcAAACKXdOQugx0YXNrX3Jlc3VsdHMAAABA7Uixug9yZXNvbHZlX3Jlc3VsdHMAAABXLTzNzQx0YXNrX3Jlc3VsdHMAAAAARLXNzQx0YXNrX3Jlc3VsdHMAAACexqrS1Ax0YXNrX3Jlc3VsdHMAAMhrVnP51Ax0YXNrX3Jlc3VsdHMAAAAAAFCv4Qx0YXNrX3Jlc3VsdHMAAAAAAFDN5Qx0YXNrX3Jlc3VsdHMAgM8uT1XN5Qx0YXNrX3Jlc3VsdHM=');
229
229
  const abi = antelope.ABI.from(abiBlob);
230
230
  exports.ServerTypes = void 0;
231
231
  (function (Types) {
@@ -343,6 +343,18 @@ exports.ServerTypes = void 0;
343
343
  antelope.Struct.type('blend')
344
344
  ], blend);
345
345
  Types.blend = blend;
346
+ let buildplot = class buildplot extends antelope.Struct {
347
+ };
348
+ tslib.__decorate([
349
+ antelope.Struct.field(antelope.UInt64)
350
+ ], buildplot.prototype, "id", void 0);
351
+ tslib.__decorate([
352
+ antelope.Struct.field(antelope.UInt64)
353
+ ], buildplot.prototype, "plot_id", void 0);
354
+ buildplot = tslib.__decorate([
355
+ antelope.Struct.type('buildplot')
356
+ ], buildplot);
357
+ Types.buildplot = buildplot;
346
358
  let cancel = class cancel extends antelope.Struct {
347
359
  };
348
360
  tslib.__decorate([
@@ -436,6 +448,36 @@ exports.ServerTypes = void 0;
436
448
  antelope.Struct.type('cargo_view')
437
449
  ], cargo_view);
438
450
  Types.cargo_view = cargo_view;
451
+ let coordinates = class coordinates extends antelope.Struct {
452
+ };
453
+ tslib.__decorate([
454
+ antelope.Struct.field(antelope.Int64)
455
+ ], coordinates.prototype, "x", void 0);
456
+ tslib.__decorate([
457
+ antelope.Struct.field(antelope.Int64)
458
+ ], coordinates.prototype, "y", void 0);
459
+ tslib.__decorate([
460
+ antelope.Struct.field(antelope.UInt16, { optional: true })
461
+ ], coordinates.prototype, "z", void 0);
462
+ coordinates = tslib.__decorate([
463
+ antelope.Struct.type('coordinates')
464
+ ], coordinates);
465
+ Types.coordinates = coordinates;
466
+ let claimplot = class claimplot extends antelope.Struct {
467
+ };
468
+ tslib.__decorate([
469
+ antelope.Struct.field(antelope.UInt64)
470
+ ], claimplot.prototype, "id", void 0);
471
+ tslib.__decorate([
472
+ antelope.Struct.field(antelope.UInt16)
473
+ ], claimplot.prototype, "target_item_id", void 0);
474
+ tslib.__decorate([
475
+ antelope.Struct.field(coordinates)
476
+ ], claimplot.prototype, "coords", void 0);
477
+ claimplot = tslib.__decorate([
478
+ antelope.Struct.type('claimplot')
479
+ ], claimplot);
480
+ Types.claimplot = claimplot;
439
481
  let claimstarter = class claimstarter extends antelope.Struct {
440
482
  };
441
483
  tslib.__decorate([
@@ -544,21 +586,6 @@ exports.ServerTypes = void 0;
544
586
  antelope.Struct.type('configlog')
545
587
  ], configlog);
546
588
  Types.configlog = configlog;
547
- let coordinates = class coordinates extends antelope.Struct {
548
- };
549
- tslib.__decorate([
550
- antelope.Struct.field(antelope.Int64)
551
- ], coordinates.prototype, "x", void 0);
552
- tslib.__decorate([
553
- antelope.Struct.field(antelope.Int64)
554
- ], coordinates.prototype, "y", void 0);
555
- tslib.__decorate([
556
- antelope.Struct.field(antelope.UInt16, { optional: true })
557
- ], coordinates.prototype, "z", void 0);
558
- coordinates = tslib.__decorate([
559
- antelope.Struct.type('coordinates')
560
- ], coordinates);
561
- Types.coordinates = coordinates;
562
589
  let craft = class craft extends antelope.Struct {
563
590
  };
564
591
  tslib.__decorate([
@@ -801,6 +828,9 @@ exports.ServerTypes = void 0;
801
828
  tslib.__decorate([
802
829
  antelope.Struct.field(coordinates)
803
830
  ], entity_info.prototype, "coordinates", void 0);
831
+ tslib.__decorate([
832
+ antelope.Struct.field(antelope.UInt16)
833
+ ], entity_info.prototype, "item_id", void 0);
804
834
  tslib.__decorate([
805
835
  antelope.Struct.field(antelope.UInt32)
806
836
  ], entity_info.prototype, "cargomass", void 0);
@@ -1386,6 +1416,9 @@ exports.ServerTypes = void 0;
1386
1416
  tslib.__decorate([
1387
1417
  antelope.Struct.field(antelope.UInt32)
1388
1418
  ], reserve_row.prototype, "remaining", void 0);
1419
+ tslib.__decorate([
1420
+ antelope.Struct.field(antelope.BlockTimestamp)
1421
+ ], reserve_row.prototype, "last_block", void 0);
1389
1422
  reserve_row = tslib.__decorate([
1390
1423
  antelope.Struct.type('reserve_row')
1391
1424
  ], reserve_row);
@@ -2136,6 +2169,9 @@ exports.ServerTypes = void 0;
2136
2169
  tslib.__decorate([
2137
2170
  antelope.Struct.field(antelope.UInt32)
2138
2171
  ], stratum_remaining.prototype, "remaining", void 0);
2172
+ tslib.__decorate([
2173
+ antelope.Struct.field(antelope.BlockTimestamp)
2174
+ ], stratum_remaining.prototype, "last_block", void 0);
2139
2175
  stratum_remaining = tslib.__decorate([
2140
2176
  antelope.Struct.type('stratum_remaining')
2141
2177
  ], stratum_remaining);
@@ -2433,6 +2469,8 @@ exports.TaskType = void 0;
2433
2469
  TaskType[TaskType["UNWRAP"] = 10] = "UNWRAP";
2434
2470
  TaskType[TaskType["UNDEPLOY"] = 11] = "UNDEPLOY";
2435
2471
  TaskType[TaskType["DEMOLISH"] = 13] = "DEMOLISH";
2472
+ TaskType[TaskType["CLAIMPLOT"] = 14] = "CLAIMPLOT";
2473
+ TaskType[TaskType["BUILDPLOT"] = 15] = "BUILDPLOT";
2436
2474
  })(exports.TaskType || (exports.TaskType = {}));
2437
2475
  exports.LocationType = void 0;
2438
2476
  (function (LocationType) {
@@ -2927,154 +2965,154 @@ var items = [
2927
2965
  },
2928
2966
  {
2929
2967
  id: 10001,
2930
- mass: 50000,
2968
+ mass: 420000,
2931
2969
  type: "component",
2932
2970
  tier: 1
2933
2971
  },
2934
2972
  {
2935
2973
  id: 10002,
2936
- mass: 30000,
2974
+ mass: 600000,
2937
2975
  type: "component",
2938
2976
  tier: 1
2939
2977
  },
2940
2978
  {
2941
2979
  id: 10003,
2942
- mass: 50000,
2980
+ mass: 390000,
2943
2981
  type: "component",
2944
2982
  tier: 1
2945
2983
  },
2946
2984
  {
2947
2985
  id: 10004,
2948
- mass: 30000,
2986
+ mass: 600000,
2949
2987
  type: "component",
2950
2988
  tier: 1
2951
2989
  },
2952
2990
  {
2953
2991
  id: 10005,
2954
- mass: 50000,
2992
+ mass: 600000,
2955
2993
  type: "component",
2956
2994
  tier: 1
2957
2995
  },
2958
2996
  {
2959
2997
  id: 10006,
2960
- mass: 30000,
2998
+ mass: 420000,
2961
2999
  type: "component",
2962
3000
  tier: 1
2963
3001
  },
2964
3002
  {
2965
3003
  id: 10007,
2966
- mass: 30000,
3004
+ mass: 420000,
2967
3005
  type: "component",
2968
3006
  tier: 1
2969
3007
  },
2970
3008
  {
2971
3009
  id: 10008,
2972
- mass: 30000,
3010
+ mass: 400000,
2973
3011
  type: "component",
2974
3012
  tier: 1
2975
3013
  },
2976
3014
  {
2977
3015
  id: 10009,
2978
- mass: 50000,
3016
+ mass: 590000,
2979
3017
  type: "component",
2980
3018
  tier: 1
2981
3019
  },
2982
3020
  {
2983
3021
  id: 10010,
2984
- mass: 40000,
3022
+ mass: 590000,
2985
3023
  type: "component",
2986
3024
  tier: 1
2987
3025
  },
2988
3026
  {
2989
3027
  id: 10100,
2990
- mass: 150000,
3028
+ mass: 940000,
2991
3029
  type: "module",
2992
3030
  tier: 1,
2993
3031
  subtype: "engine"
2994
3032
  },
2995
3033
  {
2996
3034
  id: 10101,
2997
- mass: 75000,
3035
+ mass: 1440000,
2998
3036
  type: "module",
2999
3037
  tier: 1,
3000
3038
  subtype: "generator"
3001
3039
  },
3002
3040
  {
3003
3041
  id: 10102,
3004
- mass: 145000,
3042
+ mass: 1220000,
3005
3043
  type: "module",
3006
3044
  tier: 1,
3007
3045
  subtype: "gatherer"
3008
3046
  },
3009
3047
  {
3010
3048
  id: 10103,
3011
- mass: 90000,
3049
+ mass: 1010000,
3012
3050
  type: "module",
3013
3051
  tier: 1,
3014
3052
  subtype: "loader"
3015
3053
  },
3016
3054
  {
3017
3055
  id: 10104,
3018
- mass: 120000,
3056
+ mass: 1190000,
3019
3057
  type: "module",
3020
3058
  tier: 1,
3021
3059
  subtype: "crafter"
3022
3060
  },
3023
3061
  {
3024
3062
  id: 10105,
3025
- mass: 100000,
3063
+ mass: 1220000,
3026
3064
  type: "module",
3027
3065
  tier: 1,
3028
3066
  subtype: "storage"
3029
3067
  },
3030
3068
  {
3031
3069
  id: 10106,
3032
- mass: 120000,
3070
+ mass: 1430000,
3033
3071
  type: "module",
3034
3072
  tier: 1,
3035
3073
  subtype: "hauler"
3036
3074
  },
3037
3075
  {
3038
3076
  id: 10107,
3039
- mass: 180000,
3077
+ mass: 1420000,
3040
3078
  type: "module",
3041
3079
  tier: 1,
3042
3080
  subtype: "warp"
3043
3081
  },
3044
3082
  {
3045
3083
  id: 10108,
3046
- mass: 90000,
3084
+ mass: 970000,
3047
3085
  type: "module",
3048
3086
  tier: 1,
3049
3087
  subtype: "battery"
3050
3088
  },
3051
3089
  {
3052
3090
  id: 10200,
3053
- mass: 80000,
3091
+ mass: 1490000,
3054
3092
  type: "entity",
3055
3093
  tier: 1
3056
3094
  },
3057
3095
  {
3058
3096
  id: 10201,
3059
- mass: 100000,
3097
+ mass: 2300000,
3060
3098
  type: "entity",
3061
3099
  tier: 1
3062
3100
  },
3063
3101
  {
3064
3102
  id: 10202,
3065
- mass: 1300000,
3103
+ mass: 5760000,
3066
3104
  type: "entity",
3067
3105
  tier: 1
3068
3106
  },
3069
3107
  {
3070
3108
  id: 10203,
3071
- mass: 800000,
3109
+ mass: 4440000,
3072
3110
  type: "entity",
3073
3111
  tier: 1
3074
3112
  },
3075
3113
  {
3076
3114
  id: 10204,
3077
- mass: 800000,
3115
+ mass: 5540000,
3078
3116
  type: "entity",
3079
3117
  tier: 1
3080
3118
  },
@@ -3101,12 +3139,12 @@ var items = [
3101
3139
  var recipes = [
3102
3140
  {
3103
3141
  outputItemId: 10001,
3104
- outputMass: 50000,
3142
+ outputMass: 420000,
3105
3143
  inputs: [
3106
3144
  {
3107
3145
  category: "ore",
3108
3146
  tier: 1,
3109
- quantity: 15
3147
+ quantity: 20
3110
3148
  }
3111
3149
  ],
3112
3150
  statSlots: [
@@ -3132,12 +3170,12 @@ var recipes = [
3132
3170
  },
3133
3171
  {
3134
3172
  outputItemId: 10002,
3135
- outputMass: 30000,
3173
+ outputMass: 600000,
3136
3174
  inputs: [
3137
3175
  {
3138
3176
  category: "regolith",
3139
3177
  tier: 1,
3140
- quantity: 10
3178
+ quantity: 30
3141
3179
  },
3142
3180
  {
3143
3181
  category: "biomass",
@@ -3168,12 +3206,12 @@ var recipes = [
3168
3206
  },
3169
3207
  {
3170
3208
  outputItemId: 10003,
3171
- outputMass: 50000,
3209
+ outputMass: 390000,
3172
3210
  inputs: [
3173
3211
  {
3174
3212
  category: "gas",
3175
3213
  tier: 1,
3176
- quantity: 32
3214
+ quantity: 65
3177
3215
  }
3178
3216
  ],
3179
3217
  statSlots: [
@@ -3199,12 +3237,17 @@ var recipes = [
3199
3237
  },
3200
3238
  {
3201
3239
  outputItemId: 10004,
3202
- outputMass: 30000,
3240
+ outputMass: 600000,
3203
3241
  inputs: [
3204
3242
  {
3205
3243
  category: "crystal",
3206
3244
  tier: 1,
3207
- quantity: 20
3245
+ quantity: 25
3246
+ },
3247
+ {
3248
+ category: "biomass",
3249
+ tier: 1,
3250
+ quantity: 15
3208
3251
  }
3209
3252
  ],
3210
3253
  statSlots: [
@@ -3230,12 +3273,17 @@ var recipes = [
3230
3273
  },
3231
3274
  {
3232
3275
  outputItemId: 10005,
3233
- outputMass: 50000,
3276
+ outputMass: 600000,
3234
3277
  inputs: [
3235
3278
  {
3236
3279
  category: "ore",
3237
3280
  tier: 1,
3238
- quantity: 15
3281
+ quantity: 20
3282
+ },
3283
+ {
3284
+ category: "gas",
3285
+ tier: 1,
3286
+ quantity: 30
3239
3287
  }
3240
3288
  ],
3241
3289
  statSlots: [
@@ -3261,12 +3309,12 @@ var recipes = [
3261
3309
  },
3262
3310
  {
3263
3311
  outputItemId: 10006,
3264
- outputMass: 30000,
3312
+ outputMass: 420000,
3265
3313
  inputs: [
3266
3314
  {
3267
3315
  category: "crystal",
3268
3316
  tier: 1,
3269
- quantity: 10
3317
+ quantity: 30
3270
3318
  }
3271
3319
  ],
3272
3320
  statSlots: [
@@ -3292,12 +3340,12 @@ var recipes = [
3292
3340
  },
3293
3341
  {
3294
3342
  outputItemId: 10007,
3295
- outputMass: 30000,
3343
+ outputMass: 420000,
3296
3344
  inputs: [
3297
3345
  {
3298
3346
  category: "biomass",
3299
3347
  tier: 1,
3300
- quantity: 32
3348
+ quantity: 25
3301
3349
  }
3302
3350
  ],
3303
3351
  statSlots: [
@@ -3323,12 +3371,12 @@ var recipes = [
3323
3371
  },
3324
3372
  {
3325
3373
  outputItemId: 10008,
3326
- outputMass: 30000,
3374
+ outputMass: 400000,
3327
3375
  inputs: [
3328
3376
  {
3329
3377
  category: "regolith",
3330
3378
  tier: 1,
3331
- quantity: 20
3379
+ quantity: 45
3332
3380
  }
3333
3381
  ],
3334
3382
  statSlots: [
@@ -3354,12 +3402,17 @@ var recipes = [
3354
3402
  },
3355
3403
  {
3356
3404
  outputItemId: 10009,
3357
- outputMass: 50000,
3405
+ outputMass: 590000,
3358
3406
  inputs: [
3359
3407
  {
3360
3408
  category: "gas",
3361
3409
  tier: 1,
3362
- quantity: 32
3410
+ quantity: 40
3411
+ },
3412
+ {
3413
+ category: "regolith",
3414
+ tier: 1,
3415
+ quantity: 40
3363
3416
  }
3364
3417
  ],
3365
3418
  statSlots: [
@@ -3385,12 +3438,17 @@ var recipes = [
3385
3438
  },
3386
3439
  {
3387
3440
  outputItemId: 10010,
3388
- outputMass: 40000,
3441
+ outputMass: 590000,
3389
3442
  inputs: [
3390
3443
  {
3391
3444
  category: "crystal",
3392
3445
  tier: 1,
3393
- quantity: 25
3446
+ quantity: 20
3447
+ },
3448
+ {
3449
+ category: "ore",
3450
+ tier: 1,
3451
+ quantity: 15
3394
3452
  }
3395
3453
  ],
3396
3454
  statSlots: [
@@ -3416,7 +3474,7 @@ var recipes = [
3416
3474
  },
3417
3475
  {
3418
3476
  outputItemId: 10100,
3419
- outputMass: 150000,
3477
+ outputMass: 940000,
3420
3478
  inputs: [
3421
3479
  {
3422
3480
  itemId: 10003,
@@ -3446,11 +3504,11 @@ var recipes = [
3446
3504
  },
3447
3505
  {
3448
3506
  outputItemId: 10101,
3449
- outputMass: 75000,
3507
+ outputMass: 1440000,
3450
3508
  inputs: [
3451
3509
  {
3452
3510
  itemId: 10004,
3453
- quantity: 5
3511
+ quantity: 6
3454
3512
  }
3455
3513
  ],
3456
3514
  statSlots: [
@@ -3476,11 +3534,11 @@ var recipes = [
3476
3534
  },
3477
3535
  {
3478
3536
  outputItemId: 10102,
3479
- outputMass: 145000,
3537
+ outputMass: 1220000,
3480
3538
  inputs: [
3481
3539
  {
3482
3540
  itemId: 10005,
3483
- quantity: 4
3541
+ quantity: 3
3484
3542
  },
3485
3543
  {
3486
3544
  itemId: 10006,
@@ -3504,10 +3562,6 @@ var recipes = [
3504
3562
  }
3505
3563
  ]
3506
3564
  },
3507
- {
3508
- sources: [
3509
- ]
3510
- },
3511
3565
  {
3512
3566
  sources: [
3513
3567
  {
@@ -3530,22 +3584,18 @@ var recipes = [
3530
3584
  },
3531
3585
  {
3532
3586
  outputItemId: 10103,
3533
- outputMass: 90000,
3587
+ outputMass: 1010000,
3534
3588
  inputs: [
3535
- {
3536
- itemId: 10002,
3537
- quantity: 3
3538
- },
3539
3589
  {
3540
3590
  itemId: 10007,
3541
- quantity: 3
3591
+ quantity: 6
3542
3592
  }
3543
3593
  ],
3544
3594
  statSlots: [
3545
3595
  {
3546
3596
  sources: [
3547
3597
  {
3548
- inputIndex: 1,
3598
+ inputIndex: 0,
3549
3599
  statIndex: 1
3550
3600
  }
3551
3601
  ]
@@ -3553,7 +3603,7 @@ var recipes = [
3553
3603
  {
3554
3604
  sources: [
3555
3605
  {
3556
- inputIndex: 1,
3606
+ inputIndex: 0,
3557
3607
  statIndex: 0
3558
3608
  }
3559
3609
  ]
@@ -3564,7 +3614,7 @@ var recipes = [
3564
3614
  },
3565
3615
  {
3566
3616
  outputItemId: 10104,
3567
- outputMass: 120000,
3617
+ outputMass: 1190000,
3568
3618
  inputs: [
3569
3619
  {
3570
3620
  itemId: 10008,
@@ -3598,15 +3648,15 @@ var recipes = [
3598
3648
  },
3599
3649
  {
3600
3650
  outputItemId: 10105,
3601
- outputMass: 100000,
3651
+ outputMass: 1220000,
3602
3652
  inputs: [
3603
3653
  {
3604
3654
  itemId: 10001,
3605
- quantity: 8
3655
+ quantity: 3
3606
3656
  },
3607
3657
  {
3608
3658
  itemId: 10002,
3609
- quantity: 4
3659
+ quantity: 3
3610
3660
  }
3611
3661
  ],
3612
3662
  statSlots: [
@@ -3648,7 +3698,7 @@ var recipes = [
3648
3698
  },
3649
3699
  {
3650
3700
  outputItemId: 10106,
3651
- outputMass: 120000,
3701
+ outputMass: 1430000,
3652
3702
  inputs: [
3653
3703
  {
3654
3704
  itemId: 10004,
@@ -3683,10 +3733,6 @@ var recipes = [
3683
3733
  statIndex: 1
3684
3734
  }
3685
3735
  ]
3686
- },
3687
- {
3688
- sources: [
3689
- ]
3690
3736
  }
3691
3737
  ],
3692
3738
  blendWeights: [
@@ -3694,15 +3740,15 @@ var recipes = [
3694
3740
  },
3695
3741
  {
3696
3742
  outputItemId: 10107,
3697
- outputMass: 180000,
3743
+ outputMass: 1420000,
3698
3744
  inputs: [
3699
3745
  {
3700
3746
  itemId: 10010,
3701
- quantity: 6
3747
+ quantity: 3
3702
3748
  },
3703
3749
  {
3704
3750
  itemId: 10009,
3705
- quantity: 4
3751
+ quantity: 3
3706
3752
  }
3707
3753
  ],
3708
3754
  statSlots: [
@@ -3726,11 +3772,11 @@ var recipes = [
3726
3772
  },
3727
3773
  {
3728
3774
  outputItemId: 10108,
3729
- outputMass: 90000,
3775
+ outputMass: 970000,
3730
3776
  inputs: [
3731
3777
  {
3732
3778
  itemId: 10003,
3733
- quantity: 4
3779
+ quantity: 3
3734
3780
  },
3735
3781
  {
3736
3782
  itemId: 10007,
@@ -3776,7 +3822,7 @@ var recipes = [
3776
3822
  },
3777
3823
  {
3778
3824
  outputItemId: 10200,
3779
- outputMass: 80000,
3825
+ outputMass: 1490000,
3780
3826
  inputs: [
3781
3827
  {
3782
3828
  itemId: 10001,
@@ -3826,7 +3872,7 @@ var recipes = [
3826
3872
  },
3827
3873
  {
3828
3874
  outputItemId: 10201,
3829
- outputMass: 100000,
3875
+ outputMass: 2300000,
3830
3876
  inputs: [
3831
3877
  {
3832
3878
  itemId: 10001,
@@ -3876,7 +3922,7 @@ var recipes = [
3876
3922
  },
3877
3923
  {
3878
3924
  outputItemId: 10202,
3879
- outputMass: 1300000,
3925
+ outputMass: 5760000,
3880
3926
  inputs: [
3881
3927
  {
3882
3928
  itemId: 10001,
@@ -3926,7 +3972,7 @@ var recipes = [
3926
3972
  },
3927
3973
  {
3928
3974
  outputItemId: 10203,
3929
- outputMass: 800000,
3975
+ outputMass: 4440000,
3930
3976
  inputs: [
3931
3977
  {
3932
3978
  itemId: 10001,
@@ -3976,7 +4022,7 @@ var recipes = [
3976
4022
  },
3977
4023
  {
3978
4024
  outputItemId: 10204,
3979
- outputMass: 800000,
4025
+ outputMass: 5540000,
3980
4026
  inputs: [
3981
4027
  {
3982
4028
  itemId: 10001,
@@ -4635,6 +4681,11 @@ function findItemByCategoryAndTier(category, tier) {
4635
4681
  throw new Error(`No resource found for category=${category} tier=${tier}`);
4636
4682
  return item;
4637
4683
  }
4684
+ function resolveRecipeInputItemId(input) {
4685
+ if ('itemId' in input)
4686
+ return input.itemId;
4687
+ return findItemByCategoryAndTier(input.category, input.tier).id;
4688
+ }
4638
4689
 
4639
4690
  function getCurrentEpoch(game) {
4640
4691
  const current = new Date().getTime();
@@ -4675,7 +4726,14 @@ const DEPTH_THRESHOLD_T9 = 57000;
4675
4726
  const DEPTH_THRESHOLD_T10 = 63000;
4676
4727
  const LOCATION_MIN_DEPTH = 500;
4677
4728
  const LOCATION_MAX_DEPTH = 65535;
4678
- const YIELD_THRESHOLD = Math.floor(0.001 * 0xffffffff);
4729
+ const YIELD_FRACTION_SHALLOW = 0.0025;
4730
+ const YIELD_FRACTION_DEEP = 0.0005;
4731
+ function yieldThresholdAt(stratum) {
4732
+ const clamped = stratum > 65535 ? 65535 : stratum;
4733
+ const t = clamped / 65535;
4734
+ const fraction = YIELD_FRACTION_SHALLOW + (YIELD_FRACTION_DEEP - YIELD_FRACTION_SHALLOW) * t;
4735
+ return Math.floor(fraction * 0xffffffff);
4736
+ }
4679
4737
  const PLANET_SUBTYPE_GAS_GIANT = 0;
4680
4738
  const PLANET_SUBTYPE_ROCKY = 1;
4681
4739
  const PLANET_SUBTYPE_TERRESTRIAL = 2;
@@ -7268,6 +7326,13 @@ var kinds = [
7268
7326
  capabilityFlags: 0,
7269
7327
  zCoord: 800,
7270
7328
  defaultLabel: "Nexus"
7329
+ },
7330
+ {
7331
+ kind: "plot",
7332
+ classification: "Plot",
7333
+ capabilityFlags: 0,
7334
+ zCoord: 0,
7335
+ defaultLabel: "Plot"
7271
7336
  }
7272
7337
  ];
7273
7338
  var templates = [
@@ -7315,10 +7380,12 @@ exports.EntityClass = void 0;
7315
7380
  (function (EntityClass) {
7316
7381
  EntityClass[EntityClass["OrbitalVessel"] = 0] = "OrbitalVessel";
7317
7382
  EntityClass[EntityClass["PlanetaryStructure"] = 1] = "PlanetaryStructure";
7383
+ EntityClass[EntityClass["Plot"] = 2] = "Plot";
7318
7384
  })(exports.EntityClass || (exports.EntityClass = {}));
7319
7385
  const CLASSIFICATION_BY_NAME = {
7320
7386
  OrbitalVessel: exports.EntityClass.OrbitalVessel,
7321
7387
  PlanetaryStructure: exports.EntityClass.PlanetaryStructure,
7388
+ Plot: exports.EntityClass.Plot,
7322
7389
  };
7323
7390
  const KIND_META = (() => {
7324
7391
  const m = new Map();
@@ -7381,6 +7448,7 @@ const ENTITY_EXTRACTOR = antelope.Name.from('extractor');
7381
7448
  const ENTITY_FACTORY = antelope.Name.from('factory');
7382
7449
  const ENTITY_CONTAINER = antelope.Name.from('container');
7383
7450
  const ENTITY_NEXUS = antelope.Name.from('nexus');
7451
+ antelope.Name.from('plot');
7384
7452
  function isShip(entity) {
7385
7453
  return entity.type?.equals(ENTITY_SHIP) ?? false;
7386
7454
  }
@@ -8195,11 +8263,11 @@ class PlayersManager extends BaseManager {
8195
8263
  }
8196
8264
 
8197
8265
  const RESERVE_TIERS = {
8198
- small: { min: 15, max: 60 },
8199
- medium: { min: 100, max: 200 },
8200
- large: { min: 400, max: 700 },
8201
- massive: { min: 1000, max: 2500 },
8202
- motherlode: { min: 4000, max: 10000 },
8266
+ small: { min: 3600000, max: 14400000 },
8267
+ medium: { min: 24000000, max: 48000000 },
8268
+ large: { min: 96000000, max: 168000000 },
8269
+ massive: { min: 240000000, max: 600000000 },
8270
+ motherlode: { min: 960000000, max: 2400000000 },
8203
8271
  };
8204
8272
  const SHALLOW_THRESHOLDS = {
8205
8273
  small: 0.8,
@@ -8233,10 +8301,26 @@ function rollTier(tierRoll, stratum) {
8233
8301
  return 'massive';
8234
8302
  return 'motherlode';
8235
8303
  }
8236
- function rollWithinTier(withinRoll, range) {
8304
+ function rollWithinTier(withinRoll, range, resourceUnitMass) {
8237
8305
  const u = withinRoll / 65535;
8238
8306
  const skewed = u * u;
8239
- return Math.floor(range.min + skewed * (range.max - range.min));
8307
+ const depositMass = range.min + skewed * (range.max - range.min);
8308
+ return Math.max(1, Math.floor(depositMass / resourceUnitMass));
8309
+ }
8310
+ const RESERVE_TIER_ENTRIES = Object.entries(RESERVE_TIERS);
8311
+ function tierOfReserve(reserve, itemId) {
8312
+ if (reserve <= 0)
8313
+ return null;
8314
+ const unitMass = getItem(itemId).mass;
8315
+ if (unitMass <= 0)
8316
+ return null;
8317
+ const impliedMassLow = reserve * unitMass;
8318
+ const impliedMassHigh = impliedMassLow + unitMass;
8319
+ for (const [tier, range] of RESERVE_TIER_ENTRIES) {
8320
+ if (impliedMassHigh > range.min && impliedMassLow <= range.max)
8321
+ return tier;
8322
+ }
8323
+ return null;
8240
8324
  }
8241
8325
 
8242
8326
  function deriveStratum(epochSeed, coords, stratum, locationType, subtype, _maxDepth) {
@@ -8246,14 +8330,7 @@ function deriveStratum(epochSeed, coords, stratum, locationType, subtype, _maxDe
8246
8330
  const hashResult = hash512(seed, input);
8247
8331
  const bytes = hashResult.array;
8248
8332
  const rawReserve = ((bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3]) >>> 0;
8249
- let reserve = 0;
8250
- if (rawReserve <= YIELD_THRESHOLD) {
8251
- const tierRoll = ((bytes[18] << 8) | bytes[19]) >>> 0;
8252
- const withinRoll = ((bytes[20] << 8) | bytes[21]) >>> 0;
8253
- const tier = rollTier(tierRoll, stratum);
8254
- reserve = rollWithinTier(withinRoll, RESERVE_TIERS[tier]);
8255
- }
8256
- if (reserve === 0)
8333
+ if (rawReserve > yieldThresholdAt(stratum))
8257
8334
  return { itemId: 0, seed: 0n, richness: 0, reserve: 0 };
8258
8335
  const eligible = getEligibleResources(locationType, subtype, stratum);
8259
8336
  if (eligible.length === 0)
@@ -8275,6 +8352,11 @@ function deriveStratum(epochSeed, coords, stratum, locationType, subtype, _maxDe
8275
8352
  }
8276
8353
  }
8277
8354
  }
8355
+ const tierRoll = ((bytes[18] << 8) | bytes[19]) >>> 0;
8356
+ const withinRoll = ((bytes[20] << 8) | bytes[21]) >>> 0;
8357
+ const tier = rollTier(tierRoll, stratum);
8358
+ const unitMass = getItem(selectedItemId).mass;
8359
+ const reserve = rollWithinTier(withinRoll, RESERVE_TIERS[tier], unitMass);
8278
8360
  const seedBigInt = (BigInt(bytes[8]) << 56n) |
8279
8361
  (BigInt(bytes[9]) << 48n) |
8280
8362
  (BigInt(bytes[10]) << 40n) |
@@ -8347,6 +8429,30 @@ function deriveStrata(coords, gameSeed, epochSeed) {
8347
8429
  return out;
8348
8430
  }
8349
8431
 
8432
+ function toNumber(value) {
8433
+ return typeof value === 'number' ? value : Number(value);
8434
+ }
8435
+ function slotsBetween(now, last) {
8436
+ const nowMs = now.toMilliseconds();
8437
+ const lastMs = last.toMilliseconds();
8438
+ if (nowMs <= lastMs)
8439
+ return 0;
8440
+ return Math.floor((nowMs - lastMs) / 500);
8441
+ }
8442
+ function getEffectiveReserve(row, now, epochSeconds) {
8443
+ const remaining = toNumber(row.remaining);
8444
+ const max = toNumber(row.max_reserve);
8445
+ if (remaining >= max)
8446
+ return max;
8447
+ const epochSlots = epochSeconds * 2;
8448
+ if (epochSlots === 0)
8449
+ return remaining;
8450
+ const elapsed = slotsBetween(now, row.last_block);
8451
+ const regen = Math.floor((max * elapsed) / epochSlots);
8452
+ const effective = remaining + regen;
8453
+ return effective >= max ? max : effective;
8454
+ }
8455
+
8350
8456
  const ORE_STATS = [
8351
8457
  {
8352
8458
  key: 'strength',
@@ -8906,7 +9012,7 @@ function computeShipHullCapabilities(stats) {
8906
9012
  const exponent = statSum / 2997.0;
8907
9013
  return {
8908
9014
  hullmass: computeBaseHullmass$1(stats),
8909
- capacity: Math.floor(1000000 * 10 ** exponent),
9015
+ capacity: Math.floor(5000000 * 10 ** exponent),
8910
9016
  };
8911
9017
  }
8912
9018
  function computeEngineCapabilities(stats) {
@@ -8996,8 +9102,9 @@ function computeBaseCapacity(itemId, stats) {
8996
9102
  case ITEM_SHIP_T1_PACKED:
8997
9103
  case ITEM_EXTRACTOR_T1_PACKED:
8998
9104
  case ITEM_FACTORY_T1_PACKED:
8999
- case ITEM_CONTAINER_T1_PACKED:
9000
9105
  return computeShipHullCapabilities(stats).capacity;
9106
+ case ITEM_CONTAINER_T1_PACKED:
9107
+ return computeContainerCapabilities(stats).capacity;
9001
9108
  case ITEM_WAREHOUSE_T1_PACKED:
9002
9109
  return computeWarehouseHullCapabilities(stats).capacity;
9003
9110
  case ITEM_CONTAINER_T2_PACKED:
@@ -9015,7 +9122,7 @@ function computeWarehouseHullCapabilities(stats) {
9015
9122
  const exponent = statSum / 2997.0;
9016
9123
  return {
9017
9124
  hullmass: computeBaseHullmass$1(stats),
9018
- capacity: Math.floor(20000000 * 10 ** exponent),
9125
+ capacity: Math.floor(100000000 * 10 ** exponent),
9019
9126
  };
9020
9127
  }
9021
9128
  function computeEntityCapabilities(stats, itemId, modules, layout) {
@@ -9162,7 +9269,12 @@ function computeEntityCapabilities(stats, itemId, modules, layout) {
9162
9269
  return result;
9163
9270
  }
9164
9271
  function computeContainerCapabilities(stats) {
9165
- return computeShipHullCapabilities(stats);
9272
+ const statSum = stats.strength + stats.hardness + stats.saturation;
9273
+ const exponent = statSum / 2997.0;
9274
+ return {
9275
+ hullmass: computeBaseHullmass$1(stats),
9276
+ capacity: Math.floor(20000000 * 10 ** exponent),
9277
+ };
9166
9278
  }
9167
9279
  function computeContainerT2Capabilities(stats) {
9168
9280
  const strength = stats.strength;
@@ -9172,7 +9284,7 @@ function computeContainerT2Capabilities(stats) {
9172
9284
  const hullmass = 70000 - 50 * density;
9173
9285
  const statSum = strength + hardness + saturation;
9174
9286
  const exponent = statSum / 2500;
9175
- const capacity = Math.floor(1500000 * 10 ** exponent);
9287
+ const capacity = Math.floor(40000000 * 10 ** exponent);
9176
9288
  return { hullmass, capacity };
9177
9289
  }
9178
9290
 
@@ -9185,11 +9297,11 @@ function computeBaseHullmass(stats) {
9185
9297
  }
9186
9298
  function computeBaseCapacityShip(stats) {
9187
9299
  const s = decodeStat(stats, 0) + decodeStat(stats, 2) + decodeStat(stats, 3);
9188
- return Math.floor(1000000 * 10 ** (s / 2997));
9300
+ return Math.floor(5000000 * 10 ** (s / 2997));
9189
9301
  }
9190
9302
  function computeBaseCapacityWarehouse(stats) {
9191
9303
  const s = decodeStat(stats, 0) + decodeStat(stats, 2) + decodeStat(stats, 3);
9192
- return Math.floor(20000000 * 10 ** (s / 2997));
9304
+ return Math.floor(100000000 * 10 ** (s / 2997));
9193
9305
  }
9194
9306
  const computeEngineThrust = (vol) => 400 + idiv(vol * 3, 4);
9195
9307
  const computeEngineDrain = (thm) => Math.max(30, 50 - idiv(thm, 70));
@@ -9268,7 +9380,7 @@ function formatModuleLine(slot, itemId, stats) {
9268
9380
  case MODULE_GATHERER: {
9269
9381
  const str = decodeStat(stats, 0);
9270
9382
  const tol = decodeStat(stats, 1);
9271
- const con = decodeStat(stats, 3);
9383
+ const con = decodeStat(stats, 2);
9272
9384
  const tier = getItem(itemId).tier;
9273
9385
  out += ` Yield ${computeGathererYield(str)} Depth ${computeGathererDepth(tol, tier)} Drain ${computeGathererDrain(con)}`;
9274
9386
  break;
@@ -9295,10 +9407,10 @@ function formatModuleLine(slot, itemId, stats) {
9295
9407
  break;
9296
9408
  }
9297
9409
  case MODULE_HAULER: {
9298
- const fin = decodeStat(stats, 0);
9410
+ const res = decodeStat(stats, 0);
9299
9411
  const con = decodeStat(stats, 1);
9300
- const com = decodeStat(stats, 2);
9301
- out += ` Capacity ${computeHaulerCapacity(fin)} Efficiency ${computeHaulerEfficiency(con)} Drain ${computeHaulerDrain$1(com)}`;
9412
+ const ref = decodeStat(stats, 2);
9413
+ out += ` Capacity ${computeHaulerCapacity(res)} Efficiency ${computeHaulerEfficiency(con)} Drain ${computeHaulerDrain$1(ref)}`;
9302
9414
  break;
9303
9415
  }
9304
9416
  case MODULE_WARP: {
@@ -9424,10 +9536,12 @@ function buildModuleImmutable(itemId, quantity, stats, originX, originY) {
9424
9536
  case MODULE_GATHERER: {
9425
9537
  const str = decodeStat(stats, 0);
9426
9538
  const tol = decodeStat(stats, 1);
9427
- const con = decodeStat(stats, 3);
9539
+ const con = decodeStat(stats, 2);
9540
+ const ref = decodeStat(stats, 3);
9428
9541
  base.push({ first: 'strength', second: ['uint16', str] });
9429
9542
  base.push({ first: 'tolerance', second: ['uint16', tol] });
9430
9543
  base.push({ first: 'conductivity', second: ['uint16', con] });
9544
+ base.push({ first: 'reflectivity', second: ['uint16', ref] });
9431
9545
  base.push({ first: 'yield', second: ['uint16', computeGathererYield(str)] });
9432
9546
  base.push({ first: 'drain', second: ['uint16', computeGathererDrain(con)] });
9433
9547
  base.push({ first: 'depth', second: ['uint16', computeGathererDepth(tol, item.tier)] });
@@ -9472,17 +9586,15 @@ function buildModuleImmutable(itemId, quantity, stats, originX, originY) {
9472
9586
  break;
9473
9587
  }
9474
9588
  case MODULE_HAULER: {
9475
- const com = decodeStat(stats, 0);
9589
+ const res = decodeStat(stats, 0);
9476
9590
  const con = decodeStat(stats, 1);
9477
- const fin = decodeStat(stats, 2);
9478
- const res = decodeStat(stats, 3);
9479
- base.push({ first: 'composition', second: ['uint16', com] });
9480
- base.push({ first: 'conductivity', second: ['uint16', con] });
9481
- base.push({ first: 'fineness', second: ['uint16', fin] });
9591
+ const ref = decodeStat(stats, 2);
9482
9592
  base.push({ first: 'resonance', second: ['uint16', res] });
9483
- base.push({ first: 'capacity', second: ['uint8', computeHaulerCapacity(com)] });
9593
+ base.push({ first: 'conductivity', second: ['uint16', con] });
9594
+ base.push({ first: 'reflectivity', second: ['uint16', ref] });
9595
+ base.push({ first: 'capacity', second: ['uint8', computeHaulerCapacity(res)] });
9484
9596
  base.push({ first: 'efficiency', second: ['uint16', computeHaulerEfficiency(con)] });
9485
- base.push({ first: 'drain', second: ['uint16', computeHaulerDrain$1(fin)] });
9597
+ base.push({ first: 'drain', second: ['uint16', computeHaulerDrain$1(ref)] });
9486
9598
  break;
9487
9599
  }
9488
9600
  }
@@ -9988,6 +10100,19 @@ class ActionsManager extends BaseManager {
9988
10100
  ref,
9989
10101
  });
9990
10102
  }
10103
+ claimplot(entityId, targetItemId, coords) {
10104
+ return this.server.action('claimplot', {
10105
+ id: antelope.UInt64.from(entityId),
10106
+ target_item_id: antelope.UInt16.from(targetItemId),
10107
+ coords,
10108
+ });
10109
+ }
10110
+ buildplot(entityId, plotId) {
10111
+ return this.server.action('buildplot', {
10112
+ id: antelope.UInt64.from(entityId),
10113
+ plot_id: antelope.UInt64.from(plotId),
10114
+ });
10115
+ }
9991
10116
  addmodule(entityId, moduleIndex, moduleRef, targetRef = null) {
9992
10117
  return this.server.action('addmodule', {
9993
10118
  entity_id: antelope.UInt64.from(entityId),
@@ -10752,6 +10877,7 @@ function makeEntity(packedItemId, state) {
10752
10877
  owner: antelope.Name.from(state.owner),
10753
10878
  entity_name: state.name,
10754
10879
  coordinates: exports.ServerTypes.coordinates.from(state.coordinates),
10880
+ item_id: antelope.UInt16.from(state.itemId ?? template.itemId),
10755
10881
  cargomass: antelope.UInt32.from(state.cargomass ?? 0),
10756
10882
  cargo: state.cargo || [],
10757
10883
  is_idle: !state.schedule,
@@ -10807,6 +10933,204 @@ function makeEntity(packedItemId, state) {
10807
10933
  return new Entity(entityInfo);
10808
10934
  }
10809
10935
 
10936
+ function capsHasCrafter(caps) {
10937
+ return caps.crafter !== undefined;
10938
+ }
10939
+ function calc_craft_duration(speed, totalInputMass) {
10940
+ const duration = Math.floor(totalInputMass / speed);
10941
+ return antelope.UInt32.from(Math.max(duration, 1));
10942
+ }
10943
+ function calc_craft_energy(drain, totalInputMass) {
10944
+ const raw = Math.floor((totalInputMass * drain) / CRAFT_ENERGY_DIVISOR);
10945
+ return antelope.UInt16.from(Math.min(raw, 65535));
10946
+ }
10947
+
10948
+ class PlotManager extends BaseManager {
10949
+ progress(plot, cargo) {
10950
+ const targetItemId = Number(plot.item_id.toString());
10951
+ const recipe = getRecipe(targetItemId);
10952
+ if (!recipe) {
10953
+ throw new Error(`No recipe found for item ${targetItemId}`);
10954
+ }
10955
+ const plotId = plot.id.toString();
10956
+ const plotCargo = cargo.filter((c) => c.entity_id.toString() === plotId);
10957
+ const quantityByItemId = new Map();
10958
+ for (const c of plotCargo) {
10959
+ const id = c.item_id.toNumber();
10960
+ quantityByItemId.set(id, (quantityByItemId.get(id) ?? 0) + Number(c.quantity.toString()));
10961
+ }
10962
+ const rows = recipe.inputs.map((input) => {
10963
+ const itemId = resolveRecipeInputItemId(input);
10964
+ const required = input.quantity;
10965
+ const provided = quantityByItemId.get(itemId) ?? 0;
10966
+ const missing = Math.max(0, required - provided);
10967
+ return { itemId, required, provided, missing };
10968
+ });
10969
+ const massRequired = computeInputMass(targetItemId);
10970
+ const massProvided = rows.reduce((sum, r) => {
10971
+ const item = getItem(r.itemId);
10972
+ return sum + item.mass * r.provided;
10973
+ }, 0);
10974
+ const isComplete = rows.every((r) => r.missing === 0);
10975
+ return { targetItemId, rows, massProvided, massRequired, isComplete };
10976
+ }
10977
+ buildableTarget(plot, cargo, activeTask) {
10978
+ const progress = this.progress(plot, cargo);
10979
+ const targetItemId = Number(plot.item_id.toString());
10980
+ const targetItem = getItem(targetItemId);
10981
+ const recipe = getRecipe(targetItemId);
10982
+ if (!recipe) {
10983
+ throw new Error(`Plot target item ${targetItemId} has no recipe`);
10984
+ }
10985
+ let state;
10986
+ const taskType = activeTask?.type.toNumber();
10987
+ if (taskType === exports.TaskType.CLAIMPLOT) {
10988
+ state = 'initializing';
10989
+ }
10990
+ else if (taskType === exports.TaskType.BUILDPLOT) {
10991
+ state = 'finalizing';
10992
+ }
10993
+ else if (progress.isComplete) {
10994
+ state = 'ready';
10995
+ }
10996
+ else {
10997
+ state = 'accepting';
10998
+ }
10999
+ return {
11000
+ entityId: plot.id,
11001
+ ownerName: plot.owner,
11002
+ coordinates: plot.coordinates,
11003
+ targetItemId,
11004
+ targetItem,
11005
+ state,
11006
+ recipe,
11007
+ progress,
11008
+ finalizeAction: antelope.Name.from('buildplot'),
11009
+ finalizerCapability: 'crafter',
11010
+ activeTask,
11011
+ };
11012
+ }
11013
+ canBuild(plot, cargo) {
11014
+ return this.progress(plot, cargo).isComplete;
11015
+ }
11016
+ timeToComplete(plot, crafter) {
11017
+ const capacity = Number(plot.capacity?.toString() ?? '0');
11018
+ const speed = Number(crafter.speed.toString());
11019
+ if (speed === 0)
11020
+ return 0;
11021
+ return calc_craft_duration(speed, capacity).toNumber();
11022
+ }
11023
+ }
11024
+
11025
+ const CONSTRUCTION_KINDS = new Set(['plot']);
11026
+ class ConstructionManager extends BaseManager {
11027
+ constructor() {
11028
+ super(...arguments);
11029
+ this.plot = new PlotManager(this.context);
11030
+ }
11031
+ getTarget(entity, cargo, activeTask) {
11032
+ const kind = entity.kind.toString();
11033
+ if (kind === 'plot') {
11034
+ return this.plot.buildableTarget(entity, cargo, activeTask);
11035
+ }
11036
+ return null;
11037
+ }
11038
+ eligibleSources(target, entities, cargo) {
11039
+ return partitionSources(target, entities, cargo).eligible;
11040
+ }
11041
+ unreachableSources(target, entities, cargo) {
11042
+ return partitionSources(target, entities, cargo).unreachable;
11043
+ }
11044
+ partitionSources(target, entities, cargo) {
11045
+ return partitionSources(target, entities, cargo);
11046
+ }
11047
+ eligibleFinalizers(target, entities) {
11048
+ const out = [];
11049
+ for (const entity of entities) {
11050
+ if (!entity.owner.equals(target.ownerName))
11051
+ continue;
11052
+ if (entity.id.equals(target.entityId))
11053
+ continue;
11054
+ if (!coordsEqual(entity.coordinates, target.coordinates))
11055
+ continue;
11056
+ const speed = entity.crafter?.speed.toNumber();
11057
+ if (speed === undefined)
11058
+ continue;
11059
+ out.push({
11060
+ entityId: entity.id,
11061
+ name: entity.id.toString(),
11062
+ capability: 'crafter',
11063
+ crafterSpeed: speed,
11064
+ estimatedDuration: this.estimateFinalizeDuration(target, speed),
11065
+ });
11066
+ }
11067
+ return out.sort((a, b) => a.estimatedDuration.value - b.estimatedDuration.value);
11068
+ }
11069
+ estimateFinalizeDuration(target, crafterSpeed) {
11070
+ return calc_craft_duration(crafterSpeed, target.progress.massRequired);
11071
+ }
11072
+ static isConstructionKind(kind) {
11073
+ return CONSTRUCTION_KINDS.has(kind);
11074
+ }
11075
+ }
11076
+ function coordsEqual(a, b) {
11077
+ return a.x.equals(b.x) && a.y.equals(b.y);
11078
+ }
11079
+ function matchRelevantCargo(entity, target, cargo) {
11080
+ const quantityByItemId = new Map();
11081
+ for (const c of cargo) {
11082
+ if (!c.entity_id.equals(entity.id))
11083
+ continue;
11084
+ const id = c.item_id.toNumber();
11085
+ quantityByItemId.set(id, (quantityByItemId.get(id) ?? 0) + c.quantity.toNumber());
11086
+ }
11087
+ const out = [];
11088
+ for (const row of target.progress.rows) {
11089
+ if (row.missing === 0)
11090
+ continue;
11091
+ const available = quantityByItemId.get(row.itemId) ?? 0;
11092
+ if (available === 0)
11093
+ continue;
11094
+ out.push({
11095
+ itemId: row.itemId,
11096
+ item: getItem(row.itemId),
11097
+ available,
11098
+ plotNeeds: row.missing,
11099
+ });
11100
+ }
11101
+ return out;
11102
+ }
11103
+ function partitionSources(target, entities, cargo) {
11104
+ const eligible = [];
11105
+ const unreachable = [];
11106
+ for (const entity of entities) {
11107
+ if (!entity.owner.equals(target.ownerName))
11108
+ continue;
11109
+ if (entity.id.equals(target.entityId))
11110
+ continue;
11111
+ if (!coordsEqual(entity.coordinates, target.coordinates))
11112
+ continue;
11113
+ const relevant = matchRelevantCargo(entity, target, cargo);
11114
+ if (relevant.length === 0)
11115
+ continue;
11116
+ const loaderCount = entity.loaders?.quantity.toNumber() ?? 0;
11117
+ const loaderTotalMass = entity.loaders?.mass.toNumber() ?? 0;
11118
+ const ref = {
11119
+ entityId: entity.id,
11120
+ name: entity.id.toString(),
11121
+ hasLoaders: loaderCount > 0,
11122
+ loaderCount,
11123
+ loaderTotalMass,
11124
+ relevantCargo: relevant,
11125
+ };
11126
+ if (ref.hasLoaders)
11127
+ eligible.push(ref);
11128
+ else
11129
+ unreachable.push(ref);
11130
+ }
11131
+ return { eligible, unreachable };
11132
+ }
11133
+
10810
11134
  function totalCargoMass(cargo) {
10811
11135
  return cargo.reduce((sum, c) => {
10812
11136
  return sum.adding(c.totalMass);
@@ -11432,12 +11756,13 @@ function calcLoadDuration(entity, cargoMass) {
11432
11756
  }
11433
11757
 
11434
11758
  const GATHER_TIME_SCALE = 100;
11759
+ const GATHER_MASS_DIVISOR = 228;
11435
11760
  const DEPTH_PENALTY_DIVISOR = 5000;
11436
11761
  function calc_gather_duration(gatherer, itemMass, quantity, stratum, richness) {
11437
11762
  const yieldValue = gatherer.yield.toNumber();
11438
11763
  if (yieldValue === 0 || richness === 0)
11439
11764
  return antelope.UInt32.from(0);
11440
- const massFactor = Math.sqrt(itemMass);
11765
+ const massFactor = itemMass / GATHER_MASS_DIVISOR;
11441
11766
  const depthPenalty = 1 + stratum / DEPTH_PENALTY_DIVISOR;
11442
11767
  const richnessMul = richness / 1000;
11443
11768
  const duration = (quantity * massFactor * GATHER_TIME_SCALE * depthPenalty) / (yieldValue * richnessMul);
@@ -11455,18 +11780,6 @@ function calc_gather_energy(gatherer, duration) {
11455
11780
  return antelope.UInt16.from(energy);
11456
11781
  }
11457
11782
 
11458
- function capsHasCrafter(caps) {
11459
- return caps.crafter !== undefined;
11460
- }
11461
- function calc_craft_duration(speed, totalInputMass) {
11462
- const duration = Math.floor(totalInputMass / speed);
11463
- return antelope.UInt32.from(Math.max(duration, 1));
11464
- }
11465
- function calc_craft_energy(drain, totalInputMass) {
11466
- const raw = Math.floor((totalInputMass * drain) / CRAFT_ENERGY_DIVISOR);
11467
- return antelope.UInt16.from(Math.min(raw, 65535));
11468
- }
11469
-
11470
11783
  const BASE_HAUL_PENALTY_MILLI = 300;
11471
11784
  const HAULER_EFFICIENCY_DENOM = 10000;
11472
11785
  const PRECISION = 10000;
@@ -11723,7 +12036,7 @@ const SLOT_FORMULAS = {
11723
12036
  gatherer: {
11724
12037
  0: { capability: 'Gathering', attribute: 'yield' },
11725
12038
  1: { capability: 'Gathering', attribute: 'depth' },
11726
- 3: { capability: 'Gathering', attribute: 'drain' },
12039
+ 2: { capability: 'Gathering', attribute: 'drain' },
11727
12040
  },
11728
12041
  loader: {
11729
12042
  0: { capability: 'Loader', attribute: 'mass' },
@@ -11847,6 +12160,37 @@ function getStatMappingsForCapability(capability) {
11847
12160
  return deriveStatMappings().filter((m) => m.capability === capability);
11848
12161
  }
11849
12162
 
12163
+ function availableBuildMethods(itemId) {
12164
+ const recipe = getRecipe(itemId);
12165
+ if (!recipe)
12166
+ return [];
12167
+ const template = getTemplateMeta(itemId);
12168
+ if (!template)
12169
+ return ['craft+deploy'];
12170
+ const kindMeta = getKindMeta(template.kind);
12171
+ if (!kindMeta)
12172
+ return ['craft+deploy'];
12173
+ if (kindMeta.classification === exports.EntityClass.PlanetaryStructure) {
12174
+ return ['craft+deploy', 'plot'];
12175
+ }
12176
+ return ['craft+deploy'];
12177
+ }
12178
+ function isBuildable(itemId) {
12179
+ return availableBuildMethods(itemId).length > 0;
12180
+ }
12181
+ function isPlotBuildable(itemId) {
12182
+ return availableBuildMethods(itemId).includes('plot');
12183
+ }
12184
+ function filterByBuildMethod(items, method) {
12185
+ return items.filter((i) => availableBuildMethods(i.itemId).includes(method));
12186
+ }
12187
+ function allBuildableItems() {
12188
+ return getItems().filter((item) => isBuildable(item.id));
12189
+ }
12190
+ function allPlotBuildableItems() {
12191
+ return getItems().filter((item) => isPlotBuildable(item.id));
12192
+ }
12193
+
11850
12194
  function toNum(v) {
11851
12195
  return Number(antelope.UInt16.from(v).value.toString());
11852
12196
  }
@@ -12136,13 +12480,12 @@ const TEMPLATES = {
12136
12480
  },
12137
12481
  loader: {
12138
12482
  id: 'module.loader.description',
12139
- template: '{quantity} loader that generates {thrust} thrust with a weight of {mass} per unit',
12483
+ template: 'generates {thrust} thrust with a weight of {mass} per unit',
12140
12484
  params: [
12141
- ['quantity', 'Quantity'],
12142
12485
  ['thrust', 'Thrust'],
12143
12486
  ['mass', 'Mass'],
12144
12487
  ],
12145
- highlightKeys: ['quantity', 'thrust', 'mass'],
12488
+ highlightKeys: ['thrust', 'mass'],
12146
12489
  },
12147
12490
  crafter: {
12148
12491
  id: 'module.crafter.description',
@@ -12380,6 +12723,7 @@ exports.CONTAINER_Z = CONTAINER_Z;
12380
12723
  exports.CRAFT_ENERGY_DIVISOR = CRAFT_ENERGY_DIVISOR;
12381
12724
  exports.CRAFT_EXCEEDS_ENERGY_CAPACITY = CRAFT_EXCEEDS_ENERGY_CAPACITY;
12382
12725
  exports.CRAFT_NOT_ENOUGH_ENERGY = CRAFT_NOT_ENOUGH_ENERGY;
12726
+ exports.ConstructionManager = ConstructionManager;
12383
12727
  exports.Coordinates = Coordinates;
12384
12728
  exports.DEPLOY_ENTITY_HAS_SCHEDULE = DEPLOY_ENTITY_HAS_SCHEDULE;
12385
12729
  exports.DEPTH_THRESHOLD_T1 = DEPTH_THRESHOLD_T1;
@@ -12598,6 +12942,11 @@ exports.WARP_NOT_FULL_ENERGY = WARP_NOT_FULL_ENERGY;
12598
12942
  exports.WARP_NO_CAPABILITY = WARP_NO_CAPABILITY;
12599
12943
  exports.WARP_OUT_OF_RANGE = WARP_OUT_OF_RANGE;
12600
12944
  exports.WebSocketConnection = WebSocketConnection;
12945
+ exports.YIELD_FRACTION_DEEP = YIELD_FRACTION_DEEP;
12946
+ exports.YIELD_FRACTION_SHALLOW = YIELD_FRACTION_SHALLOW;
12947
+ exports.allBuildableItems = allBuildableItems;
12948
+ exports.allPlotBuildableItems = allPlotBuildableItems;
12949
+ exports.availableBuildMethods = availableBuildMethods;
12601
12950
  exports.availableCapacity = availableCapacity;
12602
12951
  exports.availableCapacityFromMass = availableCapacityFromMass;
12603
12952
  exports.blendCargoStacks = blendCargoStacks;
@@ -12734,6 +13083,7 @@ exports.estimateDealTravelTime = estimateDealTravelTime;
12734
13083
  exports.estimateTravelTime = estimateTravelTime;
12735
13084
  exports.fetchAtomicAssetsForOwner = fetchAtomicAssetsForOwner;
12736
13085
  exports.fetchAtomicSchemas = fetchAtomicSchemas;
13086
+ exports.filterByBuildMethod = filterByBuildMethod;
12737
13087
  exports.findItemByCategoryAndTier = findItemByCategoryAndTier;
12738
13088
  exports.findNearbyPlanets = findNearbyPlanets;
12739
13089
  exports.flightSpeedFactor = flightSpeedFactor;
@@ -12750,6 +13100,7 @@ exports.getComponents = getComponents;
12750
13100
  exports.getCurrentEpoch = getCurrentEpoch;
12751
13101
  exports.getDepthThreshold = getDepthThreshold;
12752
13102
  exports.getDestinationLocation = getDestinationLocation;
13103
+ exports.getEffectiveReserve = getEffectiveReserve;
12753
13104
  exports.getEligibleResources = getEligibleResources;
12754
13105
  exports.getEntityClass = getEntityClass;
12755
13106
  exports.getEntityItems = getEntityItems;
@@ -12794,6 +13145,7 @@ exports.hasSystem = hasSystem;
12794
13145
  exports.hash = hash;
12795
13146
  exports.hash512 = hash512;
12796
13147
  exports.interpolateFlightPosition = interpolateFlightPosition;
13148
+ exports.isBuildable = isBuildable;
12797
13149
  exports.isContainer = isContainer;
12798
13150
  exports.isCraftedItem = isCraftedItem;
12799
13151
  exports.isExtractor = isExtractor;
@@ -12805,6 +13157,7 @@ exports.isInvertedAttribute = isInvertedAttribute;
12805
13157
  exports.isLocationBuildable = isLocationBuildable;
12806
13158
  exports.isModuleItem = isModuleItem;
12807
13159
  exports.isNexus = isNexus;
13160
+ exports.isPlotBuildable = isPlotBuildable;
12808
13161
  exports.isRelatedItem = isRelatedItem;
12809
13162
  exports.isShip = isShip;
12810
13163
  exports.isSubscriptionsDebugEnabled = isSubscriptionsDebugEnabled;
@@ -12836,6 +13189,7 @@ exports.removeFromStacks = removeFromStacks;
12836
13189
  exports.renderDescription = renderDescription;
12837
13190
  exports.resolveItem = resolveItem;
12838
13191
  exports.resolveItemCategory = resolveItemCategory;
13192
+ exports.resolveRecipeInputItemId = resolveRecipeInputItemId;
12839
13193
  exports.resolveStats = resolveStats;
12840
13194
  exports.rollTier = rollTier;
12841
13195
  exports.rollWithinTier = rollWithinTier;
@@ -12848,7 +13202,9 @@ exports.stacksEqual = stacksEqual;
12848
13202
  exports.taskCargoChanges = taskCargoChanges;
12849
13203
  exports.tierAdjective = tierAdjective;
12850
13204
  exports.tierColors = tierColors;
13205
+ exports.tierOfReserve = tierOfReserve;
12851
13206
  exports.toLocation = toLocation;
12852
13207
  exports.typeLabel = typeLabel;
12853
13208
  exports.validateSchedule = validateSchedule;
13209
+ exports.yieldThresholdAt = yieldThresholdAt;
12854
13210
  //# sourceMappingURL=shipload.js.map