@shipload/sdk 0.7.0 → 2.0.0-rc1

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 (48) hide show
  1. package/lib/shipload.d.ts +1651 -226
  2. package/lib/shipload.js +4960 -1972
  3. package/lib/shipload.js.map +1 -1
  4. package/lib/shipload.m.js +4789 -1941
  5. package/lib/shipload.m.js.map +1 -1
  6. package/package.json +5 -4
  7. package/src/contracts/platform.ts +30 -30
  8. package/src/contracts/server.ts +635 -253
  9. package/src/data/goods.json +23 -0
  10. package/src/data/syllables.json +1184 -0
  11. package/src/entities/cargo-utils.ts +47 -0
  12. package/src/entities/entity-inventory.ts +39 -0
  13. package/src/entities/gamestate.ts +152 -0
  14. package/src/entities/location.ts +241 -0
  15. package/src/entities/player.ts +287 -0
  16. package/src/entities/ship.ts +559 -0
  17. package/src/entities/warehouse.ts +205 -0
  18. package/src/errors.ts +46 -9
  19. package/src/index-module.ts +119 -7
  20. package/src/managers/actions.ts +168 -0
  21. package/src/managers/base.ts +25 -0
  22. package/src/managers/context.ts +104 -0
  23. package/src/managers/entities.ts +86 -0
  24. package/src/managers/epochs.ts +47 -0
  25. package/src/managers/index.ts +9 -0
  26. package/src/managers/locations.ts +103 -0
  27. package/src/managers/players.ts +13 -0
  28. package/src/managers/trades.ts +119 -0
  29. package/src/market/goods.ts +31 -0
  30. package/src/{market.ts → market/market.ts} +32 -37
  31. package/src/{rolls.ts → market/rolls.ts} +3 -3
  32. package/src/{epoch.ts → scheduling/epoch.ts} +1 -1
  33. package/src/scheduling/projection.ts +218 -0
  34. package/src/scheduling/schedule.ts +155 -0
  35. package/src/shipload.ts +39 -157
  36. package/src/trading/collect.ts +939 -0
  37. package/src/trading/deal.ts +208 -0
  38. package/src/trading/trade.ts +203 -0
  39. package/src/travel/travel.ts +425 -0
  40. package/src/types.ts +60 -25
  41. package/src/utils/system.ts +27 -0
  42. package/src/goods.ts +0 -124
  43. package/src/ship.ts +0 -36
  44. package/src/state.ts +0 -0
  45. package/src/syllables.ts +0 -1184
  46. package/src/system.ts +0 -36
  47. package/src/travel.ts +0 -259
  48. /package/src/{hash.ts → utils/hash.ts} +0 -0
@@ -3,15 +3,17 @@ import type {
3
3
  Checksum256Type,
4
4
  Int64Type,
5
5
  NameType,
6
+ TimePointType,
6
7
  UInt16Type,
8
+ UInt32Type,
7
9
  UInt64Type,
10
+ UInt8Type,
8
11
  } from '@wharfkit/antelope'
