-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathARC59.arc32.json
200 lines (200 loc) · 35.4 KB
/
ARC59.arc32.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
{
"hints": {
"createApplication()void": {
"call_config": {
"no_op": "CREATE"
}
},
"arc59_optRouterIn(uint64)void": {
"call_config": {
"no_op": "CALL"
}
},
"arc59_getOrCreateInbox(address)address": {
"call_config": {
"no_op": "CALL"
}
},
"arc59_getSendAssetInfo(address,uint64)(uint64,uint64,bool,bool)": {
"call_config": {
"no_op": "CALL"
}
},
"arc59_sendAsset(axfer,address)address": {
"call_config": {
"no_op": "CALL"
}
},
"arc59_claim(uint64)void": {
"call_config": {
"no_op": "CALL"
}
},
"arc59_reject(uint64)void": {
"call_config": {
"no_op": "CALL"
}
},
"arc59_getInbox(address)address": {
"call_config": {
"no_op": "CALL"
}
}
},
"bare_call_config": {
"no_op": "NEVER",
"opt_in": "NEVER",
"close_out": "NEVER",
"update_application": "NEVER",
"delete_application": "NEVER"
},
"schema": {
"local": {
"declared": {},
"reserved": {}
},
"global": {
"declared": {},
"reserved": {}
}
},
"state": {
"global": {
"num_byte_slices": 0,
"num_uints": 0
},
"local": {
"num_byte_slices": 0,
"num_uints": 0
}
},
"source": {
"approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjkwLjMKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJZXJyCgovLyBjcmVhdGVBcHBsaWNhdGlvbigpdm9pZAoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJLy8gZXhlY3V0ZSBjcmVhdGVBcHBsaWNhdGlvbigpdm9pZAoJY2FsbHN1YiBjcmVhdGVBcHBsaWNhdGlvbgoJaW50IDEKCXJldHVybgoKLy8gY3JlYXRlQXBwbGljYXRpb24oKTogdm9pZAovLwovLyBEZXBsb3kgQVJDNTkgY29udHJhY3QKY3JlYXRlQXBwbGljYXRpb246Cglwcm90byAwIDAKCXJldHN1YgoKLy8gYXJjNTlfb3B0Um91dGVySW4odWludDY0KXZvaWQKKmFiaV9yb3V0ZV9hcmM1OV9vcHRSb3V0ZXJJbjoKCS8vIGFzYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBhcmM1OV9vcHRSb3V0ZXJJbih1aW50NjQpdm9pZAoJY2FsbHN1YiBhcmM1OV9vcHRSb3V0ZXJJbgoJaW50IDEKCXJldHVybgoKLy8gYXJjNTlfb3B0Um91dGVySW4oYXNhOiBBc3NldElEKTogdm9pZAovLwovLyBPcHQgdGhlIEFSQzU5IHJvdXRlciBpbnRvIHRoZSBBU0EuIFRoaXMgaXMgcmVxdWlyZWQgYmVmb3JlIHRoaXMgYXBwIGNhbiBiZSB1c2VkIHRvIHNlbmQgdGhlIEFTQSB0byBhbnlvbmUuCi8vCi8vIEBwYXJhbSBhc2EgVGhlIEFTQSB0byBvcHQgaW50bwphcmM1OV9vcHRSb3V0ZXJJbjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjQ2CgkvLyBzZW5kQXNzZXRUcmFuc2Zlcih7CgkvLyAgICAgICBhc3NldFJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgYXNzZXRBbW91bnQ6IDAsCgkvLyAgICAgICB4ZmVyQXNzZXQ6IGFzYSwKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6NDcKCS8vIGFzc2V0UmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czo0OAoJLy8gYXNzZXRBbW91bnQ6IDAKCWludCAwCglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6NDkKCS8vIHhmZXJBc3NldDogYXNhCglmcmFtZV9kaWcgLTEgLy8gYXNhOiBBc3NldElECglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gYXJjNTlfZ2V0T3JDcmVhdGVJbmJveChhZGRyZXNzKWFkZHJlc3MKKmFiaV9yb3V0ZV9hcmM1OV9nZXRPckNyZWF0ZUluYm94OgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyByZWNlaXZlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludCAzMgoJPT0KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYXJjNTlfZ2V0T3JDcmVhdGVJbmJveChhZGRyZXNzKWFkZHJlc3MKCWNhbGxzdWIgYXJjNTlfZ2V0T3JDcmVhdGVJbmJveAoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGFyYzU5X2dldE9yQ3JlYXRlSW5ib3gocmVjZWl2ZXI6IEFkZHJlc3MpOiBBZGRyZXNzCi8vCi8vIEdldHMgdGhlIGV4aXN0aW5nIGluYm94IGZvciB0aGUgcmVjZWl2ZXIgb3IgY3JlYXRlcyBhIG5ldyBvbmUgaWYgaXQgZG9lcyBub3QgZXhpc3QKLy8KLy8gQHBhcmFtIHJlY2VpdmVyIFRoZSBhZGRyZXNzIHRvIGdldCBvciBjcmVhdGUgdGhlIGluYm94IGZvcgovLyBAcmV0dXJucyBUaGUgaW5ib3ggYWRkcmVzcwphcmM1OV9nZXRPckNyZWF0ZUluYm94OgoJcHJvdG8gMSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCgkvLyAqaWYwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6NjAKCS8vIHRoaXMuaW5ib3hlcyhyZWNlaXZlcikuZXhpc3RzCglmcmFtZV9kaWcgLTEgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWJveF9sZW4KCXN3YXAKCXBvcAoJYnogKmlmMF9lbmQKCgkvLyAqaWYwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjYwCgkvLyByZXR1cm4gdGhpcy5pbmJveGVzKHJlY2VpdmVyKS52YWx1ZTsKCWZyYW1lX2RpZyAtMSAvLyByZWNlaXZlcjogQWRkcmVzcwoJYm94X2dldAoJYXNzZXJ0CgliICphcmM1OV9nZXRPckNyZWF0ZUluYm94KnJldHVybgoKKmlmMF9lbmQ6CgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czo2MgoJLy8gaW5ib3ggPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgQ29udHJvbGxlZEFkZHJlc3MucHJvdG90eXBlLm5ldz4oewoJLy8gICAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uRGVsZXRlQXBwbGljYXRpb24sCgkvLyAgICAgICBhcHByb3ZhbFByb2dyYW06IENvbnRyb2xsZWRBZGRyZXNzLmFwcHJvdmFsUHJvZ3JhbSgpLAoJLy8gICAgICAgY2xlYXJTdGF0ZVByb2dyYW06IENvbnRyb2xsZWRBZGRyZXNzLmNsZWFyUHJvZ3JhbSgpLAoJLy8gICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJuZXcoKWFkZHJlc3MiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjYzCgkvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGlvbi5EZWxldGVBcHBsaWNhdGlvbgoJaW50IDUgLy8gRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6NjQKCS8vIGFwcHJvdmFsUHJvZ3JhbTogQ29udHJvbGxlZEFkZHJlc3MuYXBwcm92YWxQcm9ncmFtKCkKCWJ5dGUgYjY0IENpQUJBVEVZRklFR0N6RVpDSTBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWhBSUFFRlI5OGRZZ0FCRkN3SWtPS0FBR3hJcklRTVFDeUlJRUFzZ0d6TWdxSmdBUldIUy9xTmhvQWpnSC8wd0E9CglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjY1CgkvLyBjbGVhclN0YXRlUHJvZ3JhbTogQ29udHJvbGxlZEFkZHJlc3MuY2xlYXJQcm9ncmFtKCkKCWJ5dGUgYjY0IENnPT0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyBpbmJveDogYWRkcmVzcwoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjY4CgkvLyB0aGlzLmluYm94ZXMocmVjZWl2ZXIpLnZhbHVlID0gaW5ib3gKCWZyYW1lX2RpZyAtMSAvLyByZWNlaXZlcjogQWRkcmVzcwoJZnJhbWVfZGlnIDAgLy8gaW5ib3g6IGFkZHJlc3MKCWJveF9wdXQKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czo3MAoJLy8gcmV0dXJuIGluYm94OwoJZnJhbWVfZGlnIDAgLy8gaW5ib3g6IGFkZHJlc3MKCiphcmM1OV9nZXRPckNyZWF0ZUluYm94KnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBhcmM1OV9nZXRTZW5kQXNzZXRJbmZvKGFkZHJlc3MsdWludDY0KSh1aW50NjQsdWludDY0LGJvb2wsYm9vbCkKKmFiaV9yb3V0ZV9hcmM1OV9nZXRTZW5kQXNzZXRJbmZvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyBhc3NldDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gcmVjZWl2ZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnQgMzIKCT09Cglhc3NlcnQKCgkvLyBleGVjdXRlIGFyYzU5X2dldFNlbmRBc3NldEluZm8oYWRkcmVzcyx1aW50NjQpKHVpbnQ2NCx1aW50NjQsYm9vbCxib29sKQoJY2FsbHN1YiBhcmM1OV9nZXRTZW5kQXNzZXRJbmZvCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gYXJjNTlfZ2V0U2VuZEFzc2V0SW5mbyhyZWNlaXZlcjogQWRkcmVzcywgYXNzZXQ6IEFzc2V0SUQpOiBTZW5kQXNzZXRJbmZvCi8vCi8vCi8vIEBwYXJhbSByZWNlaXZlciBUaGUgYWRkcmVzcyB0byBzZW5kIHRoZSBhc3NldCB0bwovLyBAcGFyYW0gYXNzZXQgVGhlIGFzc2V0IHRvIHNlbmQKLy8KLy8gQHJldHVybnMgUmV0dXJucyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGZvciBzZW5kaW5nIGFuIGFzc2V0OgovLyBUaGUgbnVtYmVyIG9mIGl0eG5zIHJlcXVpcmVkLCB0aGUgTUJSIHJlcXVpcmVkLCB3aGV0aGVyIHRoZSByb3V0ZXIgaXMgb3B0ZWQgaW4sIGFuZCB3aGV0aGVyIHRoZSByZWNlaXZlciBpcyBvcHRlZCBpbgphcmM1OV9nZXRTZW5kQXNzZXRJbmZvOgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gNQoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjgyCgkvLyByb3V0ZXJPcHRlZEluID0gdGhpcy5hcHAuYWRkcmVzcy5pc09wdGVkSW5Ub0Fzc2V0KGFzc2V0KQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyBhc3NldDogQXNzZXRJRAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglzd2FwCglwb3AKCWZyYW1lX2J1cnkgMCAvLyByb3V0ZXJPcHRlZEluOiBib29sCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6ODMKCS8vIHJlY2VpdmVyT3B0ZWRJbiA9IHJlY2VpdmVyLmlzT3B0ZWRJblRvQXNzZXQoYXNzZXQpCglmcmFtZV9kaWcgLTEgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyBhc3NldDogQXNzZXRJRAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglzd2FwCglwb3AKCWZyYW1lX2J1cnkgMSAvLyByZWNlaXZlck9wdGVkSW46IGJvb2wKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czo4NAoJLy8gaW5mbzogU2VuZEFzc2V0SW5mbyA9IHsgaXR4bnM6IDEsIG1icjogMCwgcm91dGVyT3B0ZWRJbjogcm91dGVyT3B0ZWRJbiwgcmVjZWl2ZXJPcHRlZEluOiByZWNlaXZlck9wdGVkSW4gfQoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwCglieXRlIDB4MDAKCWludCAwCglmcmFtZV9kaWcgMCAvLyByb3V0ZXJPcHRlZEluOiBib29sCglzZXRiaXQKCWludCAxCglmcmFtZV9kaWcgMSAvLyByZWNlaXZlck9wdGVkSW46IGJvb2wKCXNldGJpdAoJY29uY2F0CglmcmFtZV9idXJ5IDIgLy8gaW5mbzogU2VuZEFzc2V0SW5mbwoKCS8vICppZjFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czo4NgoJLy8gcmVjZWl2ZXJPcHRlZEluCglmcmFtZV9kaWcgMSAvLyByZWNlaXZlck9wdGVkSW46IGJvb2wKCWJ6ICppZjFfZW5kCgoJLy8gKmlmMV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czo4NgoJLy8gcmV0dXJuIGluZm87CglmcmFtZV9kaWcgMiAvLyBpbmZvOiBTZW5kQXNzZXRJbmZvCgliICphcmM1OV9nZXRTZW5kQXNzZXRJbmZvKnJldHVybgoKKmlmMV9lbmQ6CgkvLyAqaWYyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6ODgKCS8vICFyb3V0ZXJPcHRlZEluCglmcmFtZV9kaWcgMCAvLyByb3V0ZXJPcHRlZEluOiBib29sCgkhCglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6ODkKCS8vIGluZm8ubWJyICs9IGdsb2JhbHMuYXNzZXRPcHRJbk1pbkJhbGFuY2UKCWZyYW1lX2RpZyAyIC8vIGluZm86IFNlbmRBc3NldEluZm8KCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnQgOAoJZnJhbWVfZGlnIDIgLy8gaW5mbzogU2VuZEFzc2V0SW5mbwoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgOCA4CglidG9pCglnbG9iYWwgQXNzZXRPcHRJbk1pbkJhbGFuY2UKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDIgLy8gaW5mbzogU2VuZEFzc2V0SW5mbwoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjkwCgkvLyBpbmZvLml0eG5zICs9IDEKCWZyYW1lX2RpZyAyIC8vIGluZm86IFNlbmRBc3NldEluZm8KCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnQgMAoJZnJhbWVfZGlnIDIgLy8gaW5mbzogU2VuZEFzc2V0SW5mbwoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMCA4CglidG9pCglpbnQgMQoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMiAvLyBpbmZvOiBTZW5kQXNzZXRJbmZvCgoqaWYyX2VuZDoKCS8vICppZjNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czo5MwoJLy8gIXRoaXMuaW5ib3hlcyhyZWNlaXZlcikuZXhpc3RzCglmcmFtZV9kaWcgLTEgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoJYnogKmlmM19lbmQKCgkvLyAqaWYzX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjk3CgkvLyBpbmZvLml0eG5zICs9IDQKCWZyYW1lX2RpZyAyIC8vIGluZm86IFNlbmRBc3NldEluZm8KCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnQgMAoJZnJhbWVfZGlnIDIgLy8gaW5mbzogU2VuZEFzc2V0SW5mbwoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMCA4CglidG9pCglpbnQgNAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMiAvLyBpbmZvOiBTZW5kQXNzZXRJbmZvCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTAwCgkvLyBwcmVNQlIgPSBnbG9iYWxzLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MubWluQmFsYW5jZQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCglmcmFtZV9idXJ5IDMgLy8gcHJlTUJSOiB1aW50NjQKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxMDEKCS8vIHRoaXMuaW5ib3hlcyhyZWNlaXZlcikudmFsdWUgPSBnbG9iYWxzLnplcm9BZGRyZXNzCglmcmFtZV9kaWcgLTEgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJYm94X3B1dAoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjEwMgoJLy8gYm94TWJyRGVsdGEgPSBnbG9iYWxzLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MubWluQmFsYW5jZSAtIHByZU1CUgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMyAvLyBwcmVNQlI6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSA0IC8vIGJveE1ickRlbHRhOiB1aW50NjQKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxMDMKCS8vIHRoaXMuaW5ib3hlcyhyZWNlaXZlcikuZGVsZXRlKCkKCWZyYW1lX2RpZyAtMSAvLyByZWNlaXZlcjogQWRkcmVzcwoJYm94X2RlbAoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjEwNgoJLy8gaW5mby5tYnIgKz0gYm94TWJyRGVsdGEgKyBnbG9iYWxzLm1pbkJhbGFuY2UgKyBnbG9iYWxzLmFzc2V0T3B0SW5NaW5CYWxhbmNlCglmcmFtZV9kaWcgMiAvLyBpbmZvOiBTZW5kQXNzZXRJbmZvCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJaW50IDgKCWZyYW1lX2RpZyAyIC8vIGluZm86IFNlbmRBc3NldEluZm8KCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDggOAoJYnRvaQoJZnJhbWVfZGlnIDQgLy8gYm94TWJyRGVsdGE6IHVpbnQ2NAoJZ2xvYmFsIE1pbkJhbGFuY2UKCSsKCWdsb2JhbCBBc3NldE9wdEluTWluQmFsYW5jZQoJKwoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMiAvLyBpbmZvOiBTZW5kQXNzZXRJbmZvCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTA4CgkvLyByZXR1cm4gaW5mbzsKCWZyYW1lX2RpZyAyIC8vIGluZm86IFNlbmRBc3NldEluZm8KCWIgKmFyYzU5X2dldFNlbmRBc3NldEluZm8qcmV0dXJuCgoqaWYzX2VuZDoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjExMQoJLy8gaW5ib3ggPSB0aGlzLmluYm94ZXMocmVjZWl2ZXIpLnZhbHVlCglmcmFtZV9kaWcgLTEgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWJveF9nZXQKCWFzc2VydAoJZnJhbWVfYnVyeSA1IC8vIGluYm94OiBhZGRyZXNzCgoJLy8gKmlmNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjExMwoJLy8gIWluYm94LmlzT3B0ZWRJblRvQXNzZXQoYXNzZXQpCglmcmFtZV9kaWcgNSAvLyBpbmJveDogYWRkcmVzcwoJZnJhbWVfZGlnIC0yIC8vIGFzc2V0OiBBc3NldElECglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXN3YXAKCXBvcAoJIQoJYnogKmlmNF9lbmQKCgkvLyAqaWY0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjExNQoJLy8gaW5mby5pdHhucyArPSAxCglmcmFtZV9kaWcgMiAvLyBpbmZvOiBTZW5kQXNzZXRJbmZvCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJaW50IDAKCWZyYW1lX2RpZyAyIC8vIGluZm86IFNlbmRBc3NldEluZm8KCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgOAoJYnRvaQoJaW50IDEKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDIgLy8gaW5mbzogU2VuZEFzc2V0SW5mbwoKCS8vICppZjVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxMTcKCS8vICEoaW5ib3guYmFsYW5jZSA+PSBpbmJveC5taW5CYWxhbmNlICsgZ2xvYmFscy5hc3NldE9wdEluTWluQmFsYW5jZSkKCWZyYW1lX2RpZyA1IC8vIGluYm94OiBhZGRyZXNzCglhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDUgLy8gaW5ib3g6IGFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCglnbG9iYWwgQXNzZXRPcHRJbk1pbkJhbGFuY2UKCSsKCT49CgkhCglieiAqaWY1X2VuZAoKCS8vICppZjVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTE5CgkvLyBpbmZvLml0eG5zICs9IDEKCWZyYW1lX2RpZyAyIC8vIGluZm86IFNlbmRBc3NldEluZm8KCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnQgMAoJZnJhbWVfZGlnIDIgLy8gaW5mbzogU2VuZEFzc2V0SW5mbwoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMCA4CglidG9pCglpbnQgMQoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMiAvLyBpbmZvOiBTZW5kQXNzZXRJbmZvCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTIyCgkvLyBpbmZvLm1iciArPSBnbG9iYWxzLmFzc2V0T3B0SW5NaW5CYWxhbmNlCglmcmFtZV9kaWcgMiAvLyBpbmZvOiBTZW5kQXNzZXRJbmZvCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJaW50IDgKCWZyYW1lX2RpZyAyIC8vIGluZm86IFNlbmRBc3NldEluZm8KCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDggOAoJYnRvaQoJZ2xvYmFsIEFzc2V0T3B0SW5NaW5CYWxhbmNlCgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAyIC8vIGluZm86IFNlbmRBc3NldEluZm8KCippZjVfZW5kOgoKKmlmNF9lbmQ6CgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxMjYKCS8vIHJldHVybiBpbmZvOwoJZnJhbWVfZGlnIDIgLy8gaW5mbzogU2VuZEFzc2V0SW5mbwoKKmFyYzU5X2dldFNlbmRBc3NldEluZm8qcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gNQoJcmV0c3ViCgovLyBhcmM1OV9zZW5kQXNzZXQoYXhmZXIsYWRkcmVzcylhZGRyZXNzCiphYmlfcm91dGVfYXJjNTlfc2VuZEFzc2V0OgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyByZWNlaXZlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludCAzMgoJPT0KCWFzc2VydAoKCS8vIGF4ZmVyOiBheGZlcgoJdHhuIEdyb3VwSW5kZXgKCWludCAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnQgYXhmZXIKCT09Cglhc3NlcnQKCgkvLyBleGVjdXRlIGFyYzU5X3NlbmRBc3NldChheGZlcixhZGRyZXNzKWFkZHJlc3MKCWNhbGxzdWIgYXJjNTlfc2VuZEFzc2V0Cgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gYXJjNTlfc2VuZEFzc2V0KGF4ZmVyOiBBc3NldFRyYW5zZmVyVHhuLCByZWNlaXZlcjogQWRkcmVzcyk6IEFkZHJlc3MKLy8KLy8gU2VuZCBhbiBhc3NldCB0byB0aGUgcmVjZWl2ZXIKLy8KLy8gQHBhcmFtIHJlY2VpdmVyIFRoZSBhZGRyZXNzIHRvIHNlbmQgdGhlIGFzc2V0IHRvCi8vIEBwYXJhbSBheGZlciBUaGUgYXNzZXQgdHJhbnNmZXIgdG8gdGhpcyBhcHAKLy8KLy8gQHJldHVybnMgVGhlIGFkZHJlc3MgdGhhdCB0aGUgYXNzZXQgd2FzIHNlbnQgdG8gKGVpdGhlciB0aGUgcmVjZWl2ZXIgb3IgdGhlaXIgaW5ib3gpCmFyYzU5X3NlbmRBc3NldDoKCXByb3RvIDIgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxMzgKCS8vIHZlcmlmeUFzc2V0VHJhbnNmZXJUeG4oYXhmZXIsIHsKCS8vICAgICAgIGFzc2V0UmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsCgkvLyAgICAgfSkKCS8vIHZlcmlmeSBhc3NldFJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gYXhmZXI6IEFzc2V0VHJhbnNmZXJUeG4KCWd0eG5zIEFzc2V0UmVjZWl2ZXIKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCgk9PQoJYXNzZXJ0CgoJLy8gKmlmNl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjE0MwoJLy8gcmVjZWl2ZXIuaXNPcHRlZEluVG9Bc3NldChheGZlci54ZmVyQXNzZXQpCglmcmFtZV9kaWcgLTIgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWZyYW1lX2RpZyAtMSAvLyBheGZlcjogQXNzZXRUcmFuc2ZlclR4bgoJZ3R4bnMgWGZlckFzc2V0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXN3YXAKCXBvcAoJYnogKmlmNl9lbmQKCgkvLyAqaWY2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjE0NAoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICBhc3NldFJlY2VpdmVyOiByZWNlaXZlciwKCS8vICAgICAgICAgYXNzZXRBbW91bnQ6IGF4ZmVyLmFzc2V0QW1vdW50LAoJLy8gICAgICAgICB4ZmVyQXNzZXQ6IGF4ZmVyLnhmZXJBc3NldCwKCS8vICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxNDUKCS8vIGFzc2V0UmVjZWl2ZXI6IHJlY2VpdmVyCglmcmFtZV9kaWcgLTIgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjE0NgoJLy8gYXNzZXRBbW91bnQ6IGF4ZmVyLmFzc2V0QW1vdW50CglmcmFtZV9kaWcgLTEgLy8gYXhmZXI6IEFzc2V0VHJhbnNmZXJUeG4KCWd0eG5zIEFzc2V0QW1vdW50CglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTQ3CgkvLyB4ZmVyQXNzZXQ6IGF4ZmVyLnhmZXJBc3NldAoJZnJhbWVfZGlnIC0xIC8vIGF4ZmVyOiBBc3NldFRyYW5zZmVyVHhuCglndHhucyBYZmVyQXNzZXQKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjE1MAoJLy8gcmV0dXJuIHJlY2VpdmVyOwoJZnJhbWVfZGlnIC0yIC8vIHJlY2VpdmVyOiBBZGRyZXNzCgliICphcmM1OV9zZW5kQXNzZXQqcmV0dXJuCgoqaWY2X2VuZDoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjE1MwoJLy8gaW5ib3hFeGlzdGVkID0gdGhpcy5pbmJveGVzKHJlY2VpdmVyKS5leGlzdHMKCWZyYW1lX2RpZyAtMiAvLyByZWNlaXZlcjogQWRkcmVzcwoJYm94X2xlbgoJc3dhcAoJcG9wCglmcmFtZV9idXJ5IDAgLy8gaW5ib3hFeGlzdGVkOiBib29sCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTU0CgkvLyBpbmJveCA9IHRoaXMuYXJjNTlfZ2V0T3JDcmVhdGVJbmJveChyZWNlaXZlcikKCWZyYW1lX2RpZyAtMiAvLyByZWNlaXZlcjogQWRkcmVzcwoJY2FsbHN1YiBhcmM1OV9nZXRPckNyZWF0ZUluYm94CglmcmFtZV9idXJ5IDEgLy8gaW5ib3g6IGFkZHJlc3MKCgkvLyAqaWY3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTU2CgkvLyAhaW5ib3guaXNPcHRlZEluVG9Bc3NldChheGZlci54ZmVyQXNzZXQpCglmcmFtZV9kaWcgMSAvLyBpbmJveDogYWRkcmVzcwoJZnJhbWVfZGlnIC0xIC8vIGF4ZmVyOiBBc3NldFRyYW5zZmVyVHhuCglndHhucyBYZmVyQXNzZXQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJc3dhcAoJcG9wCgkhCglieiAqaWY3X2VuZAoKCS8vICppZjdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTU3CgkvLyBpbmJveE1ickRlbHRhID0gZ2xvYmFscy5hc3NldE9wdEluTWluQmFsYW5jZQoJZ2xvYmFsIEFzc2V0T3B0SW5NaW5CYWxhbmNlCglmcmFtZV9idXJ5IDIgLy8gaW5ib3hNYnJEZWx0YTogdWludDY0CgoJLy8gKmlmOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjE1OAoJLy8gIWluYm94RXhpc3RlZAoJZnJhbWVfZGlnIDAgLy8gaW5ib3hFeGlzdGVkOiBib29sCgkhCglieiAqaWY4X2VuZAoKCS8vICppZjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTU4CgkvLyBpbmJveE1ickRlbHRhICs9IGdsb2JhbHMubWluQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gaW5ib3hNYnJEZWx0YTogdWludDY0CglnbG9iYWwgTWluQmFsYW5jZQoJKwoJZnJhbWVfYnVyeSAyIC8vIGluYm94TWJyRGVsdGE6IHVpbnQ2NAoKKmlmOF9lbmQ6CgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTYxCgkvLyBpbmJveC5iYWxhbmNlIDwgaW5ib3gubWluQmFsYW5jZSArIGluYm94TWJyRGVsdGEKCWZyYW1lX2RpZyAxIC8vIGluYm94OiBhZGRyZXNzCglhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gaW5ib3g6IGFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMiAvLyBpbmJveE1ickRlbHRhOiB1aW50NjQKCSsKCTwKCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxNjIKCS8vIHNlbmRQYXltZW50KHsKCS8vICAgICAgICAgICByZWNlaXZlcjogaW5ib3gsCgkvLyAgICAgICAgICAgYW1vdW50OiBpbmJveE1ickRlbHRhLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IHBheQoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjE2MwoJLy8gcmVjZWl2ZXI6IGluYm94CglmcmFtZV9kaWcgMSAvLyBpbmJveDogYWRkcmVzcwoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjE2NAoJLy8gYW1vdW50OiBpbmJveE1ickRlbHRhCglmcmFtZV9kaWcgMiAvLyBpbmJveE1ickRlbHRhOiB1aW50NjQKCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKKmlmOV9lbmQ6CgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxNjkKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgc2VuZGVyOiBpbmJveCwKCS8vICAgICAgICAgYXNzZXRSZWNlaXZlcjogaW5ib3gsCgkvLyAgICAgICAgIGFzc2V0QW1vdW50OiAwLAoJLy8gICAgICAgICB4ZmVyQXNzZXQ6IGF4ZmVyLnhmZXJBc3NldCwKCS8vICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxNzAKCS8vIHNlbmRlcjogaW5ib3gKCWZyYW1lX2RpZyAxIC8vIGluYm94OiBhZGRyZXNzCglpdHhuX2ZpZWxkIFNlbmRlcgoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjE3MQoJLy8gYXNzZXRSZWNlaXZlcjogaW5ib3gKCWZyYW1lX2RpZyAxIC8vIGluYm94OiBhZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxNzIKCS8vIGFzc2V0QW1vdW50OiAwCglpbnQgMAoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjE3MwoJLy8geGZlckFzc2V0OiBheGZlci54ZmVyQXNzZXQKCWZyYW1lX2RpZyAtMSAvLyBheGZlcjogQXNzZXRUcmFuc2ZlclR4bgoJZ3R4bnMgWGZlckFzc2V0CglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjdfZW5kOgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTc4CgkvLyBzZW5kQXNzZXRUcmFuc2Zlcih7CgkvLyAgICAgICBhc3NldFJlY2VpdmVyOiBpbmJveCwKCS8vICAgICAgIGFzc2V0QW1vdW50OiBheGZlci5hc3NldEFtb3VudCwKCS8vICAgICAgIHhmZXJBc3NldDogYXhmZXIueGZlckFzc2V0LAoJLy8gICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxNzkKCS8vIGFzc2V0UmVjZWl2ZXI6IGluYm94CglmcmFtZV9kaWcgMSAvLyBpbmJveDogYWRkcmVzcwoJaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTgwCgkvLyBhc3NldEFtb3VudDogYXhmZXIuYXNzZXRBbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBheGZlcjogQXNzZXRUcmFuc2ZlclR4bgoJZ3R4bnMgQXNzZXRBbW91bnQKCWl0eG5fZmllbGQgQXNzZXRBbW91bnQKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxODEKCS8vIHhmZXJBc3NldDogYXhmZXIueGZlckFzc2V0CglmcmFtZV9kaWcgLTEgLy8gYXhmZXI6IEFzc2V0VHJhbnNmZXJUeG4KCWd0eG5zIFhmZXJBc3NldAoJaXR4bl9maWVsZCBYZmVyQXNzZXQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTg0CgkvLyByZXR1cm4gaW5ib3g7CglmcmFtZV9kaWcgMSAvLyBpbmJveDogYWRkcmVzcwoKKmFyYzU5X3NlbmRBc3NldCpyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiAyCglyZXRzdWIKCi8vIGFyYzU5X2NsYWltKHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfYXJjNTlfY2xhaW06CgkvLyBhc2E6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgYXJjNTlfY2xhaW0odWludDY0KXZvaWQKCWNhbGxzdWIgYXJjNTlfY2xhaW0KCWludCAxCglyZXR1cm4KCi8vIGFyYzU5X2NsYWltKGFzYTogQXNzZXRJRCk6IHZvaWQKLy8KLy8gQ2xhaW0gYW4gQVNBIGZyb20gdGhlIGluYm94Ci8vCi8vIEBwYXJhbSBhc2EgVGhlIEFTQSB0byBjbGFpbQphcmM1OV9jbGFpbToKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTkzCgkvLyBpbmJveCA9IHRoaXMuaW5ib3hlcyh0aGlzLnR4bi5zZW5kZXIpLnZhbHVlCgl0eG4gU2VuZGVyCglib3hfZ2V0Cglhc3NlcnQKCWZyYW1lX2J1cnkgMCAvLyBpbmJveDogYWRkcmVzcwoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjE5NQoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgc2VuZGVyOiBpbmJveCwKCS8vICAgICAgIGFzc2V0UmVjZWl2ZXI6IHRoaXMudHhuLnNlbmRlciwKCS8vICAgICAgIGFzc2V0QW1vdW50OiBpbmJveC5hc3NldEJhbGFuY2UoYXNhKSwKCS8vICAgICAgIHhmZXJBc3NldDogYXNhLAoJLy8gICAgICAgYXNzZXRDbG9zZVRvOiB0aGlzLnR4bi5zZW5kZXIsCgkvLyAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBheGZlcgoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjE5NgoJLy8gc2VuZGVyOiBpbmJveAoJZnJhbWVfZGlnIDAgLy8gaW5ib3g6IGFkZHJlc3MKCWl0eG5fZmllbGQgU2VuZGVyCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTk3CgkvLyBhc3NldFJlY2VpdmVyOiB0aGlzLnR4bi5zZW5kZXIKCXR4biBTZW5kZXIKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjE5OAoJLy8gYXNzZXRBbW91bnQ6IGluYm94LmFzc2V0QmFsYW5jZShhc2EpCglmcmFtZV9kaWcgMCAvLyBpbmJveDogYWRkcmVzcwoJZnJhbWVfZGlnIC0xIC8vIGFzYTogQXNzZXRJRAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWl0eG5fZmllbGQgQXNzZXRBbW91bnQKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxOTkKCS8vIHhmZXJBc3NldDogYXNhCglmcmFtZV9kaWcgLTEgLy8gYXNhOiBBc3NldElECglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjIwMAoJLy8gYXNzZXRDbG9zZVRvOiB0aGlzLnR4bi5zZW5kZXIKCXR4biBTZW5kZXIKCWl0eG5fZmllbGQgQXNzZXRDbG9zZVRvCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjIwMwoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgc2VuZGVyOiBpbmJveCwKCS8vICAgICAgIHJlY2VpdmVyOiB0aGlzLnR4bi5zZW5kZXIsCgkvLyAgICAgICBhbW91bnQ6IGluYm94LmJhbGFuY2UgLSBpbmJveC5taW5CYWxhbmNlLAoJLy8gICAgIH0pCglpdHhuX2JlZ2luCglpbnQgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MjA0CgkvLyBzZW5kZXI6IGluYm94CglmcmFtZV9kaWcgMCAvLyBpbmJveDogYWRkcmVzcwoJaXR4bl9maWVsZCBTZW5kZXIKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoyMDUKCS8vIHJlY2VpdmVyOiB0aGlzLnR4bi5zZW5kZXIKCXR4biBTZW5kZXIKCWl0eG5fZmllbGQgUmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoyMDYKCS8vIGFtb3VudDogaW5ib3guYmFsYW5jZSAtIGluYm94Lm1pbkJhbGFuY2UKCWZyYW1lX2RpZyAwIC8vIGluYm94OiBhZGRyZXNzCglhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDAgLy8gaW5ib3g6IGFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCgktCglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gYXJjNTlfcmVqZWN0KHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfYXJjNTlfcmVqZWN0OgoJLy8gYXNhOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGFyYzU5X3JlamVjdCh1aW50NjQpdm9pZAoJY2FsbHN1YiBhcmM1OV9yZWplY3QKCWludCAxCglyZXR1cm4KCi8vIGFyYzU5X3JlamVjdChhc2E6IEFzc2V0SUQpOiB2b2lkCi8vCi8vIFJlamVjdCB0aGUgQVNBIGJ5IGNsb3NpbmcgaXQgb3V0IHRvIHRoZSBBU0EgY3JlYXRvci4gQWx3YXlzIHNlbmRzIHR3byBpbm5lciB0cmFuc2FjdGlvbnMuCi8vIEFsbCBub24tTUJSIEFMR08gYmFsYW5jZSBpbiB0aGUgaW5ib3ggd2lsbCBiZSBzZW50IHRvIHRoZSBjYWxsZXIuCi8vCi8vIEBwYXJhbSBhc2EgVGhlIEFTQSB0byByZWplY3QKYXJjNTlfcmVqZWN0OgoJcHJvdG8gMSAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoyMTcKCS8vIGluYm94ID0gdGhpcy5pbmJveGVzKHRoaXMudHhuLnNlbmRlcikudmFsdWUKCXR4biBTZW5kZXIKCWJveF9nZXQKCWFzc2VydAoJZnJhbWVfYnVyeSAwIC8vIGluYm94OiBhZGRyZXNzCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MjE5CgkvLyBzZW5kQXNzZXRUcmFuc2Zlcih7CgkvLyAgICAgICBzZW5kZXI6IGluYm94LAoJLy8gICAgICAgYXNzZXRSZWNlaXZlcjogYXNhLmNyZWF0b3IsCgkvLyAgICAgICBhc3NldEFtb3VudDogaW5ib3guYXNzZXRCYWxhbmNlKGFzYSksCgkvLyAgICAgICB4ZmVyQXNzZXQ6IGFzYSwKCS8vICAgICAgIGFzc2V0Q2xvc2VUbzogYXNhLmNyZWF0b3IsCgkvLyAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBheGZlcgoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjIyMAoJLy8gc2VuZGVyOiBpbmJveAoJZnJhbWVfZGlnIDAgLy8gaW5ib3g6IGFkZHJlc3MKCWl0eG5fZmllbGQgU2VuZGVyCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MjIxCgkvLyBhc3NldFJlY2VpdmVyOiBhc2EuY3JlYXRvcgoJZnJhbWVfZGlnIC0xIC8vIGFzYTogQXNzZXRJRAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MjIyCgkvLyBhc3NldEFtb3VudDogaW5ib3guYXNzZXRCYWxhbmNlKGFzYSkKCWZyYW1lX2RpZyAwIC8vIGluYm94OiBhZGRyZXNzCglmcmFtZV9kaWcgLTEgLy8gYXNhOiBBc3NldElECglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjIyMwoJLy8geGZlckFzc2V0OiBhc2EKCWZyYW1lX2RpZyAtMSAvLyBhc2E6IEFzc2V0SUQKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MjI0CgkvLyBhc3NldENsb3NlVG86IGFzYS5jcmVhdG9yCglmcmFtZV9kaWcgLTEgLy8gYXNhOiBBc3NldElECglhc3NldF9wYXJhbXNfZ2V0IEFzc2V0Q3JlYXRvcgoJcG9wCglpdHhuX2ZpZWxkIEFzc2V0Q2xvc2VUbwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoyMjcKCS8vIHNlbmRQYXltZW50KHsKCS8vICAgICAgIHNlbmRlcjogaW5ib3gsCgkvLyAgICAgICByZWNlaXZlcjogdGhpcy50eG4uc2VuZGVyLAoJLy8gICAgICAgYW1vdW50OiBpbmJveC5iYWxhbmNlIC0gaW5ib3gubWluQmFsYW5jZSwKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IHBheQoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjIyOAoJLy8gc2VuZGVyOiBpbmJveAoJZnJhbWVfZGlnIDAgLy8gaW5ib3g6IGFkZHJlc3MKCWl0eG5fZmllbGQgU2VuZGVyCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MjI5CgkvLyByZWNlaXZlcjogdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MjMwCgkvLyBhbW91bnQ6IGluYm94LmJhbGFuY2UgLSBpbmJveC5taW5CYWxhbmNlCglmcmFtZV9kaWcgMCAvLyBpbmJveDogYWRkcmVzcwoJYWNjdF9wYXJhbXNfZ2V0IEFjY3RCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAwIC8vIGluYm94OiBhZGRyZXNzCglhY2N0X3BhcmFtc19nZXQgQWNjdE1pbkJhbGFuY2UKCXBvcAoJLQoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIGFyYzU5X2dldEluYm94KGFkZHJlc3MpYWRkcmVzcwoqYWJpX3JvdXRlX2FyYzU5X2dldEluYm94OgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyByZWNlaXZlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludCAzMgoJPT0KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYXJjNTlfZ2V0SW5ib3goYWRkcmVzcylhZGRyZXNzCgljYWxsc3ViIGFyYzU5X2dldEluYm94Cgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gYXJjNTlfZ2V0SW5ib3gocmVjZWl2ZXI6IEFkZHJlc3MpOiBBZGRyZXNzCi8vCi8vIEdldCB0aGUgaW5ib3ggYWRkcmVzcyBmb3IgdGhlIGdpdmVuIHJlY2VpdmVyCi8vCi8vIEBwYXJhbSByZWNlaXZlciBUaGUgcmVjZWl2ZXIgdG8gZ2V0IHRoZSBpbmJveCBmb3IKLy8KLy8gQHJldHVybnMgWmVybyBhZGRyZXNzIGlmIHRoZSByZWNlaXZlciBkb2VzIG5vdCB5ZXQgaGF2ZSBhbiBpbmJveCwgb3RoZXJ3aXNlIHRoZSBpbmJveCBhZGRyZXNzCmFyYzU5X2dldEluYm94OgoJcHJvdG8gMSAxCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MjQyCgkvLyByZXR1cm4gdGhpcy5pbmJveGVzKHJlY2VpdmVyKS5leGlzdHMgPyB0aGlzLmluYm94ZXMocmVjZWl2ZXIpLnZhbHVlIDogZ2xvYmFscy56ZXJvQWRkcmVzczsKCWZyYW1lX2RpZyAtMSAvLyByZWNlaXZlcjogQWRkcmVzcwoJYm94X2xlbgoJc3dhcAoJcG9wCglieiAqdGVybmFyeTBfZmFsc2UKCWZyYW1lX2RpZyAtMSAvLyByZWNlaXZlcjogQWRkcmVzcwoJYm94X2dldAoJYXNzZXJ0CgliICp0ZXJuYXJ5MF9lbmQKCip0ZXJuYXJ5MF9mYWxzZToKCWdsb2JhbCBaZXJvQWRkcmVzcwoKKnRlcm5hcnkwX2VuZDoKCXJldHN1YgoKKmNyZWF0ZV9Ob09wOgoJbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCWVycgoKKmNhbGxfTm9PcDoKCW1ldGhvZCAiYXJjNTlfb3B0Um91dGVySW4odWludDY0KXZvaWQiCgltZXRob2QgImFyYzU5X2dldE9yQ3JlYXRlSW5ib3goYWRkcmVzcylhZGRyZXNzIgoJbWV0aG9kICJhcmM1OV9nZXRTZW5kQXNzZXRJbmZvKGFkZHJlc3MsdWludDY0KSh1aW50NjQsdWludDY0LGJvb2wsYm9vbCkiCgltZXRob2QgImFyYzU5X3NlbmRBc3NldChheGZlcixhZGRyZXNzKWFkZHJlc3MiCgltZXRob2QgImFyYzU5X2NsYWltKHVpbnQ2NCl2b2lkIgoJbWV0aG9kICJhcmM1OV9yZWplY3QodWludDY0KXZvaWQiCgltZXRob2QgImFyYzU5X2dldEluYm94KGFkZHJlc3MpYWRkcmVzcyIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfYXJjNTlfb3B0Um91dGVySW4gKmFiaV9yb3V0ZV9hcmM1OV9nZXRPckNyZWF0ZUluYm94ICphYmlfcm91dGVfYXJjNTlfZ2V0U2VuZEFzc2V0SW5mbyAqYWJpX3JvdXRlX2FyYzU5X3NlbmRBc3NldCAqYWJpX3JvdXRlX2FyYzU5X2NsYWltICphYmlfcm91dGVfYXJjNTlfcmVqZWN0ICphYmlfcm91dGVfYXJjNTlfZ2V0SW5ib3gKCWVycg==",
"clear": "I3ByYWdtYSB2ZXJzaW9uIDEw"
},
"contract": {
"name": "ARC59",
"desc": "",
"methods": [
{
"name": "createApplication",
"desc": "Deploy ARC59 contract",
"args": [],
"returns": {
"type": "void"
}
},
{
"name": "arc59_optRouterIn",
"desc": "Opt the ARC59 router into the ASA. This is required before this app can be used to send the ASA to anyone.",
"args": [
{
"name": "asa",
"type": "uint64",
"desc": "The ASA to opt into"
}
],
"returns": {
"type": "void"
}
},
{
"name": "arc59_getOrCreateInbox",
"desc": "Gets the existing inbox for the receiver or creates a new one if it does not exist",
"args": [
{
"name": "receiver",
"type": "address",
"desc": "The address to get or create the inbox for"
}
],
"returns": {
"type": "address",
"desc": "The inbox address"
}
},
{
"name": "arc59_getSendAssetInfo",
"args": [
{
"name": "receiver",
"type": "address",
"desc": "The address to send the asset to"
},
{
"name": "asset",
"type": "uint64",
"desc": "The asset to send"
}
],
"returns": {
"type": "(uint64,uint64,bool,bool)",
"desc": "Returns the following information for sending an asset:The number of itxns required, the MBR required, whether the router is opted in, and whether the receiver is opted in"
}
},
{
"name": "arc59_sendAsset",
"desc": "Send an asset to the receiver",
"args": [
{
"name": "axfer",
"type": "axfer",
"desc": "The asset transfer to this app"
},
{
"name": "receiver",
"type": "address",
"desc": "The address to send the asset to"
}
],
"returns": {
"type": "address",
"desc": "The address that the asset was sent to (either the receiver or their inbox)"
}
},
{
"name": "arc59_claim",
"desc": "Claim an ASA from the inbox",
"args": [
{
"name": "asa",
"type": "uint64",
"desc": "The ASA to claim"
}
],
"returns": {
"type": "void"
}
},
{
"name": "arc59_reject",
"desc": "Reject the ASA by closing it out to the ASA creator. Always sends two inner transactions.All non-MBR ALGO balance in the inbox will be sent to the caller.",
"args": [
{
"name": "asa",
"type": "uint64",
"desc": "The ASA to reject"
}
],
"returns": {
"type": "void"
}
},
{
"name": "arc59_getInbox",
"desc": "Get the inbox address for the given receiver",
"args": [
{
"name": "receiver",
"type": "address",
"desc": "The receiver to get the inbox for"
}
],
"returns": {
"type": "address",
"desc": "Zero address if the receiver does not yet have an inbox, otherwise the inbox address"
}
}
]
}
}