9
12
  import {
10
13
  ABI,
11
14
  Blob,
12
15
  Checksum256,
13
16
  Checksum512,
14
- Float64,
15
17
  Int64,
16
18
  Name,
17
19
  Struct,
@@ -24,354 +26,641 @@ import {
24
26
  import type {ActionOptions, ContractArgs, PartialBy, Table} from '@wharfkit/contract'
25
27
  import {Contract as BaseContract} from '@wharfkit/contract'
26
28
  export const abiBlob = Blob.from(
27
- 'DmVvc2lvOjphYmkvMS4yACcHYWR2YW5jZQACBnJldmVhbAZzdHJpbmcGY29tbWl0C2NoZWNrc3VtMjU2BmFycml2ZQABAmlkBnVpbnQ2NAhidXlnb29kcwADB3NoaXBfaWQGdWludDY0B2dvb2RfaWQGdWludDY0CHF1YW50aXR5BnVpbnQ2NAdidXlzaGlwAAIHYWNjb3VudARuYW1lBG5hbWUGc3RyaW5nCWNhcmdvX3JvdwAGAmlkBnVpbnQ2NAdzaGlwX2lkBnVpbnQ2NAdnb29kX2lkBnVpbnQ2NARwYWlkBnVpbnQ2NAVvd25lZAZ1aW50MzIGbG9hZGVkBnVpbnQzMgpjbGVhcnRhYmxlAAMKdGFibGVfbmFtZQRuYW1lBXNjb3BlBW5hbWU/CG1heF9yb3dzB3VpbnQ2ND8GY29tbWl0AAEGY29tbWl0C2NoZWNrc3VtMjU2C2Nvb3JkaW5hdGVzAAIBeAVpbnQ2NAF5BWludDY0BmVuYWJsZQABB2VuYWJsZWQEYm9vbApnb29kX3ByaWNlAAMCaWQGdWludDE2BXByaWNlBnVpbnQ2NAZzdXBwbHkGdWludDY0BGhhc2gAAQV2YWx1ZQZzdHJpbmcHaGFzaDUxMgABBXZhbHVlBnN0cmluZwRpbml0AAEEc2VlZAtjaGVja3N1bTI1NghqZXR0aXNvbgADB3NoaXBfaWQGdWludDY0B2dvb2RfaWQGdWludDE2CHF1YW50aXR5BnVpbnQ2NARqb2luAAEHYWNjb3VudARuYW1lDGxvYWRlcl9zdGF0cwADBG1hc3MGdWludDMyCHF1YW50aXR5BnVpbnQxNgZ0aHJ1c3QGdWludDMyDGxvY2F0aW9uX3JvdwAFAmlkBnVpbnQ2NAtjb29yZGluYXRlcwtjb29yZGluYXRlcwVlcG9jaAZ1aW50NjQHZ29vZF9pZAZ1aW50MTYGc3VwcGx5BnVpbnQxNgttYXJrZXRwcmljZQACCGxvY2F0aW9uC2Nvb3JkaW5hdGVzB2dvb2RfaWQGdWludDE2DG1hcmtldHByaWNlcwABCGxvY2F0aW9uC2Nvb3JkaW5hdGVzB3BheWxvYW4AAgdhY2NvdW50BG5hbWUGYW1vdW50BnVpbnQ2NApwbGF5ZXJfcm93AAQFb3duZXIEbmFtZQdiYWxhbmNlBnVpbnQ2NARkZWJ0BnVpbnQ2NAhuZXR3b3J0aAVpbnQ2NARzYWx0AAEEc2FsdAZ1aW50NjQJc2VsbGdvb2RzAAMHc2hpcF9pZAZ1aW50NjQHZ29vZF9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0DHNlcXVlbmNlX3JvdwACA2tleQRuYW1lBXZhbHVlBnVpbnQ2NAhzaGlwX3JvdwAKAmlkBnVpbnQ2NAVvd25lcgRuYW1lBG5hbWUGc3RyaW5nCGxvY2F0aW9uC2Nvb3JkaW5hdGVzBHNraW4FdWludDgEdGllcgV1aW50OAVzdGF0ZQpzaGlwX3N0YXRlBXN0YXRzCnNoaXBfc3RhdHMHbG9hZGVycwxsb2FkZXJfc3RhdHMKdHJhdmVscGxhbgx0cmF2ZWxfcGxhbj8Kc2hpcF9zdGF0ZQABBmVuZXJneQZ1aW50MzIKc2hpcF9zdGF0cwAHCGNhcGFjaXR5BnVpbnQzMgVkcmFpbgZ1aW50MzIEbWFzcwZ1aW50NjQHbWF4bWFzcwZ1aW50NjQFb3JiaXQGdWludDE2CHJlY2hhcmdlBnVpbnQzMgZ0aHJ1c3QGdWludDY0CXN0YXRlX3JvdwAGB2VuYWJsZWQEYm9vbAVlcG9jaAZ1aW50NjQEc2FsdAZ1aW50NjQFc2hpcHMGdWludDMyBHNlZWQLY2hlY2tzdW0yNTYGY29tbWl0C2NoZWNrc3VtMjU2CHRha2Vsb2FuAAIHYWNjb3VudARuYW1lBmFtb3VudAZ1aW50NjQGdHJhdmVsAAMCaWQGdWludDY0C2Rlc3RpbmF0aW9uC2Nvb3JkaW5hdGVzCHJlY2hhcmdlBGJvb2wLdHJhdmVsX3BsYW4ACQlkZXBhcnR1cmUKdGltZV9wb2ludAtkZXN0aW5hdGlvbgtjb29yZGluYXRlcwhkaXN0YW5jZQZ1aW50NjQKZmxpZ2h0dGltZQZ1aW50MzIIbG9hZHRpbWUGdWludDMyDHJlY2hhcmdldGltZQZ1aW50MzILbWFzc3BlbmFsdHkGdWludDMyBG1hc3MGdWludDY0C2VuZXJneXVzYWdlBnVpbnQzMg50cmF2ZWxfc3VtbWFyeQANBXN0YXRzCnNoaXBfc3RhdHMHbG9hZGVycwxsb2FkZXJfc3RhdHMGb3JpZ2luC2Nvb3JkaW5hdGVzC2Rlc3RpbmF0aW9uC2Nvb3JkaW5hdGVzCGRpc3RhbmNlBnVpbnQ2NAl0b3RhbG1hc3MGdWludDY0DGFjY2VsZXJhdGlvbgdmbG9hdDY0CmZsaWdodHRpbWUGdWludDMyC2VuZXJneXVzYWdlBnVpbnQzMgxyZWNoYXJnZXRpbWUGdWludDMyC21hc3NwZW5hbHR5BnVpbnQzMghsb2FkdGltZQZ1aW50NjQEdGltZQZ1aW50NjQKdHJhdmVscGxhbgAEAmlkBnVpbnQ2NAZvcmlnaW4LY29vcmRpbmF0ZXMLZGVzdGluYXRpb24LY29vcmRpbmF0ZXMIcmVjaGFyZ2UEYm9vbAp0cmF2ZWx0aW1lAAICaWQGdWludDY0C2Rlc3RpbmF0aW9uC2Nvb3JkaW5hdGVzDHVwZGF0ZWNyZWRpdAACB2FjY291bnQEbmFtZQZhbW91bnQFaW50NjQKdXBkYXRlZGVidAACB2FjY291bnQEbmFtZQZhbW91bnQFaW50NjQLdXBncmFkZXNoaXAAAgdhY2NvdW50BG5hbWUCaWQGdWludDY0BHdpcGUAAAx3aXBlc2VxdWVuY2UAABoAAABAoWl2MgdhZHZhbmNl0wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYWR2YW5jZQpzdW1tYXJ5OiAnQWR2YW5jZSB0dXJuJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpBZHZhbmNlIHRoZSBnYW1lIHRvIHRoZSBuZXh0IHR1cm4uAAAAAKjt7jUGYXJyaXZlswItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYXJyaXZlCnN1bW1hcnk6ICdDb21wbGV0ZSB0cmF2ZWwnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNvbXBsZXRlIHRoZSB0cmF2ZWwgb2YgYSBzaGlwIGJ5IHVwZGF0aW5nIGl0cyBsb2NhdGlvbiB0byB0aGUgZGVzdGluYXRpb24gY29vcmRpbmF0ZXMgYWZ0ZXIgdGhlIHRyYXZlbCBkdXJhdGlvbiBoYXMgcGFzc2VkLgoKLS0tAAAAOFHKvD4IYnV5Z29vZHPdAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBidXlnb29kcwpzdW1tYXJ5OiAnQnV5IGdvb2RzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJjaGFzZSBnb29kcyBhbmQgYWRkIHRoZW0gdG8gYSBzaGlwJ3MgY2FyZ28uAAAAoLqGvT4HYnV5c2hpcMYBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGJ1eXNoaXAKc3VtbWFyeTogJ0J1eSBhIG5ldyBzaGlwJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJjaGFzZSBhIG5ldyBzaGlwAICKx+RrVEQKY2xlYXJ0YWJsZb4BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNsZWFydGFibGUKc3VtbWFyeTogJ0RFQlVHOiBjbGVhcnRhYmxlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQAAAABkJyVFBmNvbW1pdPEBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNvbW1pdApzdW1tYXJ5OiAnU2V0IGNvbW1pdCB2YWx1ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKU2V0IHRoZSBpbml0aWFsIGNvbW1pdCB2YWx1ZSBkdXJpbmcgZ2FtZSBpbml0aWFsaXphdGlvbi4KCi0tLQAAAACoeMxUBmVuYWJsZeIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGVuYWJsZQpzdW1tYXJ5OiAnU2V0IGVuYWJsZWQgc3RhdGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkVuYWJsZSBvciBkaXNhYmxlIHRoaXMgZ2FtZSBvZiBTaGlwbG9hZC4KCi0tLQAAAAAA0LBpBGhhc2j9AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBoYXNoCnN1bW1hcnk6ICdDYWxjdWxhdGUgc2hhMjU2IGhhc2gnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNhbGN1bGF0ZXMgdGhlIHNoYTI1NiBoYXNoIG9mIGEgc3RyaW5nIGJhc2VkIHVzaW5nIHRoZSBnYW1lIHNlZWQuCgotLS0AAABAhNKwaQdoYXNoNTEy+wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaGFzaDUxMgpzdW1tYXJ5OiAnQ2FsY3VsYXRlIHNoYTUxMiBoYXNoJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYWxjdWxhdGVzIHRoZSBzaGE1MTIgaGFzaCBvZiBhIHN0cmluZyBiYXNlZCB1c2luZyB0aGUgZ2FtZSBzZWVkLgAAAAAAkN10BGluaXT6AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBpbml0CnN1bW1hcnk6ICdJbml0aWFsaXplIGdhbWUgc2VlZCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5pdGlhbGl6ZSBhIHRoZSBnYW1lcyBzZWVkIGFuZCBzZWVkIHZhbHVlcyB0byBib290c3RyYXAgZ2FtZSBzdGF0ZS4AAACTYpezeghqZXR0aXNvbvkBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGpldHRpc29uCnN1bW1hcnk6ICdKZXR0aXNvbiBDYXJnbyBmcm9tIFNoaXAnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkpldHRpc29uIGNhcmdvIGZyb20gdGhlIGEgc2hpcCBhbmQgcmVjYWxjdWxhdGUgdHJhdmVsIHRpbWUuAAAAAAAwHX0Eam9pbskBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGpvaW4Kc3VtbWFyeTogJ0pvaW4gYSBnYW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpKb2luIGEgZ2FtZSBvZiBTaGlwbG9hZAoKLS0tABRyt2YFr5ELbWFya2V0cHJpY2WbAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBtYXJrZXRwcmljZQpzdW1tYXJ5OiAnR2V0IHByaWNlIG9mIGdvb2QgYXQgbG9jYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIGRldGVybWluZXMgdGhlIG1hcmtldCBwcmljZSBvZiBhIHNwZWNpZmllZCBnb29kIGF0IGEgZ2l2ZW4gbG9jYXRpb24uCgotLS2AFXK3ZgWvkQxtYXJrZXRwcmljZXOVAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBtYXJrZXRwcmljZXMKc3VtbWFyeTogJ0dldCBwcmljZSBvZiBhbGwgZ29vZHMgYXQgbG9jYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIGRldGVybWluZXMgdGhlIG1hcmtldCBwcmljZSBvZiBhbGwgZ29vZHMgYXQgYSBnaXZlbiBsb2NhdGlvbi4AAABgGhq9qQdwYXlsb2Fu3gEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcGF5bG9hbgpzdW1tYXJ5OiAnTG9hbiBQYXltZW50JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpNYWtlIGEgcGF5bWVudCBvbiBhbiBvdXRzdGFuZGluZyBjcmVkaXQgbG9hbi4AAAAAAJCjwQRzYWx03QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc2FsdApzdW1tYXJ5OiAnQXBwZW5kIFNhbHQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkFkZCBhZGRpdGlvbmFsIHNhbHQgdG8gdGhlIG5leHQgZXBvY2ggc2VlZC4KCi0tLQAAwIlSFqPCCXNlbGxnb29kc9UBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHNlbGxnb29kcwpzdW1tYXJ5OiAnU2VsbCBnb29kcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKU2VsbCBnb29kcyBmcm9tIGEgc2hpcCdzIGNhcmdvLgoKLS0tAAAA09CooMkIdGFrZWxvYW7qAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB0YWtlbG9hbgpzdW1tYXJ5OiAnQ3JlZGl0IExvYW4nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkJvcnJvdyBjcmVkaXRzIGZyb20gdGhlIGJhbmsgdGhhdCB3aWxsIG5lZWQgdG8gYmUgcmVwYWlkLgAAAABEtc3NBnRyYXZlbMgCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRyYXZlbApzdW1tYXJ5OiAnTW92ZSBhIHNoaXAnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYXRlIHRyYXZlbCBvZiBhIHNoaXAgZnJvbSBpdHMgY3VycmVudCBsb2NhdGlvbiB0byBhIG5ldyBkZXN0aW5hdGlvbi4KCi0tLQoKVGhpcyBhY3Rpb24gZGV0ZXJtaW5lcyB0aGUgbWFya2V0IHByaWNlIG9mIGFsbCBnb29kcyBhdCBhIGdpdmVuIGxvY2F0aW9uLgDANLFGtc3NCnRyYXZlbHBsYW6OAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB0cmF2ZWxwbGFuCnN1bW1hcnk6ICdFc3RpbWF0ZSBhIHRyYXZlbCBwbGFuJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYWxjdWxhdGUgd2hhdCB0aGUgdHJhdmVsIHBsYW4gaXMgZm9yIGEgc2hpcCB0cmF2ZWxpbmcgdG8gYSBnaXZlbiBsb2NhdGlvbi4KCi0tLQCAki5Htc3NCnRyYXZlbHRpbWWMAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB0cmF2ZWx0aW1lCnN1bW1hcnk6ICdFc3RpbWF0ZSBUcmF2ZWwgVGltZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKRXN0aW1hdGUgdGhlIGR1cmF0aW9uIG9mIGEgc2hpcCB0cmF2ZWxpbmcgd2l0aG91dCBjb21taXR0aW5nIHRvIHRoZSBhY3Rpb24uCgotLS2QXVIXqWxS1Qx1cGRhdGVjcmVkaXTCAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB1cGRhdGVjcmVkaXQKc3VtbWFyeTogJ0RFQlVHOiB1cGRhdGVjcmVkaXQgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAEA+KqlsUtUKdXBkYXRlZGVidL4BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHVwZGF0ZWRlYnQKc3VtbWFyeTogJ0RFQlVHOiB1cGRhdGVkZWJ0IGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQCqa1glc1nVC3VwZ3JhZGVzaGlw1wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdXBncmFkZXNoaXAKc3VtbWFyeTogJ1VwZ3JhZGUgYSBTaGlwJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpVcGdyYWRlIGEgc2hpcCB0byB0aGUgbmV4dCB0aWVyLgAAAAAAoKrjBHdpcGWyAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3aXBlCnN1bW1hcnk6ICdERUJVRzogd2lwZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS2g0FTaKqyq4wx3aXBlc2VxdWVuY2XCAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3aXBlc2VxdWVuY2UKc3VtbWFyeTogJ0RFQlVHOiB3aXBlc2VxdWVuY2UgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tBgAAAAAAyq5BA2k2NAAACWNhcmdvX3JvdwAAAJO6bBCNA2k2NAAADGxvY2F0aW9uX3JvdwAAAABc5U2sA2k2NAAACnBsYXllcl9yb3cAAAAKTaWtwgNpNjQAAAxzZXF1ZW5jZV9yb3cAAAAAAFBdwwNpNjQAAAhzaGlwX3JvdwAAAAAAlU3GA2k2NAAACXN0YXRlX3JvdwERU2hpcGxvYWQgKFNlcnZlcikRU2hpcGxvYWQgKFNlcnZlcikAAAAGAAAAAADQsGkLY2hlY2tzdW0yNTYAAABAhNKwaQtjaGVja3N1bTUxMgAUcrdmBa+RCmdvb2RfcHJpY2WAFXK3ZgWvkQxnb29kX3ByaWNlW10AwDSxRrXNzQt0cmF2ZWxfcGxhbgCAki5Htc3NDnRyYXZlbF9zdW1tYXJ5'
29
+ 'DmVvc2lvOjphYmkvMS4yAEEHYWR2YW5jZQACBnJldmVhbAZzdHJpbmcGY29tbWl0C2NoZWNrc3VtMjU2CGJ1eWdvb2RzAAMHc2hpcF9pZAZ1aW50NjQHZ29vZF9pZAZ1aW50MTYIcXVhbnRpdHkGdWludDMyB2J1eXNoaXAAAgdhY2NvdW50BG5hbWUEbmFtZQZzdHJpbmcMYnV5d2FyZWhvdXNlAAMHYWNjb3VudARuYW1lB3NoaXBfaWQGdWludDY0BG5hbWUGc3RyaW5nBmNhbmNlbAADC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0BWNvdW50BnVpbnQ2NApjYW5jZWxfbG9nAAYFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQKdGFza19pbmRleAV1aW50OAR0YXNrBHRhc2sKc3RhcnRlZF9hdAp0aW1lX3BvaW50DmNhbmNlbF9yZXN1bHRzAAQJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lD2NhbmNlbGxlZF9jb3VudAV1aW50OBBzY2hlZHVsZV9zdGFydGVkC3RpbWVfcG9pbnQ/CmNhcmdvX2l0ZW0AAwdnb29kX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIJdW5pdF9jb3N0BnVpbnQ2NAljYXJnb19yb3cABQJpZAZ1aW50NjQJZW50aXR5X2lkBnVpbnQ2NAdnb29kX2lkBnVpbnQ2NAhxdWFudGl0eQZ1aW50NjQJdW5pdF9jb3N0BnVpbnQ2NApjbGVhcnRhYmxlAAMKdGFibGVfbmFtZQRuYW1lBXNjb3BlBW5hbWU/CG1heF9yb3dzB3VpbnQ2ND8GY29tbWl0AAEGY29tbWl0C2NoZWNrc3VtMjU2C2Nvb3JkaW5hdGVzAAMBeAVpbnQ2NAF5BWludDY0AXoHdWludDE2PwZlbmFibGUAAQdlbmFibGVkBGJvb2wMZW5lcmd5X3N0YXRzAAIIY2FwYWNpdHkGdWludDE2CHJlY2hhcmdlBnVpbnQxNgtlbnRpdHlfaW5mbwAUBHR5cGUEbmFtZQJpZAZ1aW50NjQFb3duZXIEbmFtZQtlbnRpdHlfbmFtZQZzdHJpbmcIbG9jYXRpb24LY29vcmRpbmF0ZXMJY2FyZ29tYXNzBnVpbnQzMgVjYXJnbwxjYXJnb19pdGVtW10HbG9hZGVycw1sb2FkZXJfc3RhdHM/BmVuZXJneQd1aW50MTY/BG1hc3MHdWludDMyPwdlbmdpbmVzD21vdmVtZW50X3N0YXRzPwlnZW5lcmF0b3INZW5lcmd5X3N0YXRzPwhjYXBhY2l0eQd1aW50MzI/B2lzX2lkbGUEYm9vbAxjdXJyZW50X3Rhc2sFdGFzaz8UY3VycmVudF90YXNrX2VsYXBzZWQGdWludDMyFmN1cnJlbnRfdGFza19yZW1haW5pbmcGdWludDMyDXBlbmRpbmdfdGFza3MGdGFza1tdB2lkbGVfYXQLdGltZV9wb2ludD8Ic2NoZWR1bGUJc2NoZWR1bGU/DGVudGl0eV9zdGF0ZQACCGxvY2F0aW9uC2Nvb3JkaW5hdGVzBmVuZXJneQZ1aW50MTYOZW50aXR5X3N1bW1hcnkACAR0eXBlBG5hbWUCaWQGdWludDY0BW93bmVyBG5hbWULZW50aXR5X25hbWUGc3RyaW5nCGxvY2F0aW9uC2Nvb3JkaW5hdGVzB2lzX2lkbGUEYm9vbA5yZXNvbHZlZF9jb3VudAZ1aW50MzINcGVuZGluZ19jb3VudAZ1aW50MzIQZW50aXR5X3Rhc2tfaW5mbwAECWVudGl0eV9pZAZ1aW50NjQLZW50aXR5X3R5cGUEbmFtZQp0YXNrX2NvdW50BXVpbnQ4EHNjaGVkdWxlX3N0YXJ0ZWQKdGltZV9wb2ludAtnZXRlbnRpdGllcwACBW93bmVyBG5hbWULZW50aXR5X3R5cGUFbmFtZT8JZ2V0ZW50aXR5AAILZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0CGdldGdvb2RzAAALZ2V0bG9jYXRpb24AAgF4BWludDY0AXkFaW50NjQJZ2V0bmVhcmJ5AAMLZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0CHJlY2hhcmdlBGJvb2wJZ2V0cGxheWVyAAEHYWNjb3VudARuYW1lDGdldHN1bW1hcmllcwACBW93bmVyBG5hbWULZW50aXR5X3R5cGUFbmFtZT8EZ29vZAADAmlkBnVpbnQxNgpiYXNlX3ByaWNlBnVpbnQzMgRtYXNzBnVpbnQzMgpnb29kc19pbmZvAAEFZ29vZHMGZ29vZFtdBGhhc2gAAQV2YWx1ZQZzdHJpbmcHaGFzaDUxMgABBXZhbHVlBnN0cmluZwRpbml0AAEEc2VlZAtjaGVja3N1bTI1NgRqb2luAAEHYWNjb3VudARuYW1lDGxvYWRlcl9zdGF0cwADBG1hc3MGdWludDMyBnRocnVzdAZ1aW50MTYIcXVhbnRpdHkFdWludDgNbG9jYXRpb25fZ29vZAAFAmlkBnVpbnQxNgVwcmljZQZ1aW50MzIGc3VwcGx5BnVpbnQxNhFyYXJpdHlfbXVsdGlwbGllcgZ1aW50MzITbG9jYXRpb25fbXVsdGlwbGllcgZ1aW50MzINbG9jYXRpb25faW5mbwADBmNvb3Jkcwtjb29yZGluYXRlcwlpc19zeXN0ZW0EYm9vbAVnb29kcw9sb2NhdGlvbl9nb29kW10MbG9jYXRpb25fcm93AAUCaWQGdWludDY0C2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzBWVwb2NoBnVpbnQ2NAdnb29kX2lkBnVpbnQxNgZzdXBwbHkGdWludDE2CWxvZ2NhbmNlbAABA2xvZwpjYW5jZWxfbG9nCmxvZ3Jlc29sdmUAAQNsb2cLcmVzb2x2ZV9sb2cObW92ZW1lbnRfc3RhdHMAAgZ0aHJ1c3QGdWludDMyBWRyYWluBnVpbnQxNgtuZWFyYnlfaW5mbwAFCmNhbl90cmF2ZWwEYm9vbAdjdXJyZW50DGVudGl0eV9zdGF0ZQlwcm9qZWN0ZWQMZW50aXR5X3N0YXRlCm1heF9lbmVyZ3kGdWludDE2B3N5c3RlbXMPbmVhcmJ5X3N5c3RlbVtdDW5lYXJieV9zeXN0ZW0ABAhkaXN0YW5jZQZ1aW50NjQLZW5lcmd5X2Nvc3QGdWludDY0C2ZsaWdodF90aW1lBnVpbnQzMghsb2NhdGlvbg1sb2NhdGlvbl9pbmZvB3BheWxvYW4AAgdhY2NvdW50BG5hbWUGYW1vdW50BnVpbnQ2NAtwbGF5ZXJfaW5mbwALBW93bmVyBG5hbWUJaXNfcGxheWVyBGJvb2wMY29tcGFueV9uYW1lBnN0cmluZwdiYWxhbmNlBnVpbnQ2NARkZWJ0BnVpbnQzMghuZXR3b3J0aAVpbnQ2NA5hdmFpbGFibGVfbG9hbgZ1aW50NjQPbmV4dF9zaGlwX3ByaWNlBnVpbnQ2NBRuZXh0X3dhcmVob3VzZV9wcmljZQZ1aW50NjQKc2hpcF9jb3VudAZ1aW50NjQPd2FyZWhvdXNlX2NvdW50BnVpbnQ2NApwbGF5ZXJfcm93AAQFb3duZXIEbmFtZQdiYWxhbmNlBnVpbnQ2NARkZWJ0BnVpbnQzMghuZXR3b3J0aAVpbnQ2NAtwdXJnZXN1cHBseQABCG1heF9yb3dzB3VpbnQ2ND8IcmVjaGFyZ2UAAgtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAdyZXNvbHZlAAILZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQLcmVzb2x2ZV9sb2cADQVvd25lcgRuYW1lC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAp0YXNrX2luZGV4BXVpbnQ4BHRhc2sEdGFzawpzdGFydGVkX2F0CnRpbWVfcG9pbnQMY29tcGxldGVkX2F0CnRpbWVfcG9pbnQKbmV3X2VuZXJneQd1aW50MTY/DG5ld19sb2NhdGlvbgxjb29yZGluYXRlcz8PY2FyZ29tYXNzX2RlbHRhBWludDY0C2NhcmdvX2FkZGVkDGNhcmdvX2l0ZW1bXQ1jYXJnb19yZW1vdmVkDGNhcmdvX2l0ZW1bXQdjcmVkaXRzBmludDY0Pw9yZXNvbHZlX3Jlc3VsdHMABAllbnRpdHlfaWQGdWludDY0C2VudGl0eV90eXBlBG5hbWUOcmVzb2x2ZWRfY291bnQFdWludDgUbmV3X3NjaGVkdWxlX3N0YXJ0ZWQLdGltZV9wb2ludD8Ec2FsdAABBHNhbHQGdWludDY0CHNjaGVkdWxlAAIHc3RhcnRlZAp0aW1lX3BvaW50BXRhc2tzBnRhc2tbXQlzZWxsZ29vZHMAAwdzaGlwX2lkBnVpbnQ2NAdnb29kX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIMc2VxdWVuY2Vfcm93AAIDa2V5BG5hbWUFdmFsdWUGdWludDY0CHNoaXBfcm93AAsCaWQGdWludDY0BW93bmVyBG5hbWUEbmFtZQZzdHJpbmcIbG9jYXRpb24LY29vcmRpbmF0ZXMEbWFzcwZ1aW50MzIIY2FwYWNpdHkGdWludDMyBmVuZXJneQZ1aW50MTYHZW5naW5lcw5tb3ZlbWVudF9zdGF0cwlnZW5lcmF0b3IMZW5lcmd5X3N0YXRzB2xvYWRlcnMMbG9hZGVyX3N0YXRzCHNjaGVkdWxlCXNjaGVkdWxlPwlzdGF0ZV9yb3cABgdlbmFibGVkBGJvb2wFZXBvY2gGdWludDMyBHNhbHQGdWludDY0BXNoaXBzBnVpbnQzMgRzZWVkC2NoZWNrc3VtMjU2BmNvbW1pdAtjaGVja3N1bTI1Ngh0YWtlbG9hbgACB2FjY291bnQEbmFtZQZhbW91bnQGdWludDY0BHRhc2sABwR0eXBlBXVpbnQ4CGR1cmF0aW9uBnVpbnQzMgpjYW5jZWxhYmxlBXVpbnQ4CGxvY2F0aW9uDGNvb3JkaW5hdGVzPwVjYXJnbwxjYXJnb19pdGVtW10GZW50aXR5B3VpbnQ2ND8HY3JlZGl0cwZpbnQ2ND8MdGFza19yZXN1bHRzAAEIZW50aXRpZXMSZW50aXR5X3Rhc2tfaW5mb1tdCHRyYW5zZmVyAAYLc291cmNlX3R5cGUEbmFtZQlzb3VyY2VfaWQGdWludDY0CWRlc3RfdHlwZQRuYW1lB2Rlc3RfaWQGdWludDY0B2dvb2RfaWQGdWludDE2CHF1YW50aXR5BnVpbnQzMgZ0cmF2ZWwABQtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAF4BWludDY0AXkFaW50NjQIcmVjaGFyZ2UEYm9vbAl0eXBlc19yb3cAAgJpZAZ1aW50NjQTZW50aXR5X3N1bW1hcnlfdHlwZQ5lbnRpdHlfc3VtbWFyeQx1cGRhdGVjcmVkaXQAAgdhY2NvdW50BG5hbWUGYW1vdW50BWludDY0CnVwZGF0ZWRlYnQAAgdhY2NvdW50BG5hbWUGYW1vdW50BWludDY0DXdhcmVob3VzZV9yb3cABwJpZAZ1aW50NjQFb3duZXIEbmFtZQRuYW1lBnN0cmluZwhsb2NhdGlvbgtjb29yZGluYXRlcwhjYXBhY2l0eQZ1aW50MzIHbG9hZGVycwxsb2FkZXJfc3RhdHMIc2NoZWR1bGUJc2NoZWR1bGU/BHdpcGUAAAx3aXBlc2VxdWVuY2UAACIAAABAoWl2MgdhZHZhbmNl0wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYWR2YW5jZQpzdW1tYXJ5OiAnQWR2YW5jZSB0dXJuJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpBZHZhbmNlIHRoZSBnYW1lIHRvIHRoZSBuZXh0IHR1cm4uAAAAOFHKvD4IYnV5Z29vZHPdAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBidXlnb29kcwpzdW1tYXJ5OiAnQnV5IGdvb2RzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJjaGFzZSBnb29kcyBhbmQgYWRkIHRoZW0gdG8gYSBzaGlwJ3MgY2FyZ28uAAAAoLqGvT4HYnV5c2hpcMYBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGJ1eXNoaXAKc3VtbWFyeTogJ0J1eSBhIG5ldyBzaGlwJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJjaGFzZSBhIG5ldyBzaGlwoLCmTV3DvT4MYnV5d2FyZWhvdXNlzAItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYnV5d2FyZWhvdXNlCnN1bW1hcnk6ICdCdXkgYSBuZXcgd2FyZWhvdXNlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJjaGFzZSBhIG5ldyB3YXJlaG91c2UgYXQgdGhlIGxvY2F0aW9uIG9mIGFuIGlkbGUgc2hpcC4gV2FyZWhvdXNlcyBwcm92aWRlIGNhcmdvIHN0b3JhZ2Ugd2l0aCBsb2FkaW5nL3VubG9hZGluZyBjYXBhYmlsaXRpZXMgYnV0IGNhbm5vdCBtb3ZlLgAAAABEhaZBBmNhbmNlbMcCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNhbmNlbApzdW1tYXJ5OiAnQ2FuY2VsIHNjaGVkdWxlZCB0YXNrcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FuY2VsIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHRhc2tzIGZyb20gdGhlIGVuZCBvZiBhbiBlbnRpdHkncyBzY2hlZHVsZS4gVGFza3MgdGhhdCBhcmUgaW1tdXRhYmxlIGFuZCBpbiBwcm9ncmVzcyBjYW5ub3QgYmUgY2FuY2VsbGVkLgoKLS0tAICKx+RrVEQKY2xlYXJ0YWJsZb4BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNsZWFydGFibGUKc3VtbWFyeTogJ0RFQlVHOiBjbGVhcnRhYmxlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQAAAABkJyVFBmNvbW1pdPEBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNvbW1pdApzdW1tYXJ5OiAnU2V0IGNvbW1pdCB2YWx1ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKU2V0IHRoZSBpbml0aWFsIGNvbW1pdCB2YWx1ZSBkdXJpbmcgZ2FtZSBpbml0aWFsaXphdGlvbi4KCi0tLQAAAACoeMxUBmVuYWJsZeIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGVuYWJsZQpzdW1tYXJ5OiAnU2V0IGVuYWJsZWQgc3RhdGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkVuYWJsZSBvciBkaXNhYmxlIHRoaXMgZ2FtZSBvZiBTaGlwbG9hZC4KCi0tLQCwctnlqbJiC2dldGVudGl0aWVzpAItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0ZW50aXRpZXMKc3VtbWFyeTogJ0dldCBhbGwgZW50aXRpZXMgZm9yIGEgcGxheWVyJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXR1cm5zIGZ1bGwgZW50aXR5IGluZm8gZm9yIGFsbCBlbnRpdGllcyBvd25lZCBieSBhIHBsYXllci4gT3B0aW9uYWxseSBmaWx0ZXIgYnkgZW50aXR5IHR5cGUuAADw2eWpsmIJZ2V0ZW50aXR5ogItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0ZW50aXR5CnN1bW1hcnk6ICdHZXQgZW50aXR5IHN0YXRlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRlIG9mIGFuIGVudGl0eSBpbmNsdWRpbmcgaWRlbnRpdHksIGNhcmdvLCBzY2hlZHVsZSBzdGF0ZSwgYW5kIHR5cGUtc3BlY2lmaWMgZmllbGRzLgAAADhRyrJiCGdldGdvb2RzqgItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0Z29vZHMKc3VtbWFyeTogJ0dldCBhbGwgYXZhaWxhYmxlIGdvb2RzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdHJhZGVhYmxlIGdvb2RzIGluIHRoZSBnYW1lIGluY2x1ZGluZyB0aGVpciBpZCwgbmFtZSwgYmFzZSBwcmljZSwgYW5kIG1hc3MuACZ12SAas2ILZ2V0bG9jYXRpb27iAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRsb2NhdGlvbgpzdW1tYXJ5OiAnR2V0IGxvY2F0aW9uIGluZm9ybWF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEgbG9jYXRpb24gaW5jbHVkaW5nIHdoZXRoZXIgYSBzeXN0ZW0gZXhpc3RzLCBhbmQgZm9yIGVhY2ggZ29vZDogcHJpY2UsIHN1cHBseSwgcmFyaXR5IG11bHRpcGxpZXIsIGFuZCBsb2NhdGlvbiBtdWx0aXBsaWVyLgAA8OcaNbNiCWdldG5lYXJied4DLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldG5lYXJieQpzdW1tYXJ5OiAnR2V0IG5lYXJieSByZWFjaGFibGUgc3lzdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBuZWFyYnkgc3lzdGVtcyByZWFjaGFibGUgYnkgYW4gZW50aXR5IGZyb20gaXRzIHByb2plY3RlZCBsb2NhdGlvbi4gUmV0dXJucyBjdXJyZW50IHN0YXRlICh3aXRoIGNvbXBsZXRlZCB0YXNrcyByZXNvbHZlZCksIHByb2plY3RlZCBzdGF0ZSAoYWZ0ZXIgYWxsIHNjaGVkdWxlZCB0YXNrcyksIGFuZCBhIGxpc3Qgb2YgcmVhY2hhYmxlIHN5c3RlbXMgd2l0aCBkaXN0YW5jZSwgZW5lcmd5IGNvc3QsIGZsaWdodCB0aW1lLCBhbmQgbWFya2V0IGluZm9ybWF0aW9uLgAAuMqbWLNiCWdldHBsYXllcv0CLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHBsYXllcgpzdW1tYXJ5OiAnR2V0IHBsYXllciBpbmZvcm1hdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBhIHBsYXllciBpbmNsdWRpbmcgYmFsYW5jZSwgZGVidCwgbmV0d29ydGgsIGVudGl0eSBjb3VudHMsIGFuZCBwcmljaW5nIGZvciBuZXh0IHB1cmNoYXNlcy4gUmV0dXJucyBpc19wbGF5ZXI9ZmFsc2UgaWYgdGhlIGFjY291bnQgaGFzIG5vdCBqb2luZWQgdGhlIGdhbWUugJW7RkqNs2IMZ2V0c3VtbWFyaWVz6AItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0c3VtbWFyaWVzCnN1bW1hcnk6ICdHZXQgZW50aXR5IHN1bW1hcmllcyBmb3IgYSBwbGF5ZXInCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJldHVybnMgbGlnaHR3ZWlnaHQgc3VtbWFyaWVzIG9mIGFsbCBlbnRpdGllcyBvd25lZCBieSBhIHBsYXllciBpbmNsdWRpbmcgdHlwZSwgaWQsIG93bmVyLCBuYW1lLCBsb2NhdGlvbiwgYW5kIGlkbGUgc3RhdHVzLiBPcHRpb25hbGx5IGZpbHRlciBieSBlbnRpdHkgdHlwZS4AAAAAANCwaQRoYXNo/QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaGFzaApzdW1tYXJ5OiAnQ2FsY3VsYXRlIHNoYTI1NiBoYXNoJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYWxjdWxhdGVzIHRoZSBzaGEyNTYgaGFzaCBvZiBhIHN0cmluZyBiYXNlZCB1c2luZyB0aGUgZ2FtZSBzZWVkLgoKLS0tAAAAQITSsGkHaGFzaDUxMvsBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGhhc2g1MTIKc3VtbWFyeTogJ0NhbGN1bGF0ZSBzaGE1MTIgaGFzaCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FsY3VsYXRlcyB0aGUgc2hhNTEyIGhhc2ggb2YgYSBzdHJpbmcgYmFzZWQgdXNpbmcgdGhlIGdhbWUgc2VlZC4AAAAAAJDddARpbml0+gEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaW5pdApzdW1tYXJ5OiAnSW5pdGlhbGl6ZSBnYW1lIHNlZWQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYWxpemUgYSB0aGUgZ2FtZXMgc2VlZCBhbmQgc2VlZCB2YWx1ZXMgdG8gYm9vdHN0cmFwIGdhbWUgc3RhdGUuAAAAAAAwHX0Eam9pbskBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGpvaW4Kc3VtbWFyeTogJ0pvaW4gYSBnYW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpKb2luIGEgZ2FtZSBvZiBTaGlwbG9hZAoKLS0tAACICk2DGI0JbG9nY2FuY2VsAACA2pFidRmNCmxvZ3Jlc29sdmUAAAAAYBoavakHcGF5bG9hbq8BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHBheWxvYW4Kc3VtbWFyeTogJ0xvYW4gUGF5bWVudCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQB8rFVjxa6uC3B1cmdlc3VwcGx56QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcHVyZ2VzdXBwbHkKc3VtbWFyeTogJ1VwZGF0ZSBHYW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJnZSBvbGQgc3VwcGx5IHJlY29yZHMgYW5kIGhlbHAgY2xlYW51cCBnYW1lIHN0YXRlLgAAAIpd05C6CHJlY2hhcmdl0gItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcmVjaGFyZ2UKc3VtbWFyeTogJ1JlY2hhcmdlIHNoaXAgZW5lcmd5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTY2hlZHVsZSBhIHJlY2hhcmdlIHRhc2sgZm9yIGFuIGVudGl0eSB0byByZXN0b3JlIGVuZXJneSB0byBmdWxsIGNhcGFjaXR5LiBUaGUgcmVjaGFyZ2UgZHVyYXRpb24gZGVwZW5kcyBvbiBjdXJyZW50IGVuZXJneSBsZXZlbCBhbmQgcmVjaGFyZ2UgcmF0ZS4KCi0tLQAAAEDtSLG6B3Jlc29sdmXEAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiByZXNvbHZlCnN1bW1hcnk6ICdDb21wbGV0ZSBzY2hlZHVsZWQgdGFza3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJlc29sdmUgYWxsIGNvbXBsZXRlZCB0YXNrcyBpbiBhbiBlbnRpdHkncyBzY2hlZHVsZSwgYXBwbHlpbmcgdGhlaXIgZWZmZWN0cyAocmVjaGFyZ2UgZW5lcmd5LCB1cGRhdGUgbG9jYXRpb24sIGxvYWQvdW5sb2FkIGNhcmdvKS4KCi0tLQAAAAAAkKPBBHNhbHTdAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBzYWx0CnN1bW1hcnk6ICdBcHBlbmQgU2FsdCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQWRkIGFkZGl0aW9uYWwgc2FsdCB0byB0aGUgbmV4dCBlcG9jaCBzZWVkLgoKLS0tAADAiVIWo8IJc2VsbGdvb2Rz1QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc2VsbGdvb2RzCnN1bW1hcnk6ICdTZWxsIGdvb2RzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTZWxsIGdvb2RzIGZyb20gYSBzaGlwJ3MgY2FyZ28uCgotLS0AAADT0KigyQh0YWtlbG9hbuoBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRha2Vsb2FuCnN1bW1hcnk6ICdDcmVkaXQgTG9hbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQm9ycm93IGNyZWRpdHMgZnJvbSB0aGUgYmFuayB0aGF0IHdpbGwgbmVlZCB0byBiZSByZXBhaWQuAAAAVy08zc0IdHJhbnNmZXLIAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB0cmFuc2ZlcgpzdW1tYXJ5OiAnVHJhbnNmZXIgY2FyZ28gYmV0d2VlbiBlbnRpdGllcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVHJhbnNmZXIgY2FyZ28gYmV0d2VlbiB0d28gZW50aXRpZXMgYXQgdGhlIHNhbWUgbG9jYXRpb24uIEJvdGggZW50aXRpZXMgbXVzdCBiZSBvd25lZCBieSB0aGUgY2FsbGVyIGFuZCBhdCBsZWFzdCBvbmUgbXVzdCBoYXZlIGxvYWRlcnMuIENyZWF0ZXMgbG9hZCBhbmQgdW5sb2FkIHRhc2tzIG9uIGJvdGggZW50aXRpZXMgd2l0aCBkdXJhdGlvbiBiYXNlZCBvbiBjb21iaW5lZCBsb2FkZXIgY2FwYWNpdHkgYW5kIFotZGlzdGFuY2UgYmV0d2VlbiB0aGVtLgAAAABEtc3NBnRyYXZlbMsCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRyYXZlbApzdW1tYXJ5OiAnTW92ZSBhIHNoaXAnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYXRlIHRyYXZlbCBvZiBhbiBlbnRpdHkgZnJvbSBpdHMgY3VycmVudCBsb2NhdGlvbiB0byBhIG5ldyBkZXN0aW5hdGlvbi4KCi0tLQoKVGhpcyBhY3Rpb24gZGV0ZXJtaW5lcyB0aGUgbWFya2V0IHByaWNlIG9mIGFsbCBnb29kcyBhdCBhIGdpdmVuIGxvY2F0aW9uLpBdUhepbFLVDHVwZGF0ZWNyZWRpdMIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHVwZGF0ZWNyZWRpdApzdW1tYXJ5OiAnREVCVUc6IHVwZGF0ZWNyZWRpdCBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0AQD4qqWxS1Qp1cGRhdGVkZWJ0vgEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdXBkYXRlZGVidApzdW1tYXJ5OiAnREVCVUc6IHVwZGF0ZWRlYnQgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAAAAAACgquMEd2lwZbIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGUKc3VtbWFyeTogJ0RFQlVHOiB3aXBlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLaDQVNoqrKrjDHdpcGVzZXF1ZW5jZcIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGVzZXF1ZW5jZQpzdW1tYXJ5OiAnREVCVUc6IHdpcGVzZXF1ZW5jZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0IAAAAAADKrkEDaTY0AAAJY2FyZ29fcm93AAAAk7psEI0DaTY0AAAMbG9jYXRpb25fcm93AAAAAFzlTawDaTY0AAAKcGxheWVyX3JvdwAAAApNpa3CA2k2NAAADHNlcXVlbmNlX3JvdwAAAAAAUF3DA2k2NAAACHNoaXBfcm93AAAAAACVTcYDaTY0AAAJc3RhdGVfcm93AAAAAACsqs8DaTY0AAAJdHlwZXNfcm93AABQWNOmruEDaTY0AAANd2FyZWhvdXNlX3JvdwERU2hpcGxvYWQgKFNlcnZlcikRU2hpcGxvYWQgKFNlcnZlcikAAAAQAAAAOFHKvD4MdGFza19yZXN1bHRzAAAAAESFpkEOY2FuY2VsX3Jlc3VsdHMAsHLZ5amyYg1lbnRpdHlfaW5mb1tdAADw2eWpsmILZW50aXR5X2luZm8AAAA4UcqyYgpnb29kc19pbmZvACZ12SAas2INbG9jYXRpb25faW5mbwAA8OcaNbNiC25lYXJieV9pbmZvAAC4yptYs2ILcGxheWVyX2luZm+AlbtGSo2zYhBlbnRpdHlfc3VtbWFyeVtdAAAAAADQsGkLY2hlY2tzdW0yNTYAAABAhNKwaQtjaGVja3N1bTUxMgAAAIpd05C6DHRhc2tfcmVzdWx0cwAAAEDtSLG6D3Jlc29sdmVfcmVzdWx0cwAAwIlSFqPCDHRhc2tfcmVzdWx0cwAAAFctPM3NDHRhc2tfcmVzdWx0cwAAAABEtc3NDHRhc2tfcmVzdWx0cw=='
28
30
  )
29
31
  export const abi = ABI.from(abiBlob)
30
32
  export namespace Types {
31
33
  @Struct.type('advance')
32
34
  export class advance extends Struct {
33
35
  @Struct.field('string')
34
- reveal!: string
36
+ declare reveal: string
35
37
  @Struct.field(Checksum256)
36
- commit!: Checksum256
37
- }
38
- @Struct.type('arrive')
39
- export class arrive extends Struct {
40
- @Struct.field(UInt64)
41
- id!: UInt64
38
+ declare commit: Checksum256
42
39
  }
43
40
  @Struct.type('buygoods')
44
41
  export class buygoods extends Struct {
45
42
  @Struct.field(UInt64)
46
- ship_id!: UInt64
47
- @Struct.field(UInt64)
48
- good_id!: UInt64
49
- @Struct.field(UInt64)
50
- quantity!: UInt64
43
+ declare ship_id: UInt64
44
+ @Struct.field(UInt16)
45
+ declare good_id: UInt16
46
+ @Struct.field(UInt32)
47
+ declare quantity: UInt32
51
48
  }
52
49
  @Struct.type('buyship')
53
50
  export class buyship extends Struct {
54
51
  @Struct.field(Name)
55
- account!: Name
52
+ declare account: Name
56
53
  @Struct.field('string')
57
- name!: string
54
+ declare name: string
55
+ }
56
+ @Struct.type('buywarehouse')
57
+ export class buywarehouse extends Struct {
58
+ @Struct.field(Name)
59
+ declare account: Name
60
+ @Struct.field(UInt64)
61
+ declare ship_id: UInt64
62
+ @Struct.field('string')
63
+ declare name: string
64
+ }
65
+ @Struct.type('cancel')
66
+ export class cancel extends Struct {
67
+ @Struct.field(Name)
68
+ declare entity_type: Name
69
+ @Struct.field(UInt64)
70
+ declare id: UInt64
71
+ @Struct.field(UInt64)
72
+ declare count: UInt64
73
+ }
74
+ @Struct.type('coordinates')
75
+ export class coordinates extends Struct {
76
+ @Struct.field(Int64)
77
+ declare x: Int64
78
+ @Struct.field(Int64)
79
+ declare y: Int64
80
+ @Struct.field(UInt16, {optional: true})
81
+ declare z?: UInt16
82
+ }
83
+ @Struct.type('cargo_item')
84
+ export class cargo_item extends Struct {
85
+ @Struct.field(UInt16)
86
+ declare good_id: UInt16
87
+ @Struct.field(UInt32)
88
+ declare quantity: UInt32
89
+ @Struct.field(UInt64)
90
+ declare unit_cost: UInt64
91
+ }
92
+ @Struct.type('task')
93
+ export class task extends Struct {
94
+ @Struct.field(UInt8)
95
+ declare type: UInt8
96
+ @Struct.field(UInt32)
97
+ declare duration: UInt32
98
+ @Struct.field(UInt8)
99
+ declare cancelable: UInt8
100
+ @Struct.field(coordinates, {optional: true})
101
+ declare location?: coordinates
102
+ @Struct.field(cargo_item, {array: true})
103
+ declare cargo: cargo_item[]
104
+ @Struct.field(UInt64, {optional: true})
105
+ declare entity?: UInt64
106
+ @Struct.field(Int64, {optional: true})
107
+ declare credits?: Int64
108
+ }
109
+ @Struct.type('cancel_log')
110
+ export class cancel_log extends Struct {
111
+ @Struct.field(Name)
112
+ declare owner: Name
113
+ @Struct.field(Name)
114
+ declare entity_type: Name
115
+ @Struct.field(UInt64)
116
+ declare entity_id: UInt64
117
+ @Struct.field(UInt8)
118
+ declare task_index: UInt8
119
+ @Struct.field(task)
120
+ declare task: task
121
+ @Struct.field(TimePoint)
122
+ declare started_at: TimePoint
123
+ }
124
+ @Struct.type('cancel_results')
125
+ export class cancel_results extends Struct {
126
+ @Struct.field(UInt64)
127
+ declare entity_id: UInt64
128
+ @Struct.field(Name)
129
+ declare entity_type: Name
130
+ @Struct.field(UInt8)
131
+ declare cancelled_count: UInt8
132
+ @Struct.field(TimePoint, {optional: true})
133
+ declare schedule_started?: TimePoint
58
134
  }
59
135
  @Struct.type('cargo_row')
60
136
  export class cargo_row extends Struct {
61
137
  @Struct.field(UInt64)
62
- id!: UInt64
138
+ declare id: UInt64
63
139
  @Struct.field(UInt64)
64
- ship_id!: UInt64
140
+ declare entity_id: UInt64
65
141
  @Struct.field(UInt64)
66
- good_id!: UInt64
142
+ declare good_id: UInt64
67
143
  @Struct.field(UInt64)
68
- paid!: UInt64
69
- @Struct.field(UInt32)
70
- owned!: UInt32
71
- @Struct.field(UInt32)
72
- loaded!: UInt32
144
+ declare quantity: UInt64
145
+ @Struct.field(UInt64)
146
+ declare unit_cost: UInt64
73
147
  }
74
148
  @Struct.type('cleartable')
75
149
  export class cleartable extends Struct {
76
150
  @Struct.field(Name)
77
- table_name!: Name
151
+ declare table_name: Name
78
152
  @Struct.field(Name, {optional: true})
79
- scope?: Name
153
+ declare scope?: Name
80
154
  @Struct.field(UInt64, {optional: true})
81
- max_rows?: UInt64
155
+ declare max_rows?: UInt64
82
156
  }
83
157
  @Struct.type('commit')
84
158
  export class commit extends Struct {
85
159
  @Struct.field(Checksum256)
86
- commit!: Checksum256
87
- }
88
- @Struct.type('coordinates')
89
- export class coordinates extends Struct {
90
- @Struct.field(Int64)
91
- x!: Int64
92
- @Struct.field(Int64)
93
- y!: Int64
160
+ declare commit: Checksum256
94
161
  }
95
162
  @Struct.type('enable')
96
163
  export class enable extends Struct {
97
164
  @Struct.field('bool')
98
- enabled!: boolean
165
+ declare enabled: boolean
99
166
  }
100
- @Struct.type('good_price')
101
- export class good_price extends Struct {
167
+ @Struct.type('energy_stats')
168
+ export class energy_stats extends Struct {
102
169
  @Struct.field(UInt16)
103
- id!: UInt16
170
+ declare capacity: UInt16
171
+ @Struct.field(UInt16)
172
+ declare recharge: UInt16
173
+ }
174
+ @Struct.type('loader_stats')
175
+ export class loader_stats extends Struct {
176
+ @Struct.field(UInt32)
177
+ declare mass: UInt32
178
+ @Struct.field(UInt16)
179
+ declare thrust: UInt16
180
+ @Struct.field(UInt8)
181
+ declare quantity: UInt8
182
+ }
183
+ @Struct.type('movement_stats')
184
+ export class movement_stats extends Struct {
185
+ @Struct.field(UInt32)
186
+ declare thrust: UInt32
187
+ @Struct.field(UInt16)
188
+ declare drain: UInt16
189
+ }
190
+ @Struct.type('schedule')
191
+ export class schedule extends Struct {
192
+ @Struct.field(TimePoint)
193
+ declare started: TimePoint
194
+ @Struct.field(task, {array: true})
195
+ declare tasks: task[]
196
+ }
197
+ @Struct.type('entity_info')
198
+ export class entity_info extends Struct {
199
+ @Struct.field(Name)
200
+ declare type: Name
104
201
  @Struct.field(UInt64)
105
- price!: UInt64
202
+ declare id: UInt64
203
+ @Struct.field(Name)
204
+ declare owner: Name
205
+ @Struct.field('string')
206
+ declare entity_name: string
207
+ @Struct.field(coordinates)
208
+ declare location: coordinates
209
+ @Struct.field(UInt32)
210
+ declare cargomass: UInt32
211
+ @Struct.field(cargo_item, {array: true})
212
+ declare cargo: cargo_item[]
213
+ @Struct.field(loader_stats, {optional: true})
214
+ declare loaders?: loader_stats
215
+ @Struct.field(UInt16, {optional: true})
216
+ declare energy?: UInt16
217
+ @Struct.field(UInt32, {optional: true})
218
+ declare mass?: UInt32
219
+ @Struct.field(movement_stats, {optional: true})
220
+ declare engines?: movement_stats
221
+ @Struct.field(energy_stats, {optional: true})
222
+ declare generator?: energy_stats
223
+ @Struct.field(UInt32, {optional: true})
224
+ declare capacity?: UInt32
225
+ @Struct.field('bool')
226
+ declare is_idle: boolean
227
+ @Struct.field(task, {optional: true})
228
+ declare current_task?: task
229
+ @Struct.field(UInt32)
230
+ declare current_task_elapsed: UInt32
231
+ @Struct.field(UInt32)
232
+ declare current_task_remaining: UInt32
233
+ @Struct.field(task, {array: true})
234
+ declare pending_tasks: task[]
235
+ @Struct.field(TimePoint, {optional: true})
236
+ declare idle_at?: TimePoint
237
+ @Struct.field(schedule, {optional: true})
238
+ declare schedule?: schedule
239
+ }
240
+ @Struct.type('entity_state')
241
+ export class entity_state extends Struct {
242
+ @Struct.field(coordinates)
243
+ declare location: coordinates
244
+ @Struct.field(UInt16)
245
+ declare energy: UInt16
246
+ }
247
+ @Struct.type('entity_summary')
248
+ export class entity_summary extends Struct {
249
+ @Struct.field(Name)
250
+ declare type: Name
106
251
  @Struct.field(UInt64)
107
- supply!: UInt64
252
+ declare id: UInt64
253
+ @Struct.field(Name)
254
+ declare owner: Name
255
+ @Struct.field('string')
256
+ declare entity_name: string
257
+ @Struct.field(coordinates)
258
+ declare location: coordinates
259
+ @Struct.field('bool')
260
+ declare is_idle: boolean
261
+ @Struct.field(UInt32)
262
+ declare resolved_count: UInt32
263
+ @Struct.field(UInt32)
264
+ declare pending_count: UInt32
265
+ }
266
+ @Struct.type('entity_task_info')
267
+ export class entity_task_info extends Struct {
268
+ @Struct.field(UInt64)
269
+ declare entity_id: UInt64
270
+ @Struct.field(Name)
271
+ declare entity_type: Name
272
+ @Struct.field(UInt8)
273
+ declare task_count: UInt8
274
+ @Struct.field(TimePoint)
275
+ declare schedule_started: TimePoint
276
+ }
277
+ @Struct.type('getentities')
278
+ export class getentities extends Struct {
279
+ @Struct.field(Name)
280
+ declare owner: Name
281
+ @Struct.field(Name, {optional: true})
282
+ declare entity_type?: Name
283
+ }
284
+ @Struct.type('getentity')
285
+ export class getentity extends Struct {
286
+ @Struct.field(Name)
287
+ declare entity_type: Name
288
+ @Struct.field(UInt64)
289
+ declare entity_id: UInt64
290
+ }
291
+ @Struct.type('getgoods')
292
+ export class getgoods extends Struct {}
293
+ @Struct.type('getlocation')
294
+ export class getlocation extends Struct {
295
+ @Struct.field(Int64)
296
+ declare x: Int64
297
+ @Struct.field(Int64)
298
+ declare y: Int64
299
+ }
300
+ @Struct.type('getnearby')
301
+ export class getnearby extends Struct {
302
+ @Struct.field(Name)
303
+ declare entity_type: Name
304
+ @Struct.field(UInt64)
305
+ declare entity_id: UInt64
306
+ @Struct.field('bool')
307
+ declare recharge: boolean
308
+ }
309
+ @Struct.type('getplayer')
310
+ export class getplayer extends Struct {
311
+ @Struct.field(Name)
312
+ declare account: Name
313
+ }
314
+ @Struct.type('getsummaries')
315
+ export class getsummaries extends Struct {
316
+ @Struct.field(Name)
317
+ declare owner: Name
318
+ @Struct.field(Name, {optional: true})
319
+ declare entity_type?: Name
320
+ }
321
+ @Struct.type('good')
322
+ export class good extends Struct {
323
+ @Struct.field(UInt16)
324
+ declare id: UInt16
325
+ @Struct.field(UInt32)
326
+ declare base_price: UInt32
327
+ @Struct.field(UInt32)
328
+ declare mass: UInt32
329
+ }
330
+ @Struct.type('goods_info')
331
+ export class goods_info extends Struct {
332
+ @Struct.field(good, {array: true})
333
+ declare goods: good[]
108
334
  }
109
335
  @Struct.type('hash')
110
336
  export class hash extends Struct {
111
337
  @Struct.field('string')
112
- value!: string
338
+ declare value: string
113
339
  }
114
340
  @Struct.type('hash512')
115
341
  export class hash512 extends Struct {
116
342
  @Struct.field('string')
117
- value!: string
343
+ declare value: string
118
344
  }
119
345
  @Struct.type('init')
120
346
  export class init extends Struct {
121
347
  @Struct.field(Checksum256)
122
- seed!: Checksum256
123
- }
124
- @Struct.type('jettison')
125
- export class jettison extends Struct {
126
- @Struct.field(UInt64)
127
- ship_id!: UInt64
128
- @Struct.field(UInt16)
129
- good_id!: UInt16
130
- @Struct.field(UInt64)
131
- quantity!: UInt64
348
+ declare seed: Checksum256
132
349
  }
133
350
  @Struct.type('join')
134
351
  export class join extends Struct {
135
352
  @Struct.field(Name)
136
- account!: Name
353
+ declare account: Name
137
354
  }
138
- @Struct.type('loader_stats')
139
- export class loader_stats extends Struct {
355
+ @Struct.type('location_good')
356
+ export class location_good extends Struct {
357
+ @Struct.field(UInt16)
358
+ declare id: UInt16
140
359
  @Struct.field(UInt32)
141
- mass!: UInt32
360
+ declare price: UInt32
142
361
  @Struct.field(UInt16)
143
- quantity!: UInt16
362
+ declare supply: UInt16
363
+ @Struct.field(UInt32)
364
+ declare rarity_multiplier: UInt32
144
365
  @Struct.field(UInt32)
145
- thrust!: UInt32
366
+ declare location_multiplier: UInt32
367
+ }
368
+ @Struct.type('location_info')
369
+ export class location_info extends Struct {
370
+ @Struct.field(coordinates)
371
+ declare coords: coordinates
372
+ @Struct.field('bool')
373
+ declare is_system: boolean
374
+ @Struct.field(location_good, {array: true})
375
+ declare goods: location_good[]
146
376
  }
147
377
  @Struct.type('location_row')
148
378
  export class location_row extends Struct {
149
379
  @Struct.field(UInt64)
150
- id!: UInt64
380
+ declare id: UInt64
151
381
  @Struct.field(coordinates)
152
- coordinates!: coordinates
382
+ declare coordinates: coordinates
153
383
  @Struct.field(UInt64)
154
- epoch!: UInt64
384
+ declare epoch: UInt64
155
385
  @Struct.field(UInt16)
156
- good_id!: UInt16
386
+ declare good_id: UInt16
157
387
  @Struct.field(UInt16)
158
- supply!: UInt16
388
+ declare supply: UInt16
159
389
  }
160
- @Struct.type('marketprice')
161
- export class marketprice extends Struct {
162
- @Struct.field(coordinates)
163
- location!: coordinates
164
- @Struct.field(UInt16)
165
- good_id!: UInt16
390
+ @Struct.type('logcancel')
391
+ export class logcancel extends Struct {
392
+ @Struct.field(cancel_log)
393
+ declare log: cancel_log
166
394
  }
167
- @Struct.type('marketprices')
168
- export class marketprices extends Struct {
169
- @Struct.field(coordinates)
170
- location!: coordinates
395
+ @Struct.type('resolve_log')
396
+ export class resolve_log extends Struct {
397
+ @Struct.field(Name)
398
+ declare owner: Name
399
+ @Struct.field(Name)
400
+ declare entity_type: Name
401
+ @Struct.field(UInt64)
402
+ declare entity_id: UInt64
403
+ @Struct.field(UInt8)
404
+ declare task_index: UInt8
405
+ @Struct.field(task)
406
+ declare task: task
407
+ @Struct.field(TimePoint)
408
+ declare started_at: TimePoint
409
+ @Struct.field(TimePoint)
410
+ declare completed_at: TimePoint
411
+ @Struct.field(UInt16, {optional: true})
412
+ declare new_energy?: UInt16
413
+ @Struct.field(coordinates, {optional: true})
414
+ declare new_location?: coordinates
415
+ @Struct.field(Int64)
416
+ declare cargomass_delta: Int64
417
+ @Struct.field(cargo_item, {array: true})
418
+ declare cargo_added: cargo_item[]
419
+ @Struct.field(cargo_item, {array: true})
420
+ declare cargo_removed: cargo_item[]
421
+ @Struct.field(Int64, {optional: true})
422
+ declare credits?: Int64
423
+ }
424
+ @Struct.type('logresolve')
425
+ export class logresolve extends Struct {
426
+ @Struct.field(resolve_log)
427
+ declare log: resolve_log
428
+ }
429
+ @Struct.type('nearby_system')
430
+ export class nearby_system extends Struct {
431
+ @Struct.field(UInt64)
432
+ declare distance: UInt64
433
+ @Struct.field(UInt64)
434
+ declare energy_cost: UInt64
435
+ @Struct.field(UInt32)
436
+ declare flight_time: UInt32
437
+ @Struct.field(location_info)
438
+ declare location: location_info
439
+ }
440
+ @Struct.type('nearby_info')
441
+ export class nearby_info extends Struct {
442
+ @Struct.field('bool')
443
+ declare can_travel: boolean
444
+ @Struct.field(entity_state)
445
+ declare current: entity_state
446
+ @Struct.field(entity_state)
447
+ declare projected: entity_state
448
+ @Struct.field(UInt16)
449
+ declare max_energy: UInt16
450
+ @Struct.field(nearby_system, {array: true})
451
+ declare systems: nearby_system[]
171
452
  }
172
453
  @Struct.type('payloan')
173
454
  export class payloan extends Struct {
174
455
  @Struct.field(Name)
175
- account!: Name
456
+ declare account: Name
176
457
  @Struct.field(UInt64)
177
- amount!: UInt64
458
+ declare amount: UInt64
178
459
  }
179
- @Struct.type('player_row')
180
- export class player_row extends Struct {
460
+ @Struct.type('player_info')
461
+ export class player_info extends Struct {
181
462
  @Struct.field(Name)
182
- owner!: Name
183
- @Struct.field(UInt64)
184
- balance!: UInt64
463
+ declare owner: Name
464
+ @Struct.field('bool')
465
+ declare is_player: boolean
466
+ @Struct.field('string')
467
+ declare company_name: string
185
468
  @Struct.field(UInt64)
186
- debt!: UInt64
469
+ declare balance: UInt64
470
+ @Struct.field(UInt32)
471
+ declare debt: UInt32
187
472
  @Struct.field(Int64)
188
- networth!: Int64
189
- }
190
- @Struct.type('salt')
191
- export class salt extends Struct {
473
+ declare networth: Int64
192
474
  @Struct.field(UInt64)
193
- salt!: UInt64
194
- }
195
- @Struct.type('sellgoods')
196
- export class sellgoods extends Struct {
475
+ declare available_loan: UInt64
197
476
  @Struct.field(UInt64)
198
- ship_id!: UInt64
477
+ declare next_ship_price: UInt64
199
478
  @Struct.field(UInt64)
200
- good_id!: UInt64
479
+ declare next_warehouse_price: UInt64
201
480
  @Struct.field(UInt64)
202
- quantity!: UInt64
481
+ declare ship_count: UInt64
482
+ @Struct.field(UInt64)
483
+ declare warehouse_count: UInt64
203
484
  }
204
- @Struct.type('sequence_row')
205
- export class sequence_row extends Struct {
485
+ @Struct.type('player_row')
486
+ export class player_row extends Struct {
206
487
  @Struct.field(Name)
207
- key!: Name
488
+ declare owner: Name
208
489
  @Struct.field(UInt64)
209
- value!: UInt64
210
- }
211
- @Struct.type('ship_state')
212
- export class ship_state extends Struct {
490
+ declare balance: UInt64
213
491
  @Struct.field(UInt32)
214
- energy!: UInt32
492
+ declare debt: UInt32
493
+ @Struct.field(Int64)
494
+ declare networth: Int64
215
495
  }
216
- @Struct.type('ship_stats')
217
- export class ship_stats extends Struct {
218
- @Struct.field(UInt32)
219
- capacity!: UInt32
220
- @Struct.field(UInt32)
221
- drain!: UInt32
496
+ @Struct.type('purgesupply')
497
+ export class purgesupply extends Struct {
498
+ @Struct.field(UInt64, {optional: true})
499
+ declare max_rows?: UInt64
500
+ }
501
+ @Struct.type('recharge')
502
+ export class recharge extends Struct {
503
+ @Struct.field(Name)
504
+ declare entity_type: Name
222
505
  @Struct.field(UInt64)
223
- mass!: UInt64
506
+ declare id: UInt64
507
+ }
508
+ @Struct.type('resolve')
509
+ export class resolve extends Struct {
510
+ @Struct.field(Name)
511
+ declare entity_type: Name
224
512
  @Struct.field(UInt64)
225
- maxmass!: UInt64
226
- @Struct.field(UInt16)
227
- orbit!: UInt16
228
- @Struct.field(UInt32)
229
- recharge!: UInt32
513
+ declare id: UInt64
514
+ }
515
+ @Struct.type('resolve_results')
516
+ export class resolve_results extends Struct {
230
517
  @Struct.field(UInt64)
231
- thrust!: UInt64
518
+ declare entity_id: UInt64
519
+ @Struct.field(Name)
520
+ declare entity_type: Name
521
+ @Struct.field(UInt8)
522
+ declare resolved_count: UInt8
523
+ @Struct.field(TimePoint, {optional: true})
524
+ declare new_schedule_started?: TimePoint
232
525
  }
233
- @Struct.type('travel_plan')
234
- export class travel_plan extends Struct {
235
- @Struct.field(TimePoint)
236
- departure!: TimePoint
237
- @Struct.field(coordinates)
238
- destination!: coordinates
526
+ @Struct.type('salt')
527
+ export class salt extends Struct {
239
528
  @Struct.field(UInt64)
240
- distance!: UInt64
241
- @Struct.field(UInt32)
242
- flighttime!: UInt32
243
- @Struct.field(UInt32)
244
- loadtime!: UInt32
245
- @Struct.field(UInt32)
246
- rechargetime!: UInt32
247
- @Struct.field(UInt32)
248
- masspenalty!: UInt32
529
+ declare salt: UInt64
530
+ }
531
+ @Struct.type('sellgoods')
532
+ export class sellgoods extends Struct {
249
533
  @Struct.field(UInt64)
250
- mass!: UInt64
534
+ declare ship_id: UInt64
535
+ @Struct.field(UInt16)
536
+ declare good_id: UInt16
251
537
  @Struct.field(UInt32)
252
- energyusage!: UInt32
538
+ declare quantity: UInt32
539
+ }
540
+ @Struct.type('sequence_row')
541
+ export class sequence_row extends Struct {
542
+ @Struct.field(Name)
543
+ declare key: Name
544
+ @Struct.field(UInt64)
545
+ declare value: UInt64
253
546
  }
254
547
  @Struct.type('ship_row')
255
548
  export class ship_row extends Struct {
256
549
  @Struct.field(UInt64)
257
- id!: UInt64
550
+ declare id: UInt64
258
551
  @Struct.field(Name)
259
- owner!: Name
552
+ declare owner: Name
260
553
  @Struct.field('string')
261
- name!: string
554
+ declare name: string
262
555
  @Struct.field(coordinates)
263
- location!: coordinates
264
- @Struct.field(UInt8)
265
- skin!: UInt8
266
- @Struct.field(UInt8)
267
- tier!: UInt8
268
- @Struct.field(ship_state)
269
- state!: ship_state
270
- @Struct.field(ship_stats)
271
- stats!: ship_stats
556
+ declare location: coordinates
557
+ @Struct.field(UInt32)
558
+ declare mass: UInt32
559
+ @Struct.field(UInt32)
560
+ declare capacity: UInt32
561
+ @Struct.field(UInt16)
562
+ declare energy: UInt16
563
+ @Struct.field(movement_stats)
564
+ declare engines: movement_stats
565
+ @Struct.field(energy_stats)
566
+ declare generator: energy_stats
272
567
  @Struct.field(loader_stats)
273
- loaders!: loader_stats
274
- @Struct.field(travel_plan, {optional: true})
275
- travelplan?: travel_plan
568
+ declare loaders: loader_stats
569
+ @Struct.field(schedule, {optional: true})
570
+ declare schedule?: schedule
276
571
  }
277
572
  @Struct.type('state_row')
278
573
  export class state_row extends Struct {
279
574
  @Struct.field('bool')
280
- enabled!: boolean
281
- @Struct.field(UInt64)
282
- epoch!: UInt64
575
+ declare enabled: boolean
576
+ @Struct.field(UInt32)
577
+ declare epoch: UInt32
283
578
  @Struct.field(UInt64)
284
- salt!: UInt64
579
+ declare salt: UInt64
285
580
  @Struct.field(UInt32)
286
- ships!: UInt32
581
+ declare ships: UInt32
287
582
  @Struct.field(Checksum256)
288
- seed!: Checksum256
583
+ declare seed: Checksum256
289
584
  @Struct.field(Checksum256)
290
- commit!: Checksum256
585
+ declare commit: Checksum256
291
586
  }
292
587
  @Struct.type('takeloan')
293
588
  export class takeloan extends Struct {
294
589
  @Struct.field(Name)
295
- account!: Name
590
+ declare account: Name
296
591
  @Struct.field(UInt64)
297
- amount!: UInt64
592
+ declare amount: UInt64
298
593
  }
299
- @Struct.type('travel')
300
- export class travel extends Struct {
301
- @Struct.field(UInt64)
302
- id!: UInt64
303
- @Struct.field(coordinates)
304
- destination!: coordinates
305
- @Struct.field('bool')
306
- recharge!: boolean
594
+ @Struct.type('task_results')
595
+ export class task_results extends Struct {
596
+ @Struct.field(entity_task_info, {array: true})
597
+ declare entities: entity_task_info[]
307
598
  }
308
- @Struct.type('travel_summary')
309
- export class travel_summary extends Struct {
310
- @Struct.field(ship_stats)
311
- stats!: ship_stats
312
- @Struct.field(loader_stats)
313
- loaders!: loader_stats
314
- @Struct.field(coordinates)
315
- origin!: coordinates
316
- @Struct.field(coordinates)
317
- destination!: coordinates
599
+ @Struct.type('transfer')
600
+ export class transfer extends Struct {
601
+ @Struct.field(Name)
602
+ declare source_type: Name
318
603
  @Struct.field(UInt64)
319
- distance!: UInt64
604
+ declare source_id: UInt64
605
+ @Struct.field(Name)
606
+ declare dest_type: Name
320
607
  @Struct.field(UInt64)
321
- totalmass!: UInt64
322
- @Struct.field(Float64)
323
- acceleration!: Float64
324
- @Struct.field(UInt32)
325
- flighttime!: UInt32
326
- @Struct.field(UInt32)
327
- energyusage!: UInt32
328
- @Struct.field(UInt32)
329
- rechargetime!: UInt32
608
+ declare dest_id: UInt64
609
+ @Struct.field(UInt16)
610
+ declare good_id: UInt16
330
611
  @Struct.field(UInt32)
331
- masspenalty!: UInt32
332
- @Struct.field(UInt64)
333
- loadtime!: UInt64
334
- @Struct.field(UInt64)
335
- time!: UInt64
612
+ declare quantity: UInt32
336
613
  }
337
- @Struct.type('travelplan')
338
- export class travelplan extends Struct {
614
+ @Struct.type('travel')
615
+ export class travel extends Struct {
616
+ @Struct.field(Name)
617
+ declare entity_type: Name
339
618
  @Struct.field(UInt64)
340
- id!: UInt64
341
- @Struct.field(coordinates)
342
- origin!: coordinates
343
- @Struct.field(coordinates)
344
- destination!: coordinates
619
+ declare id: UInt64
620
+ @Struct.field(Int64)
621
+ declare x: Int64
622
+ @Struct.field(Int64)
623
+ declare y: Int64
345
624
  @Struct.field('bool')
346
- recharge!: boolean
625
+ declare recharge: boolean
347
626
  }
348
- @Struct.type('traveltime')
349
- export class traveltime extends Struct {
627
+ @Struct.type('types_row')
628
+ export class types_row extends Struct {
350
629
  @Struct.field(UInt64)
351
- id!: UInt64
352
- @Struct.field(coordinates)
353
- destination!: coordinates
630
+ declare id: UInt64
631
+ @Struct.field(entity_summary)
632
+ declare entity_summary_type: entity_summary
354
633
  }
355
634
  @Struct.type('updatecredit')
356
635
  export class updatecredit extends Struct {
357
636
  @Struct.field(Name)
358
- account!: Name
637
+ declare account: Name
359
638
  @Struct.field(Int64)
360
- amount!: Int64
639
+ declare amount: Int64
361
640
  }
362
641
  @Struct.type('updatedebt')
363
642
  export class updatedebt extends Struct {
364
643
  @Struct.field(Name)
365
- account!: Name
644
+ declare account: Name
366
645
  @Struct.field(Int64)
367
- amount!: Int64
646
+ declare amount: Int64
368
647
  }
369
- @Struct.type('upgradeship')
370
- export class upgradeship extends Struct {
371
- @Struct.field(Name)
372
- account!: Name
648
+ @Struct.type('warehouse_row')
649
+ export class warehouse_row extends Struct {
373
650
  @Struct.field(UInt64)
374
- id!: UInt64
651
+ declare id: UInt64
652
+ @Struct.field(Name)
653
+ declare owner: Name
654
+ @Struct.field('string')
655
+ declare name: string
656
+ @Struct.field(coordinates)
657
+ declare location: coordinates
658
+ @Struct.field(UInt32)
659
+ declare capacity: UInt32
660
+ @Struct.field(loader_stats)
661
+ declare loaders: loader_stats
662
+ @Struct.field(schedule, {optional: true})
663
+ declare schedule?: schedule
375
664
  }
376
665
  @Struct.type('wipe')
377
666
  export class wipe extends Struct {}
@@ -385,6 +674,8 @@ export const TableMap = {
385
674
  sequence: Types.sequence_row,
386
675
  ship: Types.ship_row,
387
676
  state: Types.state_row,
677
+ types: Types.types_row,
678
+ warehouse: Types.warehouse_row,
388
679
  }
389
680
  export interface TableTypes {
390
681
  cargo: Types.cargo_row
@@ -393,32 +684,79 @@ export interface TableTypes {
393
684
  sequence: Types.sequence_row
394
685
  ship: Types.ship_row
395
686
  state: Types.state_row
687
+ types: Types.types_row
688
+ warehouse: Types.warehouse_row
396
689
  }
397
690
  export type RowType<T> = T extends keyof TableTypes ? TableTypes[T] : any
398
691
  export type TableNames = keyof TableTypes
399
692
  export namespace ActionParams {
400
693
  export namespace Type {
694
+ export interface cancel_log {
695
+ owner: NameType
696
+ entity_type: NameType
697
+ entity_id: UInt64Type
698
+ task_index: UInt8Type
699
+ task: Type.task
700
+ started_at: TimePointType
701
+ }
702
+ export interface task {
703
+ type: UInt8Type
704
+ duration: UInt32Type
705
+ cancelable: UInt8Type
706
+ location?: Type.coordinates
707
+ cargo: Type.cargo_item[]
708
+ entity?: UInt64Type
709
+ credits?: Int64Type
710
+ }
401
711
  export interface coordinates {
402
712
  x: Int64Type
403
713
  y: Int64Type
714
+ z?: UInt16Type
715
+ }
716
+ export interface cargo_item {
717
+ good_id: UInt16Type
718
+ quantity: UInt32Type
719
+ unit_cost: UInt64Type
720
+ }
721
+ export interface resolve_log {
722
+ owner: NameType
723
+ entity_type: NameType
724
+ entity_id: UInt64Type
725
+ task_index: UInt8Type
726
+ task: Type.task
727
+ started_at: TimePointType
728
+ completed_at: TimePointType
729
+ new_energy?: UInt16Type
730
+ new_location?: Type.coordinates
731
+ cargomass_delta: Int64Type
732
+ cargo_added: Type.cargo_item[]
733
+ cargo_removed: Type.cargo_item[]
734
+ credits?: Int64Type
404
735
  }
405
736
  }
406
737
  export interface advance {
407
738
  reveal: string
408
739
  commit: Checksum256Type
409
740
  }
410
- export interface arrive {
411
- id: UInt64Type
412
- }
413
741
  export interface buygoods {
414
742
  ship_id: UInt64Type
415
- good_id: UInt64Type
416
- quantity: UInt64Type
743
+ good_id: UInt16Type
744
+ quantity: UInt32Type
417
745
  }
418
746
  export interface buyship {
419
747
  account: NameType
420
748
  name: string
421
749
  }
750
+ export interface buywarehouse {
751
+ account: NameType
752
+ ship_id: UInt64Type
753
+ name: string
754
+ }
755
+ export interface cancel {
756
+ entity_type: NameType
757
+ id: UInt64Type
758
+ count: UInt64Type
759
+ }
422
760
  export interface cleartable {
423
761
  table_name: NameType
424
762
  scope?: NameType
@@ -430,6 +768,31 @@ export namespace ActionParams {
430
768
  export interface enable {
431
769
  enabled: boolean
432
770
  }
771
+ export interface getentities {
772
+ owner: NameType
773
+ entity_type?: NameType
774
+ }
775
+ export interface getentity {
776
+ entity_type: NameType
777
+ entity_id: UInt64Type
778
+ }
779
+ export interface getgoods {}
780
+ export interface getlocation {
781
+ x: Int64Type
782
+ y: Int64Type
783
+ }
784
+ export interface getnearby {
785
+ entity_type: NameType
786
+ entity_id: UInt64Type
787
+ recharge: boolean
788
+ }
789
+ export interface getplayer {
790
+ account: NameType
791
+ }
792
+ export interface getsummaries {
793
+ owner: NameType
794
+ entity_type?: NameType
795
+ }
433
796
  export interface hash {
434
797
  value: string
435
798
  }
@@ -439,52 +802,57 @@ export namespace ActionParams {
439
802
  export interface init {
440
803
  seed: Checksum256Type
441
804
  }
442
- export interface jettison {
443
- ship_id: UInt64Type
444
- good_id: UInt16Type
445
- quantity: UInt64Type
446
- }
447
805
  export interface join {
448
806
  account: NameType
449
807
  }
450
- export interface marketprice {
451
- location: Type.coordinates
452
- good_id: UInt16Type
808
+ export interface logcancel {
809
+ log: Type.cancel_log
453
810
  }
454
- export interface marketprices {
455
- location: Type.coordinates
811
+ export interface logresolve {
812
+ log: Type.resolve_log
456
813
  }
457
814
  export interface payloan {
458
815
  account: NameType
459
816
  amount: UInt64Type
460
817
  }
818
+ export interface purgesupply {
819
+ max_rows?: UInt64Type
820
+ }
821
+ export interface recharge {
822
+ entity_type: NameType
823
+ id: UInt64Type
824
+ }
825
+ export interface resolve {
826
+ entity_type: NameType
827
+ id: UInt64Type
828
+ }
461
829
  export interface salt {
462
830
  salt: UInt64Type
463
831
  }
464
832
  export interface sellgoods {
465
833
  ship_id: UInt64Type
466
- good_id: UInt64Type
467
- quantity: UInt64Type
834
+ good_id: UInt16Type
835
+ quantity: UInt32Type
468
836
  }
469
837
  export interface takeloan {
470
838
  account: NameType
471
839
  amount: UInt64Type
472
840
  }
473
- export interface travel {
474
- id: UInt64Type
475
- destination: Type.coordinates
476
- recharge: boolean
841
+ export interface transfer {
842
+ source_type: NameType
843
+ source_id: UInt64Type
844
+ dest_type: NameType
845
+ dest_id: UInt64Type
846
+ good_id: UInt16Type
847
+ quantity: UInt32Type
477
848
  }
478
- export interface travelplan {
849
+ export interface travel {
850
+ entity_type: NameType
479
851
  id: UInt64Type
480
- origin: Type.coordinates
481
- destination: Type.coordinates
852
+ x: Int64Type
853
+ y: Int64Type
482
854
  recharge: boolean
483
855
  }
484
- export interface traveltime {
485
- id: UInt64Type
486
- destination: Type.coordinates
487
- }
488
856
  export interface updatecredit {
489
857
  account: NameType
490
858
  amount: Int64Type
@@ -493,49 +861,63 @@ export namespace ActionParams {
493
861
  account: NameType
494
862
  amount: Int64Type
495
863
  }
496
- export interface upgradeship {
497
- account: NameType
498
- id: UInt64Type
499
- }
500
864
  export interface wipe {}
501
865
  export interface wipesequence {}
502
866
  }
503
867
  export interface ActionNameParams {
504
868
  advance: ActionParams.advance
505
- arrive: ActionParams.arrive
506
869
  buygoods: ActionParams.buygoods
507
870
  buyship: ActionParams.buyship
871
+ buywarehouse: ActionParams.buywarehouse
872
+ cancel: ActionParams.cancel
508
873
  cleartable: ActionParams.cleartable
509
874
  commit: ActionParams.commit
510
875
  enable: ActionParams.enable
876
+ getentities: ActionParams.getentities
877
+ getentity: ActionParams.getentity
878
+ getgoods: ActionParams.getgoods
879
+ getlocation: ActionParams.getlocation
880
+ getnearby: ActionParams.getnearby
881
+ getplayer: ActionParams.getplayer
882
+ getsummaries: ActionParams.getsummaries
511
883
  hash: ActionParams.hash
512
884
  hash512: ActionParams.hash512
513
885
  init: ActionParams.init
514
- jettison: ActionParams.jettison
515
886
  join: ActionParams.join
516
- marketprice: ActionParams.marketprice
517
- marketprices: ActionParams.marketprices
887
+ logcancel: ActionParams.logcancel
888
+ logresolve: ActionParams.logresolve
518
889
  payloan: ActionParams.payloan
890
+ purgesupply: ActionParams.purgesupply
891
+ recharge: ActionParams.recharge
892
+ resolve: ActionParams.resolve
519
893
  salt: ActionParams.salt
520
894
  sellgoods: ActionParams.sellgoods
521
895
  takeloan: ActionParams.takeloan
896
+ transfer: ActionParams.transfer
522
897
  travel: ActionParams.travel
523
- travelplan: ActionParams.travelplan
524
- traveltime: ActionParams.traveltime
525
898
  updatecredit: ActionParams.updatecredit
526
899
  updatedebt: ActionParams.updatedebt
527
- upgradeship: ActionParams.upgradeship
528
900
  wipe: ActionParams.wipe
529
901
  wipesequence: ActionParams.wipesequence
530
902
  }
531
903
  export type ActionNames = keyof ActionNameParams
532
904
  export interface ActionReturnValues {
905
+ buygoods: Types.task_results
906
+ cancel: Types.cancel_results
907
+ getentities: Types.entity_info[]
908
+ getentity: Types.entity_info
909
+ getgoods: Types.goods_info
910
+ getlocation: Types.location_info
911
+ getnearby: Types.nearby_info
912
+ getplayer: Types.player_info
913
+ getsummaries: Types.entity_summary[]
533
914
  hash: Checksum256
534
915
  hash512: Checksum512
535
- marketprice: Types.good_price
536
- marketprices: Types.good_price[]
537
- travelplan: Types.travel_plan
538
- traveltime: Types.travel_summary
916
+ recharge: Types.task_results
917
+ resolve: Types.resolve_results
918
+ sellgoods: Types.task_results
919
+ transfer: Types.task_results
920
+ travel: Types.task_results
539
921
  }
540
922
  export type ActionReturnNames = keyof ActionReturnValues
541
923
  export class Contract extends BaseContract {