{ "name": "ConstantProductAMM", "desc": "", "methods": [ { "name": "createApplication", "args": [], "returns": { "type": "void" }, "actions": { "create": [ "NoOp" ], "call": [] } }, { "name": "set_governor", "args": [ { "name": "governor", "type": "address" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] } }, { "name": "bootstrap", "args": [ { "name": "seed", "type": "pay" }, { "name": "aAsset", "type": "uint64" }, { "name": "bAsset", "type": "uint64" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] } }, { "name": "mint", "args": [ { "name": "aXfer", "type": "axfer" }, { "name": "bXfer", "type": "axfer" }, { "name": "poolAsset", "type": "uint64" }, { "name": "aAsset", "type": "uint64" }, { "name": "bAsset", "type": "uint64" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] } }, { "name": "burn", "args": [ { "name": "poolXfer", "type": "axfer" }, { "name": "poolAsset", "type": "uint64" }, { "name": "aAsset", "type": "uint64" }, { "name": "bAsset", "type": "uint64" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] } }, { "name": "swap", "args": [ { "name": "swapXfer", "type": "axfer" }, { "name": "aAsset", "type": "uint64" }, { "name": "bAsset", "type": "uint64" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] } } ], "arcs": [ 4, 56 ], "structs": {}, "state": { "schema": { "global": { "bytes": 1, "ints": 4 }, "local": { "bytes": 0, "ints": 0 } }, "keys": { "global": { "governor": { "key": "Zw==", "keyType": "AVMBytes", "valueType": "address" }, "assetA": { "key": "YQ==", "keyType": "AVMBytes", "valueType": "uint64" }, "assetB": { "key": "Yg==", "keyType": "AVMBytes", "valueType": "uint64" }, "poolToken": { "key": "cA==", "keyType": "AVMBytes", "valueType": "uint64" }, "ratio": { "key": "cg==", "keyType": "AVMBytes", "valueType": "uint64" } }, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "teal": 1, "source": "examples/amm/amm.algo.ts:8", "pc": [ 0 ] }, { "teal": 2, "source": "examples/amm/amm.algo.ts:8", "pc": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ] }, { "teal": 3, "source": "examples/amm/amm.algo.ts:8", "pc": [ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 ] }, { "teal": 15, "source": "examples/amm/amm.algo.ts:8", "pc": [ 28, 29 ] }, { "teal": 16, "source": "examples/amm/amm.algo.ts:8", "pc": [ 30 ] }, { "teal": 17, "source": "examples/amm/amm.algo.ts:8", "pc": [ 31, 32 ] }, { "teal": 18, "source": "examples/amm/amm.algo.ts:8", "pc": [ 33 ] }, { "teal": 19, "source": "examples/amm/amm.algo.ts:8", "pc": [ 34, 35 ] }, { "teal": 20, "source": "examples/amm/amm.algo.ts:8", "pc": [ 36 ] }, { "teal": 21, "source": "examples/amm/amm.algo.ts:8", "pc": [ 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 ] }, { "teal": 25, "source": "examples/amm/amm.algo.ts:8", "errorMessage": "The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?", "pc": [ 63 ] }, { "teal": 30, "source": "examples/amm/amm.algo.ts:19", "pc": [ 64, 65, 66 ] }, { "teal": 31, "source": "examples/amm/amm.algo.ts:19", "pc": [ 67 ] }, { "teal": 32, "source": "examples/amm/amm.algo.ts:19", "pc": [ 68 ] }, { "teal": 36, "source": "examples/amm/amm.algo.ts:19", "pc": [ 69, 70, 71 ] }, { "teal": 40, "source": "examples/amm/amm.algo.ts:20", "pc": [ 72 ] }, { "teal": 41, "source": "examples/amm/amm.algo.ts:20", "pc": [ 73, 74 ] }, { "teal": 42, "source": "examples/amm/amm.algo.ts:20", "pc": [ 75 ] }, { "teal": 43, "source": "examples/amm/amm.algo.ts:19", "pc": [ 76 ] }, { "teal": 47, "source": "examples/amm/amm.algo.ts:23", "pc": [ 77, 78, 79 ] }, { "teal": 58, "source": "examples/amm/amm.algo.ts:26", "pc": [ 80 ] }, { "teal": 59, "source": "examples/amm/amm.algo.ts:26", "pc": [ 81, 82 ] }, { "teal": 60, "source": "examples/amm/amm.algo.ts:26", "pc": [ 83, 84 ] }, { "teal": 64, "source": "examples/amm/amm.algo.ts:27", "pc": [ 85, 86, 87, 88, 89, 90 ] }, { "teal": 65, "source": "examples/amm/amm.algo.ts:27", "pc": [ 91, 92 ] }, { "teal": 66, "source": "examples/amm/amm.algo.ts:27", "pc": [ 93, 94 ] }, { "teal": 67, "source": "examples/amm/amm.algo.ts:27", "pc": [ 95 ] }, { "teal": 68, "source": "examples/amm/amm.algo.ts:27", "pc": [ 96 ] }, { "teal": 69, "source": "examples/amm/amm.algo.ts:27", "pc": [ 97, 98, 99 ] }, { "teal": 70, "source": "examples/amm/amm.algo.ts:27", "pc": [ 100 ] }, { "teal": 71, "source": "examples/amm/amm.algo.ts:27", "pc": [ 101, 102 ] }, { "teal": 72, "source": "examples/amm/amm.algo.ts:27", "pc": [ 103, 104 ] }, { "teal": 73, "source": "examples/amm/amm.algo.ts:27", "pc": [ 105 ] }, { "teal": 74, "source": "examples/amm/amm.algo.ts:27", "pc": [ 106 ] }, { "teal": 75, "source": "examples/amm/amm.algo.ts:27", "pc": [ 107, 108 ] }, { "teal": 79, "source": "examples/amm/amm.algo.ts:28", "pc": [ 109, 110, 111, 112, 113 ] }, { "teal": 80, "source": "examples/amm/amm.algo.ts:28", "pc": [ 114, 115 ] }, { "teal": 84, "source": "examples/amm/amm.algo.ts:29", "pc": [ 116, 117 ] }, { "teal": 85, "source": "examples/amm/amm.algo.ts:29", "pc": [ 118, 119 ] }, { "teal": 89, "source": "examples/amm/amm.algo.ts:30", "pc": [ 120, 121 ] }, { "teal": 90, "source": "examples/amm/amm.algo.ts:30", "pc": [ 122, 123 ] }, { "teal": 94, "source": "examples/amm/amm.algo.ts:31", "pc": [ 124, 125 ] }, { "teal": 95, "source": "examples/amm/amm.algo.ts:31", "pc": [ 126, 127 ] }, { "teal": 99, "source": "examples/amm/amm.algo.ts:32", "pc": [ 128, 129 ] }, { "teal": 100, "source": "examples/amm/amm.algo.ts:32", "pc": [ 130, 131 ] }, { "teal": 103, "source": "examples/amm/amm.algo.ts:26", "pc": [ 132 ] }, { "teal": 104, "source": "examples/amm/amm.algo.ts:26", "pc": [ 133, 134 ] }, { "teal": 107, "source": "examples/amm/amm.algo.ts:26", "pc": [ 135 ] }, { "teal": 108, "source": "examples/amm/amm.algo.ts:26", "pc": [ 136, 137 ] }, { "teal": 109, "source": "examples/amm/amm.algo.ts:23", "pc": [ 138 ] }, { "teal": 113, "source": "examples/amm/amm.algo.ts:36", "pc": [ 139, 140, 141 ] }, { "teal": 121, "source": "examples/amm/amm.algo.ts:37", "pc": [ 142 ] }, { "teal": 122, "source": "examples/amm/amm.algo.ts:37", "pc": [ 143 ] }, { "teal": 123, "source": "examples/amm/amm.algo.ts:37", "pc": [ 144, 145 ] }, { "teal": 127, "source": "examples/amm/amm.algo.ts:38", "pc": [ 146, 147 ] }, { "teal": 128, "source": "examples/amm/amm.algo.ts:38", "pc": [ 148, 149 ] }, { "teal": 132, "source": "examples/amm/amm.algo.ts:39", "pc": [ 150, 151 ] }, { "teal": 133, "source": "examples/amm/amm.algo.ts:39", "pc": [ 152, 153 ] }, { "teal": 137, "source": "examples/amm/amm.algo.ts:40", "pc": [ 154, 155 ] }, { "teal": 138, "source": "examples/amm/amm.algo.ts:40", "pc": [ 156, 157 ] }, { "teal": 141, "source": "examples/amm/amm.algo.ts:37", "pc": [ 158 ] }, { "teal": 142, "source": "examples/amm/amm.algo.ts:37", "pc": [ 159, 160 ] }, { "teal": 145, "source": "examples/amm/amm.algo.ts:37", "pc": [ 161 ] }, { "teal": 146, "source": "examples/amm/amm.algo.ts:36", "pc": [ 162 ] }, { "teal": 150, "source": "examples/amm/amm.algo.ts:44", "pc": [ 163, 164, 165 ] }, { "teal": 154, "source": "examples/amm/amm.algo.ts:45", "pc": [ 166 ] }, { "teal": 155, "source": "examples/amm/amm.algo.ts:45", "pc": [ 167, 168 ] }, { "teal": 156, "source": "examples/amm/amm.algo.ts:45", "pc": [ 169, 170 ] }, { "teal": 157, "source": "examples/amm/amm.algo.ts:45", "pc": [ 171, 172, 173 ] }, { "teal": 158, "source": "examples/amm/amm.algo.ts:44", "pc": [ 174 ] }, { "teal": 162, "source": "examples/amm/amm.algo.ts:48", "pc": [ 175, 176, 177 ] }, { "teal": 166, "source": "examples/amm/amm.algo.ts:49", "pc": [ 178, 179 ] }, { "teal": 167, "source": "examples/amm/amm.algo.ts:49", "pc": [ 180, 181 ] }, { "teal": 168, "source": "examples/amm/amm.algo.ts:49", "pc": [ 182 ] }, { "teal": 169, "source": "examples/amm/amm.algo.ts:49", "pc": [ 183 ] }, { "teal": 170, "source": "examples/amm/amm.algo.ts:48", "pc": [ 184 ] }, { "teal": 174, "source": "examples/amm/amm.algo.ts:52", "pc": [ 185, 186, 187 ] }, { "teal": 177, "source": "examples/amm/amm.algo.ts:52", "pc": [ 188 ] }, { "teal": 178, "source": "examples/amm/amm.algo.ts:52", "pc": [ 189, 190 ] }, { "teal": 182, "source": "examples/amm/amm.algo.ts:53", "pc": [ 191, 192 ] }, { "teal": 183, "source": "examples/amm/amm.algo.ts:53", "pc": [ 193 ] }, { "teal": 184, "source": "examples/amm/amm.algo.ts:53", "pc": [ 194 ] }, { "teal": 185, "source": "examples/amm/amm.algo.ts:53", "pc": [ 195 ] }, { "teal": 186, "source": "examples/amm/amm.algo.ts:53", "pc": [ 196, 197 ] }, { "teal": 187, "source": "examples/amm/amm.algo.ts:53", "pc": [ 198 ] }, { "teal": 188, "source": "examples/amm/amm.algo.ts:53", "pc": [ 199 ] }, { "teal": 189, "source": "examples/amm/amm.algo.ts:53", "pc": [ 200 ] }, { "teal": 190, "source": "examples/amm/amm.algo.ts:53", "pc": [ 201 ] }, { "teal": 191, "source": "examples/amm/amm.algo.ts:53", "pc": [ 202 ] }, { "teal": 194, "source": "examples/amm/amm.algo.ts:53", "errorMessage": "wideRatio failed", "pc": [ 203 ] }, { "teal": 195, "source": "examples/amm/amm.algo.ts:53", "pc": [ 204, 205 ] }, { "teal": 199, "source": "examples/amm/amm.algo.ts:54", "pc": [ 206, 207 ] }, { "teal": 200, "source": "examples/amm/amm.algo.ts:54", "pc": [ 208 ] }, { "teal": 201, "source": "examples/amm/amm.algo.ts:54", "pc": [ 209 ] }, { "teal": 202, "source": "examples/amm/amm.algo.ts:54", "pc": [ 210 ] }, { "teal": 203, "source": "examples/amm/amm.algo.ts:54", "pc": [ 211, 212 ] }, { "teal": 204, "source": "examples/amm/amm.algo.ts:54", "pc": [ 213 ] }, { "teal": 205, "source": "examples/amm/amm.algo.ts:54", "pc": [ 214 ] }, { "teal": 206, "source": "examples/amm/amm.algo.ts:54", "pc": [ 215 ] }, { "teal": 207, "source": "examples/amm/amm.algo.ts:54", "pc": [ 216 ] }, { "teal": 208, "source": "examples/amm/amm.algo.ts:54", "pc": [ 217 ] }, { "teal": 211, "source": "examples/amm/amm.algo.ts:54", "errorMessage": "wideRatio failed", "pc": [ 218 ] }, { "teal": 212, "source": "examples/amm/amm.algo.ts:54", "pc": [ 219, 220 ] }, { "teal": 216, "source": "examples/amm/amm.algo.ts:56", "pc": [ 221, 222 ] }, { "teal": 217, "source": "examples/amm/amm.algo.ts:56", "pc": [ 223, 224 ] }, { "teal": 218, "source": "examples/amm/amm.algo.ts:56", "pc": [ 225 ] }, { "teal": 219, "source": "examples/amm/amm.algo.ts:56", "pc": [ 226, 227, 228 ] }, { "teal": 220, "source": "examples/amm/amm.algo.ts:56", "pc": [ 229, 230 ] }, { "teal": 221, "source": "examples/amm/amm.algo.ts:56", "pc": [ 231, 232, 233 ] }, { "teal": 224, "source": "examples/amm/amm.algo.ts:56", "pc": [ 234, 235 ] }, { "teal": 227, "source": "examples/amm/amm.algo.ts:56", "pc": [ 236, 237 ] }, { "teal": 231, "source": "examples/amm/amm.algo.ts:58", "pc": [ 238, 239 ] }, { "teal": 232, "source": "examples/amm/amm.algo.ts:58", "pc": [ 240, 241 ] }, { "teal": 233, "source": "examples/amm/amm.algo.ts:58", "pc": [ 242 ] }, { "teal": 234, "source": "examples/amm/amm.algo.ts:58", "pc": [ 243 ] }, { "teal": 235, "source": "examples/amm/amm.algo.ts:58", "pc": [ 244 ] }, { "teal": 236, "source": "examples/amm/amm.algo.ts:58", "pc": [ 245 ] }, { "teal": 237, "source": "examples/amm/amm.algo.ts:58", "pc": [ 246 ] }, { "teal": 238, "source": "examples/amm/amm.algo.ts:58", "pc": [ 247 ] }, { "teal": 239, "source": "examples/amm/amm.algo.ts:58", "pc": [ 248 ] }, { "teal": 240, "source": "examples/amm/amm.algo.ts:58", "pc": [ 249 ] }, { "teal": 243, "source": "examples/amm/amm.algo.ts:58", "errorMessage": "wideRatio failed", "pc": [ 250 ] }, { "teal": 246, "source": "examples/amm/amm.algo.ts:52", "pc": [ 251, 252 ] }, { "teal": 249, "source": "examples/amm/amm.algo.ts:52", "pc": [ 253, 254 ] }, { "teal": 250, "source": "examples/amm/amm.algo.ts:52", "pc": [ 255 ] }, { "teal": 254, "source": "examples/amm/amm.algo.ts:61", "pc": [ 256, 257, 258 ] }, { "teal": 261, "source": "examples/amm/amm.algo.ts:63", "pc": [ 259, 260 ] }, { "teal": 262, "source": "examples/amm/amm.algo.ts:63", "pc": [ 261 ] }, { "teal": 263, "source": "examples/amm/amm.algo.ts:63", "pc": [ 262 ] }, { "teal": 264, "source": "examples/amm/amm.algo.ts:63", "pc": [ 263, 264 ] }, { "teal": 265, "source": "examples/amm/amm.algo.ts:63", "pc": [ 265 ] }, { "teal": 266, "source": "examples/amm/amm.algo.ts:63", "pc": [ 266 ] }, { "teal": 267, "source": "examples/amm/amm.algo.ts:62", "pc": [ 267 ] }, { "teal": 268, "source": "examples/amm/amm.algo.ts:62", "pc": [ 268 ] }, { "teal": 269, "source": "examples/amm/amm.algo.ts:64", "pc": [ 269, 270 ] }, { "teal": 270, "source": "examples/amm/amm.algo.ts:64", "pc": [ 271 ] }, { "teal": 271, "source": "examples/amm/amm.algo.ts:64", "pc": [ 272 ] }, { "teal": 272, "source": "examples/amm/amm.algo.ts:64", "pc": [ 273, 274 ] }, { "teal": 273, "source": "examples/amm/amm.algo.ts:64", "pc": [ 275 ] }, { "teal": 274, "source": "examples/amm/amm.algo.ts:62", "pc": [ 276 ] }, { "teal": 275, "source": "examples/amm/amm.algo.ts:62", "pc": [ 277 ] }, { "teal": 276, "source": "examples/amm/amm.algo.ts:62", "pc": [ 278 ] }, { "teal": 277, "source": "examples/amm/amm.algo.ts:62", "pc": [ 279 ] }, { "teal": 278, "source": "examples/amm/amm.algo.ts:62", "pc": [ 280 ] }, { "teal": 281, "source": "examples/amm/amm.algo.ts:62", "errorMessage": "wideRatio failed", "pc": [ 281 ] }, { "teal": 282, "source": "examples/amm/amm.algo.ts:61", "pc": [ 282 ] }, { "teal": 286, "source": "examples/amm/amm.algo.ts:68", "pc": [ 283, 284, 285 ] }, { "teal": 290, "source": "examples/amm/amm.algo.ts:69", "pc": [ 286, 287 ] }, { "teal": 291, "source": "examples/amm/amm.algo.ts:69", "pc": [ 288, 289 ] }, { "teal": 292, "source": "examples/amm/amm.algo.ts:69", "pc": [ 290 ] }, { "teal": 293, "source": "examples/amm/amm.algo.ts:69", "pc": [ 291 ] }, { "teal": 294, "source": "examples/amm/amm.algo.ts:69", "pc": [ 292, 293 ] }, { "teal": 295, "source": "examples/amm/amm.algo.ts:69", "pc": [ 294 ] }, { "teal": 296, "source": "examples/amm/amm.algo.ts:69", "pc": [ 295 ] }, { "teal": 297, "source": "examples/amm/amm.algo.ts:69", "pc": [ 296 ] }, { "teal": 298, "source": "examples/amm/amm.algo.ts:69", "pc": [ 297 ] }, { "teal": 299, "source": "examples/amm/amm.algo.ts:69", "pc": [ 298 ] }, { "teal": 302, "source": "examples/amm/amm.algo.ts:69", "errorMessage": "wideRatio failed", "pc": [ 299 ] }, { "teal": 303, "source": "examples/amm/amm.algo.ts:68", "pc": [ 300 ] }, { "teal": 307, "source": "examples/amm/amm.algo.ts:72", "pc": [ 301, 302, 303 ] }, { "teal": 310, "source": "examples/amm/amm.algo.ts:72", "pc": [ 304 ] }, { "teal": 314, "source": "examples/amm/amm.algo.ts:73", "pc": [ 305, 306, 307 ] }, { "teal": 315, "source": "examples/amm/amm.algo.ts:73", "pc": [ 308, 309 ] }, { "teal": 319, "source": "examples/amm/amm.algo.ts:74", "pc": [ 310, 311 ] }, { "teal": 320, "source": "examples/amm/amm.algo.ts:74", "pc": [ 312, 313 ] }, { "teal": 321, "source": "examples/amm/amm.algo.ts:74", "pc": [ 314 ] }, { "teal": 322, "source": "examples/amm/amm.algo.ts:74", "pc": [ 315, 316 ] }, { "teal": 323, "source": "examples/amm/amm.algo.ts:74", "pc": [ 317, 318 ] }, { "teal": 324, "source": "examples/amm/amm.algo.ts:74", "pc": [ 319, 320 ] }, { "teal": 325, "source": "examples/amm/amm.algo.ts:74", "pc": [ 321 ] }, { "teal": 326, "source": "examples/amm/amm.algo.ts:74", "pc": [ 322, 323 ] }, { "teal": 327, "source": "examples/amm/amm.algo.ts:74", "pc": [ 324 ] }, { "teal": 328, "source": "examples/amm/amm.algo.ts:74", "pc": [ 325, 326 ] }, { "teal": 329, "source": "examples/amm/amm.algo.ts:74", "pc": [ 327 ] }, { "teal": 330, "source": "examples/amm/amm.algo.ts:74", "pc": [ 328 ] }, { "teal": 331, "source": "examples/amm/amm.algo.ts:74", "pc": [ 329 ] }, { "teal": 332, "source": "examples/amm/amm.algo.ts:74", "pc": [ 330, 331 ] }, { "teal": 333, "source": "examples/amm/amm.algo.ts:74", "pc": [ 332 ] }, { "teal": 334, "source": "examples/amm/amm.algo.ts:74", "pc": [ 333 ] }, { "teal": 335, "source": "examples/amm/amm.algo.ts:74", "pc": [ 334, 335 ] }, { "teal": 336, "source": "examples/amm/amm.algo.ts:74", "pc": [ 336, 337 ] }, { "teal": 337, "source": "examples/amm/amm.algo.ts:74", "pc": [ 338 ] }, { "teal": 338, "source": "examples/amm/amm.algo.ts:74", "pc": [ 339 ] }, { "teal": 339, "source": "examples/amm/amm.algo.ts:74", "pc": [ 340 ] }, { "teal": 340, "source": "examples/amm/amm.algo.ts:74", "pc": [ 341 ] }, { "teal": 341, "source": "examples/amm/amm.algo.ts:74", "pc": [ 342 ] }, { "teal": 342, "source": "examples/amm/amm.algo.ts:74", "pc": [ 343 ] }, { "teal": 343, "source": "examples/amm/amm.algo.ts:74", "pc": [ 344 ] }, { "teal": 346, "source": "examples/amm/amm.algo.ts:74", "errorMessage": "wideRatio failed", "pc": [ 345 ] }, { "teal": 349, "source": "examples/amm/amm.algo.ts:72", "pc": [ 346, 347 ] }, { "teal": 350, "source": "examples/amm/amm.algo.ts:72", "pc": [ 348 ] }, { "teal": 355, "source": "examples/amm/amm.algo.ts:77", "pc": [ 349, 350, 351 ] }, { "teal": 356, "source": "examples/amm/amm.algo.ts:77", "pc": [ 352 ] }, { "teal": 357, "source": "examples/amm/amm.algo.ts:77", "pc": [ 353 ] }, { "teal": 358, "source": "examples/amm/amm.algo.ts:77", "pc": [ 354, 355 ] }, { "teal": 359, "source": "examples/amm/amm.algo.ts:77", "pc": [ 356 ] }, { "teal": 362, "source": "examples/amm/amm.algo.ts:77", "errorMessage": "argument 0 (governor) for set_governor must be a address", "pc": [ 357 ] }, { "teal": 365, "source": "examples/amm/amm.algo.ts:77", "pc": [ 358, 359, 360 ] }, { "teal": 366, "source": "examples/amm/amm.algo.ts:77", "pc": [ 361 ] }, { "teal": 367, "source": "examples/amm/amm.algo.ts:77", "pc": [ 362 ] }, { "teal": 371, "source": "examples/amm/amm.algo.ts:77", "pc": [ 363, 364, 365 ] }, { "teal": 376, "source": "examples/amm/amm.algo.ts:78", "pc": [ 366, 367 ] }, { "teal": 377, "source": "examples/amm/amm.algo.ts:78", "pc": [ 368 ] }, { "teal": 378, "source": "examples/amm/amm.algo.ts:78", "pc": [ 369 ] }, { "teal": 379, "source": "examples/amm/amm.algo.ts:78", "pc": [ 370 ] }, { "teal": 382, "source": "examples/amm/amm.algo.ts:78", "errorMessage": "transaction verification failed: {\"txn\":\"this.txn\",\"field\":\"sender\",\"expected\":\"this.governor.value\"}", "pc": [ 371 ] }, { "teal": 386, "source": "examples/amm/amm.algo.ts:79", "pc": [ 372 ] }, { "teal": 387, "source": "examples/amm/amm.algo.ts:79", "pc": [ 373, 374 ] }, { "teal": 388, "source": "examples/amm/amm.algo.ts:79", "pc": [ 375 ] }, { "teal": 389, "source": "examples/amm/amm.algo.ts:77", "pc": [ 376 ] }, { "teal": 394, "source": "examples/amm/amm.algo.ts:82", "pc": [ 377, 378, 379, 380, 381, 382 ] }, { "teal": 397, "source": "examples/amm/amm.algo.ts:82", "pc": [ 383, 384, 385 ] }, { "teal": 398, "source": "examples/amm/amm.algo.ts:82", "pc": [ 386 ] }, { "teal": 401, "source": "examples/amm/amm.algo.ts:82", "pc": [ 387, 388, 389 ] }, { "teal": 402, "source": "examples/amm/amm.algo.ts:82", "pc": [ 390 ] }, { "teal": 405, "source": "examples/amm/amm.algo.ts:82", "pc": [ 391, 392 ] }, { "teal": 406, "source": "examples/amm/amm.algo.ts:82", "pc": [ 393 ] }, { "teal": 407, "source": "examples/amm/amm.algo.ts:82", "pc": [ 394 ] }, { "teal": 408, "source": "examples/amm/amm.algo.ts:82", "pc": [ 395 ] }, { "teal": 409, "source": "examples/amm/amm.algo.ts:82", "pc": [ 396, 397 ] }, { "teal": 410, "source": "examples/amm/amm.algo.ts:82", "pc": [ 398 ] }, { "teal": 411, "source": "examples/amm/amm.algo.ts:82", "pc": [ 399 ] }, { "teal": 414, "source": "examples/amm/amm.algo.ts:82", "errorMessage": "argument 2 (seed) for bootstrap must be a pay transaction", "pc": [ 400 ] }, { "teal": 417, "source": "examples/amm/amm.algo.ts:82", "pc": [ 401, 402, 403 ] }, { "teal": 418, "source": "examples/amm/amm.algo.ts:82", "pc": [ 404 ] }, { "teal": 419, "source": "examples/amm/amm.algo.ts:82", "pc": [ 405 ] }, { "teal": 420, "source": "examples/amm/amm.algo.ts:82", "pc": [ 406 ] }, { "teal": 421, "source": "examples/amm/amm.algo.ts:82", "pc": [ 407 ] }, { "teal": 422, "source": "examples/amm/amm.algo.ts:82", "pc": [ 408 ] }, { "teal": 426, "source": "examples/amm/amm.algo.ts:82", "pc": [ 409, 410, 411 ] }, { "teal": 431, "source": "examples/amm/amm.algo.ts:83", "pc": [ 412, 413 ] }, { "teal": 432, "source": "examples/amm/amm.algo.ts:83", "pc": [ 414 ] }, { "teal": 433, "source": "examples/amm/amm.algo.ts:83", "pc": [ 415 ] }, { "teal": 434, "source": "examples/amm/amm.algo.ts:83", "pc": [ 416 ] }, { "teal": 437, "source": "examples/amm/amm.algo.ts:83", "errorMessage": "transaction verification failed: {\"txn\":\"this.txn\",\"field\":\"sender\",\"expected\":\"this.governor.value\"}", "pc": [ 417 ] }, { "teal": 441, "source": "examples/amm/amm.algo.ts:85", "pc": [ 418, 419 ] }, { "teal": 442, "source": "examples/amm/amm.algo.ts:85", "pc": [ 420, 421 ] }, { "teal": 443, "source": "examples/amm/amm.algo.ts:85", "pc": [ 422 ] }, { "teal": 444, "source": "examples/amm/amm.algo.ts:85", "pc": [ 423 ] }, { "teal": 449, "source": "examples/amm/amm.algo.ts:87", "pc": [ 424, 425 ] }, { "teal": 450, "source": "examples/amm/amm.algo.ts:87", "pc": [ 426, 427 ] }, { "teal": 451, "source": "examples/amm/amm.algo.ts:87", "pc": [ 428, 429 ] }, { "teal": 452, "source": "examples/amm/amm.algo.ts:87", "pc": [ 430 ] }, { "teal": 455, "source": "examples/amm/amm.algo.ts:87", "errorMessage": "transaction verification failed: {\"txn\":\"seed\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", "pc": [ 431 ] }, { "teal": 458, "source": "examples/amm/amm.algo.ts:87", "pc": [ 432, 433 ] }, { "teal": 459, "source": "examples/amm/amm.algo.ts:87", "pc": [ 434, 435 ] }, { "teal": 460, "source": "examples/amm/amm.algo.ts:87", "pc": [ 436, 437, 438, 439 ] }, { "teal": 461, "source": "examples/amm/amm.algo.ts:87", "pc": [ 440 ] }, { "teal": 464, "source": "examples/amm/amm.algo.ts:87", "errorMessage": "transaction verification failed: {\"txn\":\"seed\",\"field\":\"amount\",\"condition\":\"greaterThanEqualTo\",\"expected\":\">=300_000\"}", "pc": [ 441 ] }, { "teal": 468, "source": "examples/amm/amm.algo.ts:88", "pc": [ 442, 443 ] }, { "teal": 469, "source": "examples/amm/amm.algo.ts:88", "pc": [ 444, 445 ] }, { "teal": 470, "source": "examples/amm/amm.algo.ts:88", "pc": [ 446 ] }, { "teal": 471, "source": "examples/amm/amm.algo.ts:88", "pc": [ 447 ] }, { "teal": 475, "source": "examples/amm/amm.algo.ts:90", "pc": [ 448 ] }, { "teal": 476, "source": "examples/amm/amm.algo.ts:90", "pc": [ 449, 450 ] }, { "teal": 477, "source": "examples/amm/amm.algo.ts:90", "pc": [ 451 ] }, { "teal": 481, "source": "examples/amm/amm.algo.ts:91", "pc": [ 452 ] }, { "teal": 482, "source": "examples/amm/amm.algo.ts:91", "pc": [ 453, 454 ] }, { "teal": 483, "source": "examples/amm/amm.algo.ts:91", "pc": [ 455 ] }, { "teal": 487, "source": "examples/amm/amm.algo.ts:92", "pc": [ 456, 457 ] }, { "teal": 488, "source": "examples/amm/amm.algo.ts:92", "pc": [ 458, 459 ] }, { "teal": 489, "source": "examples/amm/amm.algo.ts:92", "pc": [ 460, 461 ] }, { "teal": 490, "source": "examples/amm/amm.algo.ts:92", "pc": [ 462, 463, 464 ] }, { "teal": 491, "source": "examples/amm/amm.algo.ts:92", "pc": [ 465 ] }, { "teal": 495, "source": "examples/amm/amm.algo.ts:94", "pc": [ 466, 467 ] }, { "teal": 496, "source": "examples/amm/amm.algo.ts:94", "pc": [ 468, 469, 470 ] }, { "teal": 500, "source": "examples/amm/amm.algo.ts:95", "pc": [ 471, 472 ] }, { "teal": 501, "source": "examples/amm/amm.algo.ts:95", "pc": [ 473, 474, 475 ] }, { "teal": 505, "source": "examples/amm/amm.algo.ts:97", "pc": [ 476, 477 ] }, { "teal": 506, "source": "examples/amm/amm.algo.ts:97", "pc": [ 478 ] }, { "teal": 507, "source": "examples/amm/amm.algo.ts:82", "pc": [ 479 ] }, { "teal": 512, "source": "examples/amm/amm.algo.ts:100", "pc": [ 480, 481, 482 ] }, { "teal": 513, "source": "examples/amm/amm.algo.ts:100", "pc": [ 483 ] }, { "teal": 516, "source": "examples/amm/amm.algo.ts:100", "pc": [ 484, 485, 486 ] }, { "teal": 517, "source": "examples/amm/amm.algo.ts:100", "pc": [ 487 ] }, { "teal": 520, "source": "examples/amm/amm.algo.ts:100", "pc": [ 488, 489, 490 ] }, { "teal": 521, "source": "examples/amm/amm.algo.ts:100", "pc": [ 491 ] }, { "teal": 524, "source": "examples/amm/amm.algo.ts:100", "pc": [ 492, 493 ] }, { "teal": 525, "source": "examples/amm/amm.algo.ts:100", "pc": [ 494 ] }, { "teal": 526, "source": "examples/amm/amm.algo.ts:100", "pc": [ 495 ] }, { "teal": 527, "source": "examples/amm/amm.algo.ts:100", "pc": [ 496 ] }, { "teal": 528, "source": "examples/amm/amm.algo.ts:100", "pc": [ 497, 498 ] }, { "teal": 529, "source": "examples/amm/amm.algo.ts:100", "pc": [ 499 ] }, { "teal": 530, "source": "examples/amm/amm.algo.ts:100", "pc": [ 500 ] }, { "teal": 533, "source": "examples/amm/amm.algo.ts:100", "errorMessage": "argument 3 (bXfer) for mint must be a axfer transaction", "pc": [ 501 ] }, { "teal": 536, "source": "examples/amm/amm.algo.ts:100", "pc": [ 502, 503 ] }, { "teal": 537, "source": "examples/amm/amm.algo.ts:100", "pc": [ 504, 505 ] }, { "teal": 538, "source": "examples/amm/amm.algo.ts:100", "pc": [ 506 ] }, { "teal": 539, "source": "examples/amm/amm.algo.ts:100", "pc": [ 507 ] }, { "teal": 540, "source": "examples/amm/amm.algo.ts:100", "pc": [ 508, 509 ] }, { "teal": 541, "source": "examples/amm/amm.algo.ts:100", "pc": [ 510 ] }, { "teal": 542, "source": "examples/amm/amm.algo.ts:100", "pc": [ 511 ] }, { "teal": 545, "source": "examples/amm/amm.algo.ts:100", "errorMessage": "argument 4 (aXfer) for mint must be a axfer transaction", "pc": [ 512 ] }, { "teal": 548, "source": "examples/amm/amm.algo.ts:100", "pc": [ 513, 514, 515 ] }, { "teal": 549, "source": "examples/amm/amm.algo.ts:100", "pc": [ 516 ] }, { "teal": 550, "source": "examples/amm/amm.algo.ts:100", "pc": [ 517 ] }, { "teal": 554, "source": "examples/amm/amm.algo.ts:100", "pc": [ 518, 519, 520 ] }, { "teal": 557, "source": "examples/amm/amm.algo.ts:100", "pc": [ 521 ] }, { "teal": 562, "source": "examples/amm/amm.algo.ts:102", "pc": [ 522, 523 ] }, { "teal": 563, "source": "examples/amm/amm.algo.ts:102", "pc": [ 524 ] }, { "teal": 564, "source": "examples/amm/amm.algo.ts:102", "pc": [ 525 ] }, { "teal": 565, "source": "examples/amm/amm.algo.ts:102", "pc": [ 526 ] }, { "teal": 566, "source": "examples/amm/amm.algo.ts:102", "pc": [ 527 ] }, { "teal": 570, "source": "examples/amm/amm.algo.ts:103", "pc": [ 528, 529 ] }, { "teal": 571, "source": "examples/amm/amm.algo.ts:103", "pc": [ 530 ] }, { "teal": 572, "source": "examples/amm/amm.algo.ts:103", "pc": [ 531 ] }, { "teal": 573, "source": "examples/amm/amm.algo.ts:103", "pc": [ 532 ] }, { "teal": 574, "source": "examples/amm/amm.algo.ts:103", "pc": [ 533 ] }, { "teal": 578, "source": "examples/amm/amm.algo.ts:104", "pc": [ 534, 535 ] }, { "teal": 579, "source": "examples/amm/amm.algo.ts:104", "pc": [ 536, 537 ] }, { "teal": 580, "source": "examples/amm/amm.algo.ts:104", "pc": [ 538 ] }, { "teal": 581, "source": "examples/amm/amm.algo.ts:104", "pc": [ 539 ] }, { "teal": 582, "source": "examples/amm/amm.algo.ts:104", "pc": [ 540 ] }, { "teal": 593, "source": "examples/amm/amm.algo.ts:107", "pc": [ 541, 542 ] }, { "teal": 594, "source": "examples/amm/amm.algo.ts:108", "pc": [ 543, 544 ] }, { "teal": 595, "source": "examples/amm/amm.algo.ts:108", "pc": [ 545, 546 ] }, { "teal": 596, "source": "examples/amm/amm.algo.ts:108", "pc": [ 547 ] }, { "teal": 599, "source": "examples/amm/amm.algo.ts:108", "errorMessage": "transaction verification failed: {\"txn\":\"aXfer\",\"field\":\"sender\",\"expected\":\"this.txn.sender\"}", "pc": [ 548 ] }, { "teal": 602, "source": "examples/amm/amm.algo.ts:107", "pc": [ 549, 550 ] }, { "teal": 603, "source": "examples/amm/amm.algo.ts:109", "pc": [ 551, 552 ] }, { "teal": 604, "source": "examples/amm/amm.algo.ts:109", "pc": [ 553 ] }, { "teal": 605, "source": "examples/amm/amm.algo.ts:109", "pc": [ 554 ] }, { "teal": 608, "source": "examples/amm/amm.algo.ts:109", "errorMessage": "transaction verification failed: {\"txn\":\"aXfer\",\"field\":\"assetAmount\",\"condition\":\"greaterThan\",\"expected\":\">0\"}", "pc": [ 555 ] }, { "teal": 611, "source": "examples/amm/amm.algo.ts:107", "pc": [ 556, 557 ] }, { "teal": 612, "source": "examples/amm/amm.algo.ts:110", "pc": [ 558, 559 ] }, { "teal": 613, "source": "examples/amm/amm.algo.ts:110", "pc": [ 560, 561 ] }, { "teal": 614, "source": "examples/amm/amm.algo.ts:110", "pc": [ 562 ] }, { "teal": 617, "source": "examples/amm/amm.algo.ts:110", "errorMessage": "transaction verification failed: {\"txn\":\"aXfer\",\"field\":\"assetReceiver\",\"expected\":\"this.app.address\"}", "pc": [ 563 ] }, { "teal": 620, "source": "examples/amm/amm.algo.ts:107", "pc": [ 564, 565 ] }, { "teal": 621, "source": "examples/amm/amm.algo.ts:111", "pc": [ 566, 567 ] }, { "teal": 622, "source": "examples/amm/amm.algo.ts:111", "pc": [ 568, 569 ] }, { "teal": 623, "source": "examples/amm/amm.algo.ts:111", "pc": [ 570 ] }, { "teal": 626, "source": "examples/amm/amm.algo.ts:111", "errorMessage": "transaction verification failed: {\"txn\":\"aXfer\",\"field\":\"xferAsset\",\"expected\":\"aAsset\"}", "pc": [ 571 ] }, { "teal": 637, "source": "examples/amm/amm.algo.ts:115", "pc": [ 572, 573 ] }, { "teal": 638, "source": "examples/amm/amm.algo.ts:116", "pc": [ 574, 575 ] }, { "teal": 639, "source": "examples/amm/amm.algo.ts:116", "pc": [ 576, 577 ] }, { "teal": 640, "source": "examples/amm/amm.algo.ts:116", "pc": [ 578 ] }, { "teal": 643, "source": "examples/amm/amm.algo.ts:116", "errorMessage": "transaction verification failed: {\"txn\":\"bXfer\",\"field\":\"sender\",\"expected\":\"this.txn.sender\"}", "pc": [ 579 ] }, { "teal": 646, "source": "examples/amm/amm.algo.ts:115", "pc": [ 580, 581 ] }, { "teal": 647, "source": "examples/amm/amm.algo.ts:117", "pc": [ 582, 583 ] }, { "teal": 648, "source": "examples/amm/amm.algo.ts:117", "pc": [ 584 ] }, { "teal": 649, "source": "examples/amm/amm.algo.ts:117", "pc": [ 585 ] }, { "teal": 652, "source": "examples/amm/amm.algo.ts:117", "errorMessage": "transaction verification failed: {\"txn\":\"bXfer\",\"field\":\"assetAmount\",\"condition\":\"greaterThan\",\"expected\":\">0\"}", "pc": [ 586 ] }, { "teal": 655, "source": "examples/amm/amm.algo.ts:115", "pc": [ 587, 588 ] }, { "teal": 656, "source": "examples/amm/amm.algo.ts:118", "pc": [ 589, 590 ] }, { "teal": 657, "source": "examples/amm/amm.algo.ts:118", "pc": [ 591, 592 ] }, { "teal": 658, "source": "examples/amm/amm.algo.ts:118", "pc": [ 593 ] }, { "teal": 661, "source": "examples/amm/amm.algo.ts:118", "errorMessage": "transaction verification failed: {\"txn\":\"bXfer\",\"field\":\"assetReceiver\",\"expected\":\"this.app.address\"}", "pc": [ 594 ] }, { "teal": 664, "source": "examples/amm/amm.algo.ts:115", "pc": [ 595, 596 ] }, { "teal": 665, "source": "examples/amm/amm.algo.ts:119", "pc": [ 597, 598 ] }, { "teal": 666, "source": "examples/amm/amm.algo.ts:119", "pc": [ 599, 600 ] }, { "teal": 667, "source": "examples/amm/amm.algo.ts:119", "pc": [ 601 ] }, { "teal": 670, "source": "examples/amm/amm.algo.ts:119", "errorMessage": "transaction verification failed: {\"txn\":\"bXfer\",\"field\":\"xferAsset\",\"expected\":\"bAsset\"}", "pc": [ 602 ] }, { "teal": 676, "source": "examples/amm/amm.algo.ts:123", "pc": [ 603, 604 ] }, { "teal": 677, "source": "examples/amm/amm.algo.ts:123", "pc": [ 605, 606 ] }, { "teal": 678, "source": "examples/amm/amm.algo.ts:123", "pc": [ 607, 608 ] }, { "teal": 679, "source": "examples/amm/amm.algo.ts:123", "pc": [ 609 ] }, { "teal": 680, "source": "examples/amm/amm.algo.ts:123", "pc": [ 610, 611 ] }, { "teal": 681, "source": "examples/amm/amm.algo.ts:123", "pc": [ 612, 613 ] }, { "teal": 682, "source": "examples/amm/amm.algo.ts:123", "pc": [ 614 ] }, { "teal": 683, "source": "examples/amm/amm.algo.ts:123", "pc": [ 615 ] }, { "teal": 684, "source": "examples/amm/amm.algo.ts:123", "pc": [ 616, 617, 618 ] }, { "teal": 685, "source": "examples/amm/amm.algo.ts:124", "pc": [ 619, 620 ] }, { "teal": 686, "source": "examples/amm/amm.algo.ts:124", "pc": [ 621, 622 ] }, { "teal": 687, "source": "examples/amm/amm.algo.ts:124", "pc": [ 623, 624 ] }, { "teal": 688, "source": "examples/amm/amm.algo.ts:124", "pc": [ 625 ] }, { "teal": 689, "source": "examples/amm/amm.algo.ts:124", "pc": [ 626, 627 ] }, { "teal": 690, "source": "examples/amm/amm.algo.ts:124", "pc": [ 628, 629 ] }, { "teal": 691, "source": "examples/amm/amm.algo.ts:124", "pc": [ 630 ] }, { "teal": 692, "source": "examples/amm/amm.algo.ts:123", "pc": [ 631 ] }, { "teal": 695, "source": "examples/amm/amm.algo.ts:122", "pc": [ 632, 633, 634 ] }, { "teal": 700, "source": "examples/amm/amm.algo.ts:126", "pc": [ 635, 636 ] }, { "teal": 701, "source": "examples/amm/amm.algo.ts:126", "pc": [ 637, 638 ] }, { "teal": 702, "source": "examples/amm/amm.algo.ts:126", "pc": [ 639, 640 ] }, { "teal": 703, "source": "examples/amm/amm.algo.ts:126", "pc": [ 641, 642 ] }, { "teal": 704, "source": "examples/amm/amm.algo.ts:126", "pc": [ 643, 644, 645 ] }, { "teal": 705, "source": "examples/amm/amm.algo.ts:122", "pc": [ 646, 647, 648 ] }, { "teal": 716, "source": "examples/amm/amm.algo.ts:133", "pc": [ 649, 650 ] }, { "teal": 717, "source": "examples/amm/amm.algo.ts:133", "pc": [ 651, 652 ] }, { "teal": 718, "source": "examples/amm/amm.algo.ts:132", "pc": [ 653, 654 ] }, { "teal": 719, "source": "examples/amm/amm.algo.ts:132", "pc": [ 655, 656 ] }, { "teal": 720, "source": "examples/amm/amm.algo.ts:131", "pc": [ 657, 658 ] }, { "teal": 721, "source": "examples/amm/amm.algo.ts:131", "pc": [ 659, 660 ] }, { "teal": 722, "source": "examples/amm/amm.algo.ts:131", "pc": [ 661, 662 ] }, { "teal": 723, "source": "examples/amm/amm.algo.ts:131", "pc": [ 663 ] }, { "teal": 724, "source": "examples/amm/amm.algo.ts:131", "pc": [ 664, 665 ] }, { "teal": 725, "source": "examples/amm/amm.algo.ts:131", "pc": [ 666, 667 ] }, { "teal": 726, "source": "examples/amm/amm.algo.ts:131", "pc": [ 668 ] }, { "teal": 727, "source": "examples/amm/amm.algo.ts:130", "pc": [ 669, 670 ] }, { "teal": 728, "source": "examples/amm/amm.algo.ts:130", "pc": [ 671, 672 ] }, { "teal": 729, "source": "examples/amm/amm.algo.ts:130", "pc": [ 673, 674 ] }, { "teal": 730, "source": "examples/amm/amm.algo.ts:130", "pc": [ 675 ] }, { "teal": 731, "source": "examples/amm/amm.algo.ts:130", "pc": [ 676, 677 ] }, { "teal": 732, "source": "examples/amm/amm.algo.ts:130", "pc": [ 678, 679 ] }, { "teal": 733, "source": "examples/amm/amm.algo.ts:130", "pc": [ 680 ] }, { "teal": 734, "source": "examples/amm/amm.algo.ts:129", "pc": [ 681, 682 ] }, { "teal": 735, "source": "examples/amm/amm.algo.ts:129", "pc": [ 683, 684 ] }, { "teal": 736, "source": "examples/amm/amm.algo.ts:129", "pc": [ 685, 686 ] }, { "teal": 737, "source": "examples/amm/amm.algo.ts:129", "pc": [ 687, 688 ] }, { "teal": 738, "source": "examples/amm/amm.algo.ts:129", "pc": [ 689 ] }, { "teal": 739, "source": "examples/amm/amm.algo.ts:129", "pc": [ 690 ] }, { "teal": 740, "source": "examples/amm/amm.algo.ts:128", "pc": [ 691, 692, 693 ] }, { "teal": 741, "source": "examples/amm/amm.algo.ts:128", "pc": [ 694, 695 ] }, { "teal": 745, "source": "examples/amm/amm.algo.ts:136", "pc": [ 696, 697 ] }, { "teal": 746, "source": "examples/amm/amm.algo.ts:136", "pc": [ 698 ] }, { "teal": 747, "source": "examples/amm/amm.algo.ts:136", "pc": [ 699 ] }, { "teal": 748, "source": "examples/amm/amm.algo.ts:136", "pc": [ 700 ] }, { "teal": 752, "source": "examples/amm/amm.algo.ts:138", "pc": [ 701, 702 ] }, { "teal": 753, "source": "examples/amm/amm.algo.ts:138", "pc": [ 703, 704 ] }, { "teal": 754, "source": "examples/amm/amm.algo.ts:138", "pc": [ 705, 706 ] }, { "teal": 755, "source": "examples/amm/amm.algo.ts:138", "pc": [ 707, 708, 709 ] }, { "teal": 758, "source": "examples/amm/amm.algo.ts:100", "pc": [ 710 ] }, { "teal": 763, "source": "examples/amm/amm.algo.ts:142", "pc": [ 711, 712, 713 ] }, { "teal": 764, "source": "examples/amm/amm.algo.ts:142", "pc": [ 714 ] }, { "teal": 767, "source": "examples/amm/amm.algo.ts:142", "pc": [ 715, 716, 717 ] }, { "teal": 768, "source": "examples/amm/amm.algo.ts:142", "pc": [ 718 ] }, { "teal": 771, "source": "examples/amm/amm.algo.ts:142", "pc": [ 719, 720, 721 ] }, { "teal": 772, "source": "examples/amm/amm.algo.ts:142", "pc": [ 722 ] }, { "teal": 775, "source": "examples/amm/amm.algo.ts:142", "pc": [ 723, 724 ] }, { "teal": 776, "source": "examples/amm/amm.algo.ts:142", "pc": [ 725 ] }, { "teal": 777, "source": "examples/amm/amm.algo.ts:142", "pc": [ 726 ] }, { "teal": 778, "source": "examples/amm/amm.algo.ts:142", "pc": [ 727 ] }, { "teal": 779, "source": "examples/amm/amm.algo.ts:142", "pc": [ 728, 729 ] }, { "teal": 780, "source": "examples/amm/amm.algo.ts:142", "pc": [ 730 ] }, { "teal": 781, "source": "examples/amm/amm.algo.ts:142", "pc": [ 731 ] }, { "teal": 784, "source": "examples/amm/amm.algo.ts:142", "errorMessage": "argument 3 (poolXfer) for burn must be a axfer transaction", "pc": [ 732 ] }, { "teal": 787, "source": "examples/amm/amm.algo.ts:142", "pc": [ 733, 734, 735 ] }, { "teal": 788, "source": "examples/amm/amm.algo.ts:142", "pc": [ 736 ] }, { "teal": 789, "source": "examples/amm/amm.algo.ts:142", "pc": [ 737 ] }, { "teal": 793, "source": "examples/amm/amm.algo.ts:142", "pc": [ 738, 739, 740 ] }, { "teal": 796, "source": "examples/amm/amm.algo.ts:142", "pc": [ 741 ] }, { "teal": 797, "source": "examples/amm/amm.algo.ts:142", "pc": [ 742, 743 ] }, { "teal": 802, "source": "examples/amm/amm.algo.ts:144", "pc": [ 744, 745 ] }, { "teal": 803, "source": "examples/amm/amm.algo.ts:144", "pc": [ 746, 747 ] }, { "teal": 804, "source": "examples/amm/amm.algo.ts:144", "pc": [ 748 ] }, { "teal": 805, "source": "examples/amm/amm.algo.ts:144", "pc": [ 749 ] }, { "teal": 806, "source": "examples/amm/amm.algo.ts:144", "pc": [ 750 ] }, { "teal": 810, "source": "examples/amm/amm.algo.ts:145", "pc": [ 751, 752 ] }, { "teal": 811, "source": "examples/amm/amm.algo.ts:145", "pc": [ 753 ] }, { "teal": 812, "source": "examples/amm/amm.algo.ts:145", "pc": [ 754 ] }, { "teal": 813, "source": "examples/amm/amm.algo.ts:145", "pc": [ 755 ] }, { "teal": 814, "source": "examples/amm/amm.algo.ts:145", "pc": [ 756 ] }, { "teal": 818, "source": "examples/amm/amm.algo.ts:146", "pc": [ 757, 758 ] }, { "teal": 819, "source": "examples/amm/amm.algo.ts:146", "pc": [ 759 ] }, { "teal": 820, "source": "examples/amm/amm.algo.ts:146", "pc": [ 760 ] }, { "teal": 821, "source": "examples/amm/amm.algo.ts:146", "pc": [ 761 ] }, { "teal": 822, "source": "examples/amm/amm.algo.ts:146", "pc": [ 762 ] }, { "teal": 833, "source": "examples/amm/amm.algo.ts:149", "pc": [ 763, 764 ] }, { "teal": 834, "source": "examples/amm/amm.algo.ts:150", "pc": [ 765, 766 ] }, { "teal": 835, "source": "examples/amm/amm.algo.ts:150", "pc": [ 767, 768 ] }, { "teal": 836, "source": "examples/amm/amm.algo.ts:150", "pc": [ 769 ] }, { "teal": 839, "source": "examples/amm/amm.algo.ts:150", "errorMessage": "transaction verification failed: {\"txn\":\"poolXfer\",\"field\":\"sender\",\"expected\":\"this.txn.sender\"}", "pc": [ 770 ] }, { "teal": 842, "source": "examples/amm/amm.algo.ts:149", "pc": [ 771, 772 ] }, { "teal": 843, "source": "examples/amm/amm.algo.ts:151", "pc": [ 773, 774 ] }, { "teal": 844, "source": "examples/amm/amm.algo.ts:151", "pc": [ 775 ] }, { "teal": 845, "source": "examples/amm/amm.algo.ts:151", "pc": [ 776 ] }, { "teal": 848, "source": "examples/amm/amm.algo.ts:151", "errorMessage": "transaction verification failed: {\"txn\":\"poolXfer\",\"field\":\"assetAmount\",\"condition\":\"greaterThan\",\"expected\":\">0\"}", "pc": [ 777 ] }, { "teal": 851, "source": "examples/amm/amm.algo.ts:149", "pc": [ 778, 779 ] }, { "teal": 852, "source": "examples/amm/amm.algo.ts:152", "pc": [ 780, 781 ] }, { "teal": 853, "source": "examples/amm/amm.algo.ts:152", "pc": [ 782, 783 ] }, { "teal": 854, "source": "examples/amm/amm.algo.ts:152", "pc": [ 784 ] }, { "teal": 857, "source": "examples/amm/amm.algo.ts:152", "errorMessage": "transaction verification failed: {\"txn\":\"poolXfer\",\"field\":\"assetReceiver\",\"expected\":\"this.app.address\"}", "pc": [ 785 ] }, { "teal": 860, "source": "examples/amm/amm.algo.ts:149", "pc": [ 786, 787 ] }, { "teal": 861, "source": "examples/amm/amm.algo.ts:153", "pc": [ 788, 789 ] }, { "teal": 862, "source": "examples/amm/amm.algo.ts:153", "pc": [ 790, 791 ] }, { "teal": 863, "source": "examples/amm/amm.algo.ts:153", "pc": [ 792 ] }, { "teal": 866, "source": "examples/amm/amm.algo.ts:153", "errorMessage": "transaction verification failed: {\"txn\":\"poolXfer\",\"field\":\"xferAsset\",\"expected\":\"poolAsset\"}", "pc": [ 793 ] }, { "teal": 870, "source": "examples/amm/amm.algo.ts:156", "pc": [ 794, 795 ] }, { "teal": 871, "source": "examples/amm/amm.algo.ts:156", "pc": [ 796, 797 ] }, { "teal": 872, "source": "examples/amm/amm.algo.ts:156", "pc": [ 798, 799 ] }, { "teal": 873, "source": "examples/amm/amm.algo.ts:156", "pc": [ 800, 801 ] }, { "teal": 874, "source": "examples/amm/amm.algo.ts:156", "pc": [ 802 ] }, { "teal": 875, "source": "examples/amm/amm.algo.ts:156", "pc": [ 803, 804 ] }, { "teal": 876, "source": "examples/amm/amm.algo.ts:156", "pc": [ 805, 806 ] }, { "teal": 877, "source": "examples/amm/amm.algo.ts:156", "pc": [ 807 ] }, { "teal": 878, "source": "examples/amm/amm.algo.ts:156", "pc": [ 808 ] }, { "teal": 879, "source": "examples/amm/amm.algo.ts:156", "pc": [ 809, 810 ] }, { "teal": 883, "source": "examples/amm/amm.algo.ts:158", "pc": [ 811, 812 ] }, { "teal": 884, "source": "examples/amm/amm.algo.ts:158", "pc": [ 813, 814 ] }, { "teal": 885, "source": "examples/amm/amm.algo.ts:158", "pc": [ 815, 816 ] }, { "teal": 886, "source": "examples/amm/amm.algo.ts:158", "pc": [ 817, 818 ] }, { "teal": 887, "source": "examples/amm/amm.algo.ts:158", "pc": [ 819, 820 ] }, { "teal": 888, "source": "examples/amm/amm.algo.ts:158", "pc": [ 821 ] }, { "teal": 889, "source": "examples/amm/amm.algo.ts:158", "pc": [ 822, 823 ] }, { "teal": 890, "source": "examples/amm/amm.algo.ts:158", "pc": [ 824, 825, 826 ] }, { "teal": 891, "source": "examples/amm/amm.algo.ts:158", "pc": [ 827, 828 ] }, { "teal": 895, "source": "examples/amm/amm.algo.ts:160", "pc": [ 829, 830 ] }, { "teal": 896, "source": "examples/amm/amm.algo.ts:160", "pc": [ 831, 832 ] }, { "teal": 897, "source": "examples/amm/amm.algo.ts:160", "pc": [ 833, 834 ] }, { "teal": 898, "source": "examples/amm/amm.algo.ts:160", "pc": [ 835, 836 ] }, { "teal": 899, "source": "examples/amm/amm.algo.ts:160", "pc": [ 837, 838 ] }, { "teal": 900, "source": "examples/amm/amm.algo.ts:160", "pc": [ 839 ] }, { "teal": 901, "source": "examples/amm/amm.algo.ts:160", "pc": [ 840, 841 ] }, { "teal": 902, "source": "examples/amm/amm.algo.ts:160", "pc": [ 842, 843, 844 ] }, { "teal": 903, "source": "examples/amm/amm.algo.ts:160", "pc": [ 845, 846 ] }, { "teal": 907, "source": "examples/amm/amm.algo.ts:162", "pc": [ 847, 848 ] }, { "teal": 908, "source": "examples/amm/amm.algo.ts:162", "pc": [ 849, 850 ] }, { "teal": 909, "source": "examples/amm/amm.algo.ts:162", "pc": [ 851, 852 ] }, { "teal": 910, "source": "examples/amm/amm.algo.ts:162", "pc": [ 853, 854, 855 ] }, { "teal": 914, "source": "examples/amm/amm.algo.ts:163", "pc": [ 856, 857 ] }, { "teal": 915, "source": "examples/amm/amm.algo.ts:163", "pc": [ 858, 859 ] }, { "teal": 916, "source": "examples/amm/amm.algo.ts:163", "pc": [ 860, 861 ] }, { "teal": 917, "source": "examples/amm/amm.algo.ts:163", "pc": [ 862, 863, 864 ] }, { "teal": 921, "source": "examples/amm/amm.algo.ts:165", "pc": [ 865, 866 ] }, { "teal": 922, "source": "examples/amm/amm.algo.ts:165", "pc": [ 867, 868, 869 ] }, { "teal": 923, "source": "examples/amm/amm.algo.ts:165", "pc": [ 870 ] }, { "teal": 924, "source": "examples/amm/amm.algo.ts:142", "pc": [ 871 ] }, { "teal": 929, "source": "examples/amm/amm.algo.ts:168", "pc": [ 872, 873, 874 ] }, { "teal": 930, "source": "examples/amm/amm.algo.ts:168", "pc": [ 875 ] }, { "teal": 933, "source": "examples/amm/amm.algo.ts:168", "pc": [ 876, 877, 878 ] }, { "teal": 934, "source": "examples/amm/amm.algo.ts:168", "pc": [ 879 ] }, { "teal": 937, "source": "examples/amm/amm.algo.ts:168", "pc": [ 880, 881 ] }, { "teal": 938, "source": "examples/amm/amm.algo.ts:168", "pc": [ 882 ] }, { "teal": 939, "source": "examples/amm/amm.algo.ts:168", "pc": [ 883 ] }, { "teal": 940, "source": "examples/amm/amm.algo.ts:168", "pc": [ 884 ] }, { "teal": 941, "source": "examples/amm/amm.algo.ts:168", "pc": [ 885, 886 ] }, { "teal": 942, "source": "examples/amm/amm.algo.ts:168", "pc": [ 887 ] }, { "teal": 943, "source": "examples/amm/amm.algo.ts:168", "pc": [ 888 ] }, { "teal": 946, "source": "examples/amm/amm.algo.ts:168", "errorMessage": "argument 2 (swapXfer) for swap must be a axfer transaction", "pc": [ 889 ] }, { "teal": 949, "source": "examples/amm/amm.algo.ts:168", "pc": [ 890, 891, 892 ] }, { "teal": 950, "source": "examples/amm/amm.algo.ts:168", "pc": [ 893 ] }, { "teal": 951, "source": "examples/amm/amm.algo.ts:168", "pc": [ 894 ] }, { "teal": 955, "source": "examples/amm/amm.algo.ts:168", "pc": [ 895, 896, 897 ] }, { "teal": 958, "source": "examples/amm/amm.algo.ts:168", "pc": [ 898 ] }, { "teal": 959, "source": "examples/amm/amm.algo.ts:168", "pc": [ 899, 900 ] }, { "teal": 964, "source": "examples/amm/amm.algo.ts:170", "pc": [ 901, 902 ] }, { "teal": 965, "source": "examples/amm/amm.algo.ts:170", "pc": [ 903 ] }, { "teal": 966, "source": "examples/amm/amm.algo.ts:170", "pc": [ 904 ] }, { "teal": 967, "source": "examples/amm/amm.algo.ts:170", "pc": [ 905 ] }, { "teal": 968, "source": "examples/amm/amm.algo.ts:170", "pc": [ 906 ] }, { "teal": 972, "source": "examples/amm/amm.algo.ts:171", "pc": [ 907, 908 ] }, { "teal": 973, "source": "examples/amm/amm.algo.ts:171", "pc": [ 909 ] }, { "teal": 974, "source": "examples/amm/amm.algo.ts:171", "pc": [ 910 ] }, { "teal": 975, "source": "examples/amm/amm.algo.ts:171", "pc": [ 911 ] }, { "teal": 976, "source": "examples/amm/amm.algo.ts:171", "pc": [ 912 ] }, { "teal": 986, "source": "examples/amm/amm.algo.ts:173", "pc": [ 913, 914 ] }, { "teal": 987, "source": "examples/amm/amm.algo.ts:174", "pc": [ 915, 916 ] }, { "teal": 988, "source": "examples/amm/amm.algo.ts:174", "pc": [ 917 ] }, { "teal": 989, "source": "examples/amm/amm.algo.ts:174", "pc": [ 918 ] }, { "teal": 992, "source": "examples/amm/amm.algo.ts:174", "errorMessage": "transaction verification failed: {\"txn\":\"swapXfer\",\"field\":\"assetAmount\",\"condition\":\"greaterThan\",\"expected\":\">0\"}", "pc": [ 919 ] }, { "teal": 995, "source": "examples/amm/amm.algo.ts:173", "pc": [ 920, 921 ] }, { "teal": 996, "source": "examples/amm/amm.algo.ts:175", "pc": [ 922, 923 ] }, { "teal": 997, "source": "examples/amm/amm.algo.ts:175", "pc": [ 924, 925 ] }, { "teal": 998, "source": "examples/amm/amm.algo.ts:175", "pc": [ 926 ] }, { "teal": 1001, "source": "examples/amm/amm.algo.ts:175", "errorMessage": "transaction verification failed: {\"txn\":\"swapXfer\",\"field\":\"assetReceiver\",\"expected\":\"this.app.address\"}", "pc": [ 927 ] }, { "teal": 1004, "source": "examples/amm/amm.algo.ts:173", "pc": [ 928, 929 ] }, { "teal": 1005, "source": "examples/amm/amm.algo.ts:176", "pc": [ 930, 931 ] }, { "teal": 1006, "source": "examples/amm/amm.algo.ts:176", "pc": [ 932, 933 ] }, { "teal": 1007, "source": "examples/amm/amm.algo.ts:176", "pc": [ 934 ] }, { "teal": 1010, "source": "examples/amm/amm.algo.ts:176", "errorMessage": "transaction verification failed: {\"txn\":\"swapXfer\",\"field\":\"sender\",\"expected\":\"this.txn.sender\"}", "pc": [ 935 ] }, { "teal": 1013, "source": "examples/amm/amm.algo.ts:173", "pc": [ 936, 937 ] }, { "teal": 1014, "source": "examples/amm/amm.algo.ts:177", "pc": [ 938, 939 ] }, { "teal": 1015, "source": "examples/amm/amm.algo.ts:177", "pc": [ 940, 941 ] }, { "teal": 1016, "source": "examples/amm/amm.algo.ts:177", "pc": [ 942 ] }, { "teal": 1017, "source": "examples/amm/amm.algo.ts:173", "pc": [ 943, 944 ] }, { "teal": 1018, "source": "examples/amm/amm.algo.ts:177", "pc": [ 945, 946 ] }, { "teal": 1019, "source": "examples/amm/amm.algo.ts:177", "pc": [ 947, 948 ] }, { "teal": 1020, "source": "examples/amm/amm.algo.ts:177", "pc": [ 949 ] }, { "teal": 1021, "source": "examples/amm/amm.algo.ts:177", "pc": [ 950 ] }, { "teal": 1024, "source": "examples/amm/amm.algo.ts:177", "errorMessage": "transaction verification failed: {\"txn\":{\"txnText\":\"swapXfer\"},\"field\":\"xferAsset\",\"condition\":\"includedIn\",\"expected\":\"[aAsset, bAsset]\"}", "pc": [ 951 ] }, { "teal": 1028, "source": "examples/amm/amm.algo.ts:180", "pc": [ 952, 953 ] }, { "teal": 1029, "source": "examples/amm/amm.algo.ts:180", "pc": [ 954, 955 ] }, { "teal": 1030, "source": "examples/amm/amm.algo.ts:180", "pc": [ 956, 957 ] }, { "teal": 1031, "source": "examples/amm/amm.algo.ts:180", "pc": [ 958 ] }, { "teal": 1032, "source": "examples/amm/amm.algo.ts:180", "pc": [ 959, 960, 961 ] }, { "teal": 1033, "source": "examples/amm/amm.algo.ts:180", "pc": [ 962, 963 ] }, { "teal": 1034, "source": "examples/amm/amm.algo.ts:180", "pc": [ 964, 965, 966 ] }, { "teal": 1037, "source": "examples/amm/amm.algo.ts:180", "pc": [ 967, 968 ] }, { "teal": 1040, "source": "examples/amm/amm.algo.ts:180", "pc": [ 969, 970 ] }, { "teal": 1044, "source": "examples/amm/amm.algo.ts:182", "pc": [ 971, 972 ] }, { "teal": 1045, "source": "examples/amm/amm.algo.ts:182", "pc": [ 973, 974 ] }, { "teal": 1046, "source": "examples/amm/amm.algo.ts:182", "pc": [ 975, 976 ] }, { "teal": 1054, "source": "examples/amm/amm.algo.ts:187", "pc": [ 977, 978 ] }, { "teal": 1055, "source": "examples/amm/amm.algo.ts:187", "pc": [ 979, 980 ] }, { "teal": 1056, "source": "examples/amm/amm.algo.ts:187", "pc": [ 981, 982 ] }, { "teal": 1057, "source": "examples/amm/amm.algo.ts:187", "pc": [ 983 ] }, { "teal": 1058, "source": "examples/amm/amm.algo.ts:186", "pc": [ 984, 985 ] }, { "teal": 1059, "source": "examples/amm/amm.algo.ts:186", "pc": [ 986, 987 ] }, { "teal": 1060, "source": "examples/amm/amm.algo.ts:186", "pc": [ 988, 989 ] }, { "teal": 1061, "source": "examples/amm/amm.algo.ts:186", "pc": [ 990 ] }, { "teal": 1062, "source": "examples/amm/amm.algo.ts:186", "pc": [ 991, 992 ] }, { "teal": 1063, "source": "examples/amm/amm.algo.ts:186", "pc": [ 993, 994 ] }, { "teal": 1064, "source": "examples/amm/amm.algo.ts:186", "pc": [ 995 ] }, { "teal": 1065, "source": "examples/amm/amm.algo.ts:185", "pc": [ 996, 997 ] }, { "teal": 1066, "source": "examples/amm/amm.algo.ts:185", "pc": [ 998, 999 ] }, { "teal": 1067, "source": "examples/amm/amm.algo.ts:184", "pc": [ 1000, 1001, 1002 ] }, { "teal": 1068, "source": "examples/amm/amm.algo.ts:184", "pc": [ 1003, 1004 ] }, { "teal": 1072, "source": "examples/amm/amm.algo.ts:190", "pc": [ 1005, 1006 ] }, { "teal": 1073, "source": "examples/amm/amm.algo.ts:190", "pc": [ 1007 ] }, { "teal": 1074, "source": "examples/amm/amm.algo.ts:190", "pc": [ 1008 ] }, { "teal": 1075, "source": "examples/amm/amm.algo.ts:190", "pc": [ 1009 ] }, { "teal": 1079, "source": "examples/amm/amm.algo.ts:192", "pc": [ 1010, 1011 ] }, { "teal": 1080, "source": "examples/amm/amm.algo.ts:192", "pc": [ 1012, 1013 ] }, { "teal": 1081, "source": "examples/amm/amm.algo.ts:192", "pc": [ 1014, 1015 ] }, { "teal": 1082, "source": "examples/amm/amm.algo.ts:192", "pc": [ 1016, 1017, 1018 ] }, { "teal": 1086, "source": "examples/amm/amm.algo.ts:194", "pc": [ 1019, 1020 ] }, { "teal": 1087, "source": "examples/amm/amm.algo.ts:194", "pc": [ 1021, 1022, 1023 ] }, { "teal": 1088, "source": "examples/amm/amm.algo.ts:194", "pc": [ 1024 ] }, { "teal": 1089, "source": "examples/amm/amm.algo.ts:168", "pc": [ 1025 ] }, { "teal": 1092, "source": "examples/amm/amm.algo.ts:8", "pc": [ 1026, 1027, 1028, 1029, 1030, 1031 ] }, { "teal": 1093, "source": "examples/amm/amm.algo.ts:8", "pc": [ 1032, 1033, 1034 ] }, { "teal": 1094, "source": "examples/amm/amm.algo.ts:8", "pc": [ 1035, 1036, 1037, 1038 ] }, { "teal": 1097, "source": "examples/amm/amm.algo.ts:8", "errorMessage": "this contract does not implement the given ABI method for create NoOp", "pc": [ 1039 ] }, { "teal": 1100, "source": "examples/amm/amm.algo.ts:8", "pc": [ 1040, 1041, 1042, 1043, 1044, 1045 ] }, { "teal": 1101, "source": "examples/amm/amm.algo.ts:8", "pc": [ 1046, 1047, 1048, 1049, 1050, 1051 ] }, { "teal": 1102, "source": "examples/amm/amm.algo.ts:8", "pc": [ 1052, 1053, 1054, 1055, 1056, 1057 ] }, { "teal": 1103, "source": "examples/amm/amm.algo.ts:8", "pc": [ 1058, 1059, 1060, 1061, 1062, 1063 ] }, { "teal": 1104, "source": "examples/amm/amm.algo.ts:8", "pc": [ 1064, 1065, 1066, 1067, 1068, 1069 ] }, { "teal": 1105, "source": "examples/amm/amm.algo.ts:8", "pc": [ 1070, 1071, 1072 ] }, { "teal": 1106, "source": "examples/amm/amm.algo.ts:8", "pc": [ 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084 ] }, { "teal": 1109, "source": "examples/amm/amm.algo.ts:8", "errorMessage": "this contract does not implement the given ABI method for call NoOp", "pc": [ 1085 ] } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEgMTAwMCA0IDEwMDAwMDAwMDAwIDIgMwpieXRlY2Jsb2NrIDB4IDB4NjEgMHg2MiAweDY3IDB4NzAgMHg3MgoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDcuMgovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CgkvLyBleGVjdXRlIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCgljYWxsc3ViIGNyZWF0ZUFwcGxpY2F0aW9uCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjcmVhdGVBcHBsaWNhdGlvbigpOiB2b2lkCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gMCAwCgoJLy8gZXhhbXBsZXMvYW1tL2FtbS5hbGdvLnRzOjIwCgkvLyB0aGlzLmdvdmVybm9yLnZhbHVlID0gdGhpcy50eG4uc2VuZGVyCglieXRlYyAzIC8vICAiZyIKCXR4biBTZW5kZXIKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGRvQ3JlYXRlUG9vbFRva2VuKGFBc3NldDogQXNzZXRJRCwgYkFzc2V0OiBBc3NldElEKTogQXNzZXRJRApkb0NyZWF0ZVBvb2xUb2tlbjoKCXByb3RvIDIgMQoKCS8vIGV4YW1wbGVzL2FtbS9hbW0uYWxnby50czoyNgoJLy8gcmV0dXJuIHNlbmRBc3NldENyZWF0aW9uKHsKCS8vICAgICAgIGNvbmZpZ0Fzc2V0TmFtZTogJ0RQVC0nICsgYUFzc2V0LnVuaXROYW1lICsgJy0nICsgYkFzc2V0LnVuaXROYW1lLAoJLy8gICAgICAgY29uZmlnQXNzZXRVbml0TmFtZTogJ2RwdCcsCgkvLyAgICAgICBjb25maWdBc3NldFRvdGFsOiBUT1RBTF9TVVBQTFksCgkvLyAgICAgICBjb25maWdBc3NldERlY2ltYWxzOiAzLAoJLy8gICAgICAgY29uZmlnQXNzZXRNYW5hZ2VyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgY29uZmlnQXNzZXRSZXNlcnZlOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgIH0pOwoJaXR4bl9iZWdpbgoJaW50YyA2IC8vICBhY2ZnCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gZXhhbXBsZXMvYW1tL2FtbS5hbGdvLnRzOjI3CgkvLyBjb25maWdBc3NldE5hbWU6ICdEUFQtJyArIGFBc3NldC51bml0TmFtZSArICctJyArIGJBc3NldC51bml0TmFtZQoJcHVzaGJ5dGVzIDB4NDQ1MDU0MmQgLy8gIkRQVC0iCglmcmFtZV9kaWcgLTEgLy8gYUFzc2V0OiBBc3NldElECglhc3NldF9wYXJhbXNfZ2V0IEFzc2V0VW5pdE5hbWUKCXBvcAoJY29uY2F0CglwdXNoYnl0ZXMgMHgyZCAvLyAiLSIKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIGJBc3NldDogQXNzZXRJRAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldFVuaXROYW1lCglwb3AKCWNvbmNhdAoJaXR4bl9maWVsZCBDb25maWdBc3NldE5hbWUKCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6MjgKCS8vIGNvbmZpZ0Fzc2V0VW5pdE5hbWU6ICdkcHQnCglwdXNoYnl0ZXMgMHg2NDcwNzQgLy8gImRwdCIKCWl0eG5fZmllbGQgQ29uZmlnQXNzZXRVbml0TmFtZQoKCS8vIGV4YW1wbGVzL2FtbS9hbW0uYWxnby50czoyOQoJLy8gY29uZmlnQXNzZXRUb3RhbDogVE9UQUxfU1VQUExZCglpbnRjIDQgLy8gMTAwMDAwMDAwMDAKCWl0eG5fZmllbGQgQ29uZmlnQXNzZXRUb3RhbAoKCS8vIGV4YW1wbGVzL2FtbS9hbW0uYWxnby50czozMAoJLy8gY29uZmlnQXNzZXREZWNpbWFsczogMwoJaW50YyA2IC8vIDMKCWl0eG5fZmllbGQgQ29uZmlnQXNzZXREZWNpbWFscwoKCS8vIGV4YW1wbGVzL2FtbS9hbW0uYWxnby50czozMQoJLy8gY29uZmlnQXNzZXRNYW5hZ2VyOiB0aGlzLmFwcC5hZGRyZXNzCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJaXR4bl9maWVsZCBDb25maWdBc3NldE1hbmFnZXIKCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6MzIKCS8vIGNvbmZpZ0Fzc2V0UmVzZXJ2ZTogdGhpcy5hcHAuYWRkcmVzcwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWl0eG5fZmllbGQgQ29uZmlnQXNzZXRSZXNlcnZlCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBDcmVhdGVkQXNzZXRJRAoJcmV0c3ViCgovLyBkb0F4ZmVyKHJlY2VpdmVyOiBBZGRyZXNzLCBhc3NldDogQXNzZXRJRCwgYW1vdW50OiB1aW50NjQpOiB2b2lkCmRvQXhmZXI6Cglwcm90byAzIDAKCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6MzcKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgIGFzc2V0UmVjZWl2ZXI6IHJlY2VpdmVyLAoJLy8gICAgICAgeGZlckFzc2V0OiBhc3NldCwKCS8vICAgICAgIGFzc2V0QW1vdW50OiBhbW91bnQsCgkvLyAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMyAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6MzgKCS8vIGFzc2V0UmVjZWl2ZXI6IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGV4YW1wbGVzL2FtbS9hbW0uYWxnby50czozOQoJLy8geGZlckFzc2V0OiBhc3NldAoJZnJhbWVfZGlnIC0yIC8vIGFzc2V0OiBBc3NldElECglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGV4YW1wbGVzL2FtbS9hbW0uYWxnby50czo0MAoJLy8gYXNzZXRBbW91bnQ6IGFtb3VudAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudDogdWludDY0CglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyBkb09wdEluKGFzc2V0OiBBc3NldElEKTogdm9pZApkb09wdEluOgoJcHJvdG8gMSAwCgoJLy8gZXhhbXBsZXMvYW1tL2FtbS5hbGdvLnRzOjQ1CgkvLyB0aGlzLmRvQXhmZXIodGhpcy5hcHAuYWRkcmVzcywgYXNzZXQsIDApCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIC0xIC8vIGFzc2V0OiBBc3NldElECglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJY2FsbHN1YiBkb0F4ZmVyCglyZXRzdWIKCi8vIHRva2Vuc1RvTWludEludGlhbChhQW1vdW50OiB1aW50NjQsIGJBbW91bnQ6IHVpbnQ2NCk6IHVpbnQ2NAp0b2tlbnNUb01pbnRJbnRpYWw6Cglwcm90byAyIDEKCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6NDkKCS8vIHJldHVybiBzcXJ0KGFBbW91bnQgKiBiQW1vdW50KTsKCWZyYW1lX2RpZyAtMSAvLyBhQW1vdW50OiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBiQW1vdW50OiB1aW50NjQKCSoKCXNxcnQKCXJldHN1YgoKLy8gdG9rZW5zVG9NaW50KGlzc3VlZDogdWludDY0LCBhU3VwcGx5OiB1aW50NjQsIGJTdXBwbHk6IHVpbnQ2NCwgYUFtb3VudDogdWludDY0LCBiQW1vdW50OiB1aW50NjQpOiB1aW50NjQKdG9rZW5zVG9NaW50OgoJcHJvdG8gNSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gMgoKCS8vIGV4YW1wbGVzL2FtbS9hbW0uYWxnby50czo1MwoJLy8gYVJhdGlvID0gd2lkZVJhdGlvKFthQW1vdW50LCBTQ0FMRV0sIFthU3VwcGx5XSkKCWZyYW1lX2RpZyAtNCAvLyBhQW1vdW50OiB1aW50NjQKCWludGMgMiAvLyAxMDAwCgltdWx3CglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIC0yIC8vIGFTdXBwbHk6IHVpbnQ2NAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMCAvLyBhUmF0aW86IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL2FtbS9hbW0uYWxnby50czo1NAoJLy8gYlJhdGlvID0gd2lkZVJhdGlvKFtiQW1vdW50LCBTQ0FMRV0sIFtiU3VwcGx5XSkKCWZyYW1lX2RpZyAtNSAvLyBiQW1vdW50OiB1aW50NjQKCWludGMgMiAvLyAxMDAwCgltdWx3CglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIC0zIC8vIGJTdXBwbHk6IHVpbnQ2NAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMSAvLyBiUmF0aW86IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL2FtbS9hbW0uYWxnby50czo1NgoJLy8gcmF0aW8gPSBhUmF0aW8gPCBiUmF0aW8gPyBhUmF0aW8gOiBiUmF0aW8KCWZyYW1lX2RpZyAwIC8vIGFSYXRpbzogdWludDY0CglmcmFtZV9kaWcgMSAvLyBiUmF0aW86IHVpbnQ2NAoJPAoJYnogKnRlcm5hcnkwX2ZhbHNlCglmcmFtZV9kaWcgMCAvLyBhUmF0aW86IHVpbnQ2NAoJYiAqdGVybmFyeTBfZW5kCgoqdGVybmFyeTBfZmFsc2U6CglmcmFtZV9kaWcgMSAvLyBiUmF0aW86IHVpbnQ2NAoKKnRlcm5hcnkwX2VuZDoKCWZyYW1lX2J1cnkgMiAvLyByYXRpbzogdWludDY0CgoJLy8gZXhhbXBsZXMvYW1tL2FtbS5hbGdvLnRzOjU4CgkvLyByZXR1cm4gd2lkZVJhdGlvKFtyYXRpbywgaXNzdWVkXSwgW1NDQUxFXSk7CglmcmFtZV9kaWcgMiAvLyByYXRpbzogdWludDY0CglmcmFtZV9kaWcgLTEgLy8gaXNzdWVkOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDIgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiAyCglyZXRzdWIKCi8vIGNvbXB1dGVSYXRpbygpOiB1aW50NjQKY29tcHV0ZVJhdGlvOgoJcHJvdG8gMCAxCgoJLy8gZXhhbXBsZXMvYW1tL2FtbS5hbGdvLnRzOjYyCgkvLyByZXR1cm4gd2lkZVJhdGlvKAoJLy8gICAgICAgW3RoaXMuYXBwLmFkZHJlc3MuYXNzZXRCYWxhbmNlKHRoaXMuYXNzZXRBLnZhbHVlKSwgU0NBTEVdLAoJLy8gICAgICAgW3RoaXMuYXBwLmFkZHJlc3MuYXNzZXRCYWxhbmNlKHRoaXMuYXNzZXRCLnZhbHVlKV0KCS8vICAgICApOwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWJ5dGVjIDEgLy8gICJhIgoJYXBwX2dsb2JhbF9nZXQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglpbnRjIDIgLy8gMTAwMAoJbXVsdwoJaW50YyAwIC8vIDAKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglieXRlYyAyIC8vICAiYiIKCWFwcF9nbG9iYWxfZ2V0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCXJldHN1YgoKLy8gdG9rZW5zVG9CdXJuKGlzc3VlZDogdWludDY0LCBzdXBwbHk6IHVpbnQ2NCwgYW1vdW50OiB1aW50NjQpOiB1aW50NjQKdG9rZW5zVG9CdXJuOgoJcHJvdG8gMyAxCgoJLy8gZXhhbXBsZXMvYW1tL2FtbS5hbGdvLnRzOjY5CgkvLyByZXR1cm4gd2lkZVJhdGlvKFtzdXBwbHksIGFtb3VudF0sIFtpc3N1ZWRdKTsKCWZyYW1lX2RpZyAtMiAvLyBzdXBwbHk6IHVpbnQ2NAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudDogdWludDY0CgltdWx3CglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIC0xIC8vIGlzc3VlZDogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJcmV0c3ViCgovLyB0b2tlbnNUb1N3YXAoaW5BbW91bnQ6IHVpbnQ2NCwgaW5TdXBwbHk6IHVpbnQ2NCwgb3V0U3VwcGx5OiB1aW50NjQpOiB1aW50NjQKdG9rZW5zVG9Td2FwOgoJcHJvdG8gMyAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6NzMKCS8vIGZhY3RvciA9IFNDQUxFIC0gRkVFCglwdXNoaW50IDk5NQoJZnJhbWVfYnVyeSAwIC8vIGZhY3RvcjogdWludDY0CgoJLy8gZXhhbXBsZXMvYW1tL2FtbS5hbGdvLnRzOjc0CgkvLyByZXR1cm4gd2lkZVJhdGlvKFtpbkFtb3VudCwgZmFjdG9yLCBvdXRTdXBwbHldLCBbaW5TdXBwbHkgKiBTQ0FMRSArIGluQW1vdW50ICogZmFjdG9yXSk7CglmcmFtZV9kaWcgLTEgLy8gaW5BbW91bnQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gZmFjdG9yOiB1aW50NjQKCW11bHcKCWZyYW1lX2RpZyAtMyAvLyBvdXRTdXBwbHk6IHVpbnQ2NAoJdW5jb3ZlciAyCglkaWcgMQoJKgoJY292ZXIgMgoJbXVsdwoJY292ZXIgMgoJKwoJc3dhcAoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAtMiAvLyBpblN1cHBseTogdWludDY0CglpbnRjIDIgLy8gMTAwMAoJKgoJZnJhbWVfZGlnIC0xIC8vIGluQW1vdW50OiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIGZhY3RvcjogdWludDY0CgkqCgkrCglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBzZXRfZ292ZXJub3IoYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfc2V0X2dvdmVybm9yOgoJLy8gZ292ZXJub3I6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglwdXNoaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKGdvdmVybm9yKSBmb3Igc2V0X2dvdmVybm9yIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIHNldF9nb3Zlcm5vcihhZGRyZXNzKXZvaWQKCWNhbGxzdWIgc2V0X2dvdmVybm9yCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBzZXRfZ292ZXJub3IoZ292ZXJub3I6IEFkZHJlc3MpOiB2b2lkCnNldF9nb3Zlcm5vcjoKCXByb3RvIDEgMAoKCS8vIGV4YW1wbGVzL2FtbS9hbW0uYWxnby50czo3OAoJLy8gdmVyaWZ5QXBwQ2FsbFR4bih0aGlzLnR4biwgeyBzZW5kZXI6IHRoaXMuZ292ZXJub3IudmFsdWUgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCXR4biBTZW5kZXIKCWJ5dGVjIDMgLy8gICJnIgoJYXBwX2dsb2JhbF9nZXQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJ0aGlzLnR4biIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmdvdmVybm9yLnZhbHVlIn0KCWFzc2VydAoKCS8vIGV4YW1wbGVzL2FtbS9hbW0uYWxnby50czo3OQoJLy8gdGhpcy5nb3Zlcm5vci52YWx1ZSA9IGdvdmVybm9yCglieXRlYyAzIC8vICAiZyIKCWZyYW1lX2RpZyAtMSAvLyBnb3Zlcm5vcjogQWRkcmVzcwoJYXBwX2dsb2JhbF9wdXQKCXJldHN1YgoKLy8gYm9vdHN0cmFwKHBheSx1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2Jvb3RzdHJhcDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBiQXNzZXQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGFBc3NldDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gc2VlZDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKHNlZWQpIGZvciBib290c3RyYXAgbXVzdCBiZSBhIHBheSB0cmFuc2FjdGlvbgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBib290c3RyYXAocGF5LHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGJvb3RzdHJhcAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGJvb3RzdHJhcChzZWVkOiBQYXlUeG4sIGFBc3NldDogQXNzZXRJRCwgYkFzc2V0OiBBc3NldElEKTogQXNzZXRJRApib290c3RyYXA6Cglwcm90byAzIDEKCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6ODMKCS8vIHZlcmlmeUFwcENhbGxUeG4odGhpcy50eG4sIHsgc2VuZGVyOiB0aGlzLmdvdmVybm9yLnZhbHVlIH0pCgkvLyB2ZXJpZnkgc2VuZGVyCgl0eG4gU2VuZGVyCglieXRlYyAzIC8vICAiZyIKCWFwcF9nbG9iYWxfZ2V0Cgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoidGhpcy50eG4iLCJmaWVsZCI6InNlbmRlciIsImV4cGVjdGVkIjoidGhpcy5nb3Zlcm5vci52YWx1ZSJ9Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6ODUKCS8vIGFzc2VydChnbG9iYWxzLmdyb3VwU2l6ZSA9PT0gMikKCWdsb2JhbCBHcm91cFNpemUKCWludGMgNSAvLyAyCgk9PQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvYW1tL2FtbS5hbGdvLnRzOjg3CgkvLyB2ZXJpZnlQYXlUeG4oc2VlZCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiB7IGdyZWF0ZXJUaGFuRXF1YWxUbzogMzAwXzAwMCB9IH0pCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBzZWVkOiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InNlZWQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBzZWVkOiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJcHVzaGludCAzMDBfMDAwCgk+PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic2VlZCIsImZpZWxkIjoiYW1vdW50IiwiY29uZGl0aW9uIjoiZ3JlYXRlclRoYW5FcXVhbFRvIiwiZXhwZWN0ZWQiOiI+PTMwMF8wMDAifQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvYW1tL2FtbS5hbGdvLnRzOjg4CgkvLyBhc3NlcnQoYUFzc2V0IDwgYkFzc2V0KQoJZnJhbWVfZGlnIC0yIC8vIGFBc3NldDogQXNzZXRJRAoJZnJhbWVfZGlnIC0zIC8vIGJBc3NldDogQXNzZXRJRAoJPAoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvYW1tL2FtbS5hbGdvLnRzOjkwCgkvLyB0aGlzLmFzc2V0QS52YWx1ZSA9IGFBc3NldAoJYnl0ZWMgMSAvLyAgImEiCglmcmFtZV9kaWcgLTIgLy8gYUFzc2V0OiBBc3NldElECglhcHBfZ2xvYmFsX3B1dAoKCS8vIGV4YW1wbGVzL2FtbS9hbW0uYWxnby50czo5MQoJLy8gdGhpcy5hc3NldEIudmFsdWUgPSBiQXNzZXQKCWJ5dGVjIDIgLy8gICJiIgoJZnJhbWVfZGlnIC0zIC8vIGJBc3NldDogQXNzZXRJRAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6OTIKCS8vIHRoaXMucG9vbFRva2VuLnZhbHVlID0gdGhpcy5kb0NyZWF0ZVBvb2xUb2tlbihhQXNzZXQsIGJBc3NldCkKCWJ5dGVjIDQgLy8gICJwIgoJZnJhbWVfZGlnIC0zIC8vIGJBc3NldDogQXNzZXRJRAoJZnJhbWVfZGlnIC0yIC8vIGFBc3NldDogQXNzZXRJRAoJY2FsbHN1YiBkb0NyZWF0ZVBvb2xUb2tlbgoJYXBwX2dsb2JhbF9wdXQKCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6OTQKCS8vIHRoaXMuZG9PcHRJbihhQXNzZXQpCglmcmFtZV9kaWcgLTIgLy8gYUFzc2V0OiBBc3NldElECgljYWxsc3ViIGRvT3B0SW4KCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6OTUKCS8vIHRoaXMuZG9PcHRJbihiQXNzZXQpCglmcmFtZV9kaWcgLTMgLy8gYkFzc2V0OiBBc3NldElECgljYWxsc3ViIGRvT3B0SW4KCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6OTcKCS8vIHJldHVybiB0aGlzLnBvb2xUb2tlbi52YWx1ZTsKCWJ5dGVjIDQgLy8gICJwIgoJYXBwX2dsb2JhbF9nZXQKCXJldHN1YgoKLy8gbWludChheGZlcixheGZlcix1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfbWludDoKCS8vIGJBc3NldDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gYUFzc2V0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBwb29sQXNzZXQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGJYZmVyOiBheGZlcgoJdHhuIEdyb3VwSW5kZXgKCWludGMgMSAvLyAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDMgLy8gIGF4ZmVyCgk9PQoKCS8vIGFyZ3VtZW50IDMgKGJYZmVyKSBmb3IgbWludCBtdXN0IGJlIGEgYXhmZXIgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGFYZmVyOiBheGZlcgoJdHhuIEdyb3VwSW5kZXgKCWludGMgNSAvLyAyCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDMgLy8gIGF4ZmVyCgk9PQoKCS8vIGFyZ3VtZW50IDQgKGFYZmVyKSBmb3IgbWludCBtdXN0IGJlIGEgYXhmZXIgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgbWludChheGZlcixheGZlcix1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIG1pbnQKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIG1pbnQoYVhmZXI6IEFzc2V0VHJhbnNmZXJUeG4sIGJYZmVyOiBBc3NldFRyYW5zZmVyVHhuLCBwb29sQXNzZXQ6IEFzc2V0SUQsIGFBc3NldDogQXNzZXRJRCwgYkFzc2V0OiBBc3NldElEKTogdm9pZAptaW50OgoJcHJvdG8gNSAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCgkvLyB3ZWxsIGZvcm1lZCBtaW50CgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6MTAyCgkvLyBhc3NlcnQoYUFzc2V0ID09PSB0aGlzLmFzc2V0QS52YWx1ZSkKCWZyYW1lX2RpZyAtNCAvLyBhQXNzZXQ6IEFzc2V0SUQKCWJ5dGVjIDEgLy8gICJhIgoJYXBwX2dsb2JhbF9nZXQKCT09Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6MTAzCgkvLyBhc3NlcnQoYkFzc2V0ID09PSB0aGlzLmFzc2V0Qi52YWx1ZSkKCWZyYW1lX2RpZyAtNSAvLyBiQXNzZXQ6IEFzc2V0SUQKCWJ5dGVjIDIgLy8gICJiIgoJYXBwX2dsb2JhbF9nZXQKCT09Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6MTA0CgkvLyBhc3NlcnQocG9vbEFzc2V0ID09PSB0aGlzLnBvb2xUb2tlbi52YWx1ZSkKCWZyYW1lX2RpZyAtMyAvLyBwb29sQXNzZXQ6IEFzc2V0SUQKCWJ5dGVjIDQgLy8gICJwIgoJYXBwX2dsb2JhbF9nZXQKCT09Cglhc3NlcnQKCgkvLyB2YWxpZCBhc3NldCBBIGF4ZmVyCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6MTA3CgkvLyB2ZXJpZnlBc3NldFRyYW5zZmVyVHhuKGFYZmVyLCB7CgkvLyAgICAgICBzZW5kZXI6IHRoaXMudHhuLnNlbmRlciwKCS8vICAgICAgIGFzc2V0QW1vdW50OiB7IGdyZWF0ZXJUaGFuOiAwIH0sCgkvLyAgICAgICBhc3NldFJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgeGZlckFzc2V0OiBhQXNzZXQsCgkvLyAgICAgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBhWGZlcjogQXNzZXRUcmFuc2ZlclR4bgoJZ3R4bnMgU2VuZGVyCgl0eG4gU2VuZGVyCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoiYVhmZXIiLCJmaWVsZCI6InNlbmRlciIsImV4cGVjdGVkIjoidGhpcy50eG4uc2VuZGVyIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhc3NldEFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIGFYZmVyOiBBc3NldFRyYW5zZmVyVHhuCglndHhucyBBc3NldEFtb3VudAoJaW50YyAwIC8vIDAKCT4KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6ImFYZmVyIiwiZmllbGQiOiJhc3NldEFtb3VudCIsImNvbmRpdGlvbiI6ImdyZWF0ZXJUaGFuIiwiZXhwZWN0ZWQiOiI+MCJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYXNzZXRSZWNlaXZlcgoJZnJhbWVfZGlnIC0xIC8vIGFYZmVyOiBBc3NldFRyYW5zZmVyVHhuCglndHhucyBBc3NldFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6ImFYZmVyIiwiZmllbGQiOiJhc3NldFJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSB4ZmVyQXNzZXQKCWZyYW1lX2RpZyAtMSAvLyBhWGZlcjogQXNzZXRUcmFuc2ZlclR4bgoJZ3R4bnMgWGZlckFzc2V0CglmcmFtZV9kaWcgLTQgLy8gYUFzc2V0OiBBc3NldElECgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoiYVhmZXIiLCJmaWVsZCI6InhmZXJBc3NldCIsImV4cGVjdGVkIjoiYUFzc2V0In0KCWFzc2VydAoKCS8vIHZhbGlkIGFzc2V0IEIgYXhmZXIKCS8vIGV4YW1wbGVzL2FtbS9hbW0uYWxnby50czoxMTUKCS8vIHZlcmlmeUFzc2V0VHJhbnNmZXJUeG4oYlhmZXIsIHsKCS8vICAgICAgIHNlbmRlcjogdGhpcy50eG4uc2VuZGVyLAoJLy8gICAgICAgYXNzZXRBbW91bnQ6IHsgZ3JlYXRlclRoYW46IDAgfSwKCS8vICAgICAgIGFzc2V0UmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsCgkvLyAgICAgICB4ZmVyQXNzZXQ6IGJBc3NldCwKCS8vICAgICB9KQoJLy8gdmVyaWZ5IHNlbmRlcgoJZnJhbWVfZGlnIC0yIC8vIGJYZmVyOiBBc3NldFRyYW5zZmVyVHhuCglndHhucyBTZW5kZXIKCXR4biBTZW5kZXIKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJiWGZlciIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJ0aGlzLnR4bi5zZW5kZXIifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IGFzc2V0QW1vdW50CglmcmFtZV9kaWcgLTIgLy8gYlhmZXI6IEFzc2V0VHJhbnNmZXJUeG4KCWd0eG5zIEFzc2V0QW1vdW50CglpbnRjIDAgLy8gMAoJPgoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoiYlhmZXIiLCJmaWVsZCI6ImFzc2V0QW1vdW50IiwiY29uZGl0aW9uIjoiZ3JlYXRlclRoYW4iLCJleHBlY3RlZCI6Ij4wIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhc3NldFJlY2VpdmVyCglmcmFtZV9kaWcgLTIgLy8gYlhmZXI6IEFzc2V0VHJhbnNmZXJUeG4KCWd0eG5zIEFzc2V0UmVjZWl2ZXIKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoiYlhmZXIiLCJmaWVsZCI6ImFzc2V0UmVjZWl2ZXIiLCJleHBlY3RlZCI6InRoaXMuYXBwLmFkZHJlc3MifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHhmZXJBc3NldAoJZnJhbWVfZGlnIC0yIC8vIGJYZmVyOiBBc3NldFRyYW5zZmVyVHhuCglndHhucyBYZmVyQXNzZXQKCWZyYW1lX2RpZyAtNSAvLyBiQXNzZXQ6IEFzc2V0SUQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJiWGZlciIsImZpZWxkIjoieGZlckFzc2V0IiwiZXhwZWN0ZWQiOiJiQXNzZXQifQoJYXNzZXJ0CgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGV4YW1wbGVzL2FtbS9hbW0uYWxnby50czoxMjMKCS8vIHRoaXMuYXBwLmFkZHJlc3MuYXNzZXRCYWxhbmNlKGFBc3NldCkgPT09IGFYZmVyLmFzc2V0QW1vdW50ICYmCgkvLyAgICAgICB0aGlzLmFwcC5hZGRyZXNzLmFzc2V0QmFsYW5jZShiQXNzZXQpID09PSBiWGZlci5hc3NldEFtb3VudAoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWZyYW1lX2RpZyAtNCAvLyBhQXNzZXQ6IEFzc2V0SUQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgLTEgLy8gYVhmZXI6IEFzc2V0VHJhbnNmZXJUeG4KCWd0eG5zIEFzc2V0QW1vdW50Cgk9PQoJZHVwCglieiAqc2tpcF9hbmQwCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJZnJhbWVfZGlnIC01IC8vIGJBc3NldDogQXNzZXRJRAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAtMiAvLyBiWGZlcjogQXNzZXRUcmFuc2ZlclR4bgoJZ3R4bnMgQXNzZXRBbW91bnQKCT09CgkmJgoKKnNraXBfYW5kMDoKCWJ6ICppZjBfZWxzZQoKCS8vICppZjBfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvYW1tL2FtbS5hbGdvLnRzOjEyNgoJLy8gdGhpcy50b2tlbnNUb01pbnRJbnRpYWwoYVhmZXIuYXNzZXRBbW91bnQsIGJYZmVyLmFzc2V0QW1vdW50KQoJZnJhbWVfZGlnIC0yIC8vIGJYZmVyOiBBc3NldFRyYW5zZmVyVHhuCglndHhucyBBc3NldEFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIGFYZmVyOiBBc3NldFRyYW5zZmVyVHhuCglndHhucyBBc3NldEFtb3VudAoJY2FsbHN1YiB0b2tlbnNUb01pbnRJbnRpYWwKCWIgKmlmMF9lbmQKCippZjBfZWxzZToKCS8vIGV4YW1wbGVzL2FtbS9hbW0uYWxnby50czoxMjgKCS8vIHRvTWludCA9IHRoaXMudG9rZW5zVG9NaW50KAoJLy8gICAgICAgICBUT1RBTF9TVVBQTFkgLSB0aGlzLmFwcC5hZGRyZXNzLmFzc2V0QmFsYW5jZShwb29sQXNzZXQpLAoJLy8gICAgICAgICB0aGlzLmFwcC5hZGRyZXNzLmFzc2V0QmFsYW5jZShhQXNzZXQpIC0gYVhmZXIuYXNzZXRBbW91bnQsCgkvLyAgICAgICAgIHRoaXMuYXBwLmFkZHJlc3MuYXNzZXRCYWxhbmNlKGJBc3NldCkgLSBiWGZlci5hc3NldEFtb3VudCwKCS8vICAgICAgICAgYVhmZXIuYXNzZXRBbW91bnQsCgkvLyAgICAgICAgIGJYZmVyLmFzc2V0QW1vdW50CgkvLyAgICAgICApCglmcmFtZV9kaWcgLTIgLy8gYlhmZXI6IEFzc2V0VHJhbnNmZXJUeG4KCWd0eG5zIEFzc2V0QW1vdW50CglmcmFtZV9kaWcgLTEgLy8gYVhmZXI6IEFzc2V0VHJhbnNmZXJUeG4KCWd0eG5zIEFzc2V0QW1vdW50CglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJZnJhbWVfZGlnIC01IC8vIGJBc3NldDogQXNzZXRJRAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAtMiAvLyBiWGZlcjogQXNzZXRUcmFuc2ZlclR4bgoJZ3R4bnMgQXNzZXRBbW91bnQKCS0KCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglmcmFtZV9kaWcgLTQgLy8gYUFzc2V0OiBBc3NldElECglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIC0xIC8vIGFYZmVyOiBBc3NldFRyYW5zZmVyVHhuCglndHhucyBBc3NldEFtb3VudAoJLQoJaW50YyA0IC8vIDEwMDAwMDAwMDAwCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJZnJhbWVfZGlnIC0zIC8vIHBvb2xBc3NldDogQXNzZXRJRAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCS0KCWNhbGxzdWIgdG9rZW5zVG9NaW50CglmcmFtZV9idXJ5IDAgLy8gdG9NaW50OiB1aW50NjQKCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6MTM2CgkvLyBhc3NlcnQodG9NaW50ID4gMCkKCWZyYW1lX2RpZyAwIC8vIHRvTWludDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvYW1tL2FtbS5hbGdvLnRzOjEzOAoJLy8gdGhpcy5kb0F4ZmVyKHRoaXMudHhuLnNlbmRlciwgcG9vbEFzc2V0LCB0b01pbnQpCglmcmFtZV9kaWcgMCAvLyB0b01pbnQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0zIC8vIHBvb2xBc3NldDogQXNzZXRJRAoJdHhuIFNlbmRlcgoJY2FsbHN1YiBkb0F4ZmVyCgoqaWYwX2VuZDoKCXJldHN1YgoKLy8gYnVybihheGZlcix1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfYnVybjoKCS8vIGJBc3NldDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gYUFzc2V0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBwb29sQXNzZXQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIHBvb2xYZmVyOiBheGZlcgoJdHhuIEdyb3VwSW5kZXgKCWludGMgMSAvLyAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDMgLy8gIGF4ZmVyCgk9PQoKCS8vIGFyZ3VtZW50IDMgKHBvb2xYZmVyKSBmb3IgYnVybiBtdXN0IGJlIGEgYXhmZXIgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYnVybihheGZlcix1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGJ1cm4KCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGJ1cm4ocG9vbFhmZXI6IEFzc2V0VHJhbnNmZXJUeG4sIHBvb2xBc3NldDogQXNzZXRJRCwgYUFzc2V0OiBBc3NldElELCBiQXNzZXQ6IEFzc2V0SUQpOiB2b2lkCmJ1cm46Cglwcm90byA0IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAyCgoJLy8gd2VsbCBmb3JtZWQgYnVybgoJLy8gZXhhbXBsZXMvYW1tL2FtbS5hbGdvLnRzOjE0NAoJLy8gYXNzZXJ0KHBvb2xBc3NldCA9PT0gdGhpcy5wb29sVG9rZW4udmFsdWUpCglmcmFtZV9kaWcgLTIgLy8gcG9vbEFzc2V0OiBBc3NldElECglieXRlYyA0IC8vICAicCIKCWFwcF9nbG9iYWxfZ2V0Cgk9PQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvYW1tL2FtbS5hbGdvLnRzOjE0NQoJLy8gYXNzZXJ0KGFBc3NldCA9PT0gdGhpcy5hc3NldEEudmFsdWUpCglmcmFtZV9kaWcgLTMgLy8gYUFzc2V0OiBBc3NldElECglieXRlYyAxIC8vICAiYSIKCWFwcF9nbG9iYWxfZ2V0Cgk9PQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvYW1tL2FtbS5hbGdvLnRzOjE0NgoJLy8gYXNzZXJ0KGJBc3NldCA9PT0gdGhpcy5hc3NldEIudmFsdWUpCglmcmFtZV9kaWcgLTQgLy8gYkFzc2V0OiBBc3NldElECglieXRlYyAyIC8vICAiYiIKCWFwcF9nbG9iYWxfZ2V0Cgk9PQoJYXNzZXJ0CgoJLy8gdmFsaWQgcG9vbCBheGZlcgoJLy8gZXhhbXBsZXMvYW1tL2FtbS5hbGdvLnRzOjE0OQoJLy8gdmVyaWZ5QXNzZXRUcmFuc2ZlclR4bihwb29sWGZlciwgewoJLy8gICAgICAgc2VuZGVyOiB0aGlzLnR4bi5zZW5kZXIsCgkvLyAgICAgICBhc3NldEFtb3VudDogeyBncmVhdGVyVGhhbjogMCB9LAoJLy8gICAgICAgYXNzZXRSZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgIHhmZXJBc3NldDogcG9vbEFzc2V0LAoJLy8gICAgIH0pCgkvLyB2ZXJpZnkgc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gcG9vbFhmZXI6IEFzc2V0VHJhbnNmZXJUeG4KCWd0eG5zIFNlbmRlcgoJdHhuIFNlbmRlcgoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InBvb2xYZmVyIiwiZmllbGQiOiJzZW5kZXIiLCJleHBlY3RlZCI6InRoaXMudHhuLnNlbmRlciJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYXNzZXRBbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBwb29sWGZlcjogQXNzZXRUcmFuc2ZlclR4bgoJZ3R4bnMgQXNzZXRBbW91bnQKCWludGMgMCAvLyAwCgk+CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJwb29sWGZlciIsImZpZWxkIjoiYXNzZXRBbW91bnQiLCJjb25kaXRpb24iOiJncmVhdGVyVGhhbiIsImV4cGVjdGVkIjoiPjAifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IGFzc2V0UmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sWGZlcjogQXNzZXRUcmFuc2ZlclR4bgoJZ3R4bnMgQXNzZXRSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJwb29sWGZlciIsImZpZWxkIjoiYXNzZXRSZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgeGZlckFzc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbFhmZXI6IEFzc2V0VHJhbnNmZXJUeG4KCWd0eG5zIFhmZXJBc3NldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBc3NldDogQXNzZXRJRAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InBvb2xYZmVyIiwiZmllbGQiOiJ4ZmVyQXNzZXQiLCJleHBlY3RlZCI6InBvb2xBc3NldCJ9Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6MTU2CgkvLyBpc3N1ZWQgPSBUT1RBTF9TVVBQTFkgLSAodGhpcy5hcHAuYWRkcmVzcy5hc3NldEJhbGFuY2UocG9vbEFzc2V0KSAtIHBvb2xYZmVyLmFzc2V0QW1vdW50KQoJaW50YyA0IC8vIDEwMDAwMDAwMDAwCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBc3NldDogQXNzZXRJRAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAtMSAvLyBwb29sWGZlcjogQXNzZXRUcmFuc2ZlclR4bgoJZ3R4bnMgQXNzZXRBbW91bnQKCS0KCS0KCWZyYW1lX2J1cnkgMCAvLyBpc3N1ZWQ6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL2FtbS9hbW0uYWxnby50czoxNTgKCS8vIGFBbXQgPSB0aGlzLnRva2Vuc1RvQnVybihpc3N1ZWQsIHRoaXMuYXBwLmFkZHJlc3MuYXNzZXRCYWxhbmNlKGFBc3NldCksIHBvb2xYZmVyLmFzc2V0QW1vdW50KQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xYZmVyOiBBc3NldFRyYW5zZmVyVHhuCglndHhucyBBc3NldEFtb3VudAoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWZyYW1lX2RpZyAtMyAvLyBhQXNzZXQ6IEFzc2V0SUQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMCAvLyBpc3N1ZWQ6IHVpbnQ2NAoJY2FsbHN1YiB0b2tlbnNUb0J1cm4KCWZyYW1lX2J1cnkgMSAvLyBhQW10OiB1aW50NjQKCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6MTYwCgkvLyBiQW10ID0gdGhpcy50b2tlbnNUb0J1cm4oaXNzdWVkLCB0aGlzLmFwcC5hZGRyZXNzLmFzc2V0QmFsYW5jZShiQXNzZXQpLCBwb29sWGZlci5hc3NldEFtb3VudCkKCWZyYW1lX2RpZyAtMSAvLyBwb29sWGZlcjogQXNzZXRUcmFuc2ZlclR4bgoJZ3R4bnMgQXNzZXRBbW91bnQKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglmcmFtZV9kaWcgLTQgLy8gYkFzc2V0OiBBc3NldElECglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDAgLy8gaXNzdWVkOiB1aW50NjQKCWNhbGxzdWIgdG9rZW5zVG9CdXJuCglmcmFtZV9idXJ5IDIgLy8gYkFtdDogdWludDY0CgoJLy8gZXhhbXBsZXMvYW1tL2FtbS5hbGdvLnRzOjE2MgoJLy8gdGhpcy5kb0F4ZmVyKHRoaXMudHhuLnNlbmRlciwgYUFzc2V0LCBhQW10KQoJZnJhbWVfZGlnIDEgLy8gYUFtdDogdWludDY0CglmcmFtZV9kaWcgLTMgLy8gYUFzc2V0OiBBc3NldElECgl0eG4gU2VuZGVyCgljYWxsc3ViIGRvQXhmZXIKCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6MTYzCgkvLyB0aGlzLmRvQXhmZXIodGhpcy50eG4uc2VuZGVyLCBiQXNzZXQsIGJBbXQpCglmcmFtZV9kaWcgMiAvLyBiQW10OiB1aW50NjQKCWZyYW1lX2RpZyAtNCAvLyBiQXNzZXQ6IEFzc2V0SUQKCXR4biBTZW5kZXIKCWNhbGxzdWIgZG9BeGZlcgoKCS8vIGV4YW1wbGVzL2FtbS9hbW0uYWxnby50czoxNjUKCS8vIHRoaXMucmF0aW8udmFsdWUgPSB0aGlzLmNvbXB1dGVSYXRpbygpCglieXRlYyA1IC8vICAiciIKCWNhbGxzdWIgY29tcHV0ZVJhdGlvCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyBzd2FwKGF4ZmVyLHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3N3YXA6CgkvLyBiQXNzZXQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGFBc3NldDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gc3dhcFhmZXI6IGF4ZmVyCgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMyAvLyAgYXhmZXIKCT09CgoJLy8gYXJndW1lbnQgMiAoc3dhcFhmZXIpIGZvciBzd2FwIG11c3QgYmUgYSBheGZlciB0cmFuc2FjdGlvbgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzd2FwKGF4ZmVyLHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBzd2FwCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBzd2FwKHN3YXBYZmVyOiBBc3NldFRyYW5zZmVyVHhuLCBhQXNzZXQ6IEFzc2V0SUQsIGJBc3NldDogQXNzZXRJRCk6IHZvaWQKc3dhcDoKCXByb3RvIDMgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CglkdXBuIDIKCgkvLyB3ZWxsIGZvcm1lZCBzd2FwCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6MTcwCgkvLyBhc3NlcnQoYUFzc2V0ID09PSB0aGlzLmFzc2V0QS52YWx1ZSkKCWZyYW1lX2RpZyAtMiAvLyBhQXNzZXQ6IEFzc2V0SUQKCWJ5dGVjIDEgLy8gICJhIgoJYXBwX2dsb2JhbF9nZXQKCT09Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6MTcxCgkvLyBhc3NlcnQoYkFzc2V0ID09PSB0aGlzLmFzc2V0Qi52YWx1ZSkKCWZyYW1lX2RpZyAtMyAvLyBiQXNzZXQ6IEFzc2V0SUQKCWJ5dGVjIDIgLy8gICJiIgoJYXBwX2dsb2JhbF9nZXQKCT09Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6MTczCgkvLyB2ZXJpZnlBc3NldFRyYW5zZmVyVHhuKHN3YXBYZmVyLCB7CgkvLyAgICAgICBhc3NldEFtb3VudDogeyBncmVhdGVyVGhhbjogMCB9LAoJLy8gICAgICAgYXNzZXRSZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgIHNlbmRlcjogdGhpcy50eG4uc2VuZGVyLAoJLy8gICAgICAgeGZlckFzc2V0OiB7IGluY2x1ZGVkSW46IFthQXNzZXQsIGJBc3NldF0gfSwKCS8vICAgICB9KQoJLy8gdmVyaWZ5IGFzc2V0QW1vdW50CglmcmFtZV9kaWcgLTEgLy8gc3dhcFhmZXI6IEFzc2V0VHJhbnNmZXJUeG4KCWd0eG5zIEFzc2V0QW1vdW50CglpbnRjIDAgLy8gMAoJPgoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3dhcFhmZXIiLCJmaWVsZCI6ImFzc2V0QW1vdW50IiwiY29uZGl0aW9uIjoiZ3JlYXRlclRoYW4iLCJleHBlY3RlZCI6Ij4wIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhc3NldFJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gc3dhcFhmZXI6IEFzc2V0VHJhbnNmZXJUeG4KCWd0eG5zIEFzc2V0UmVjZWl2ZXIKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3dhcFhmZXIiLCJmaWVsZCI6ImFzc2V0UmVjZWl2ZXIiLCJleHBlY3RlZCI6InRoaXMuYXBwLmFkZHJlc3MifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIHN3YXBYZmVyOiBBc3NldFRyYW5zZmVyVHhuCglndHhucyBTZW5kZXIKCXR4biBTZW5kZXIKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzd2FwWGZlciIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJ0aGlzLnR4bi5zZW5kZXIifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHhmZXJBc3NldAoJZnJhbWVfZGlnIC0xIC8vIHN3YXBYZmVyOiBBc3NldFRyYW5zZmVyVHhuCglndHhucyBYZmVyQXNzZXQKCWZyYW1lX2RpZyAtMiAvLyBhQXNzZXQ6IEFzc2V0SUQKCT09CglmcmFtZV9kaWcgLTEgLy8gc3dhcFhmZXI6IEFzc2V0VHJhbnNmZXJUeG4KCWd0eG5zIFhmZXJBc3NldAoJZnJhbWVfZGlnIC0zIC8vIGJBc3NldDogQXNzZXRJRAoJPT0KCXx8CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOnsidHhuVGV4dCI6InN3YXBYZmVyIn0sImZpZWxkIjoieGZlckFzc2V0IiwiY29uZGl0aW9uIjoiaW5jbHVkZWRJbiIsImV4cGVjdGVkIjoiW2FBc3NldCwgYkFzc2V0XSJ9Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6MTgwCgkvLyBvdXRJZCA9IHN3YXBYZmVyLnhmZXJBc3NldCA9PT0gYUFzc2V0ID8gYUFzc2V0IDogYkFzc2V0CglmcmFtZV9kaWcgLTEgLy8gc3dhcFhmZXI6IEFzc2V0VHJhbnNmZXJUeG4KCWd0eG5zIFhmZXJBc3NldAoJZnJhbWVfZGlnIC0yIC8vIGFBc3NldDogQXNzZXRJRAoJPT0KCWJ6ICp0ZXJuYXJ5MV9mYWxzZQoJZnJhbWVfZGlnIC0yIC8vIGFBc3NldDogQXNzZXRJRAoJYiAqdGVybmFyeTFfZW5kCgoqdGVybmFyeTFfZmFsc2U6CglmcmFtZV9kaWcgLTMgLy8gYkFzc2V0OiBBc3NldElECgoqdGVybmFyeTFfZW5kOgoJZnJhbWVfYnVyeSAwIC8vIG91dElkOiB1aW50NjQKCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6MTgyCgkvLyBpbklkID0gc3dhcFhmZXIueGZlckFzc2V0CglmcmFtZV9kaWcgLTEgLy8gc3dhcFhmZXI6IEFzc2V0VHJhbnNmZXJUeG4KCWd0eG5zIFhmZXJBc3NldAoJZnJhbWVfYnVyeSAxIC8vIGluSWQ6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL2FtbS9hbW0uYWxnby50czoxODQKCS8vIHRvU3dhcCA9IHRoaXMudG9rZW5zVG9Td2FwKAoJLy8gICAgICAgc3dhcFhmZXIuYXNzZXRBbW91bnQsCgkvLyAgICAgICB0aGlzLmFwcC5hZGRyZXNzLmFzc2V0QmFsYW5jZShpbklkKSAtIHN3YXBYZmVyLmFzc2V0QW1vdW50LAoJLy8gICAgICAgdGhpcy5hcHAuYWRkcmVzcy5hc3NldEJhbGFuY2Uob3V0SWQpCgkvLyAgICAgKQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIG91dElkOiB1aW50NjQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJZnJhbWVfZGlnIDEgLy8gaW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIC0xIC8vIHN3YXBYZmVyOiBBc3NldFRyYW5zZmVyVHhuCglndHhucyBBc3NldEFtb3VudAoJLQoJZnJhbWVfZGlnIC0xIC8vIHN3YXBYZmVyOiBBc3NldFRyYW5zZmVyVHhuCglndHhucyBBc3NldEFtb3VudAoJY2FsbHN1YiB0b2tlbnNUb1N3YXAKCWZyYW1lX2J1cnkgMiAvLyB0b1N3YXA6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL2FtbS9hbW0uYWxnby50czoxOTAKCS8vIGFzc2VydCh0b1N3YXAgPiAwKQoJZnJhbWVfZGlnIDIgLy8gdG9Td2FwOiB1aW50NjQKCWludGMgMCAvLyAwCgk+Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9hbW0vYW1tLmFsZ28udHM6MTkyCgkvLyB0aGlzLmRvQXhmZXIodGhpcy50eG4uc2VuZGVyLCBvdXRJZCwgdG9Td2FwKQoJZnJhbWVfZGlnIDIgLy8gdG9Td2FwOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIG91dElkOiB1aW50NjQKCXR4biBTZW5kZXIKCWNhbGxzdWIgZG9BeGZlcgoKCS8vIGV4YW1wbGVzL2FtbS9hbW0uYWxnby50czoxOTQKCS8vIHRoaXMucmF0aW8udmFsdWUgPSB0aGlzLmNvbXB1dGVSYXRpbygpCglieXRlYyA1IC8vICAiciIKCWNhbGxzdWIgY29tcHV0ZVJhdGlvCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4ZGRjNGNiNGEgLy8gbWV0aG9kICJzZXRfZ292ZXJub3IoYWRkcmVzcyl2b2lkIgoJcHVzaGJ5dGVzIDB4MjVlNmMzNzYgLy8gbWV0aG9kICJib290c3RyYXAocGF5LHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4MTAwNDVjNzkgLy8gbWV0aG9kICJtaW50KGF4ZmVyLGF4ZmVyLHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHgwMjhlMzdjMSAvLyBtZXRob2QgImJ1cm4oYXhmZXIsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCXB1c2hieXRlcyAweDYzMmFhZWQ4IC8vIG1ldGhvZCAic3dhcChheGZlcix1aW50NjQsdWludDY0KXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX3NldF9nb3Zlcm5vciAqYWJpX3JvdXRlX2Jvb3RzdHJhcCAqYWJpX3JvdXRlX21pbnQgKmFiaV9yb3V0ZV9idXJuICphYmlfcm91dGVfc3dhcAoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "byteCode": { "approval": "CiAHAAHoBwSAyK+gJQIDJgYAAWEBYgFnAXABcjEYFIEGCzEZCI0MA9EAAAAAAAAAAAAAA8MAAAAAAAAAAAAAAIgAAiNDigAAKzEAZ4mKAgGxIQayEIAERFBULYv/cQNIUIABLVCL/nEDSFCyJoADZHB0siUhBLIiIQayIzIKsikyCrIqIrIBs7Q8iYoDALElshCL/7IUi/6yEYv9shIisgGziYoBACKL/zIKiP/diYoCAYv/i/4LkomKBQEoRwKL/CQdIov+H0hITBREjACL+yQdIov9H0hITBREjAGLAIsBDEEABYsAQgACiwGMAosCi/8dIiQfSEhMFESMAEYCiYoAATIKKWRwAEgkHSIyCipkcABIH0hITBREiYoDAYv+i/0dIov/H0hITBREiYoDASiB4weMAIv/iwAdi/1PAksBC04CHU4CCEwii/4kC4v/iwALCB9ISEwURIwAiTYaAUkVgSASRIgAAiNDigEAMQArZBJEK4v/Z4mABBUffHU2GgIXNhoBFzEWIwlJOBAjEkSIAAUWULAjQ4oDATEAK2QSRDIEIQUSRIv/OAcyChJEi/84CIHgpxIPRIv+i/0MRCmL/mcqi/1nJwSL/Yv+iP58Z4v+iP7Mi/2I/scnBGSJNhoDFzYaAhc2GgEXMRYjCUk4ECUSRDEWIQUJSTgQJRJEiAACI0OKBQAoi/wpZBJEi/sqZBJEi/0nBGQSRIv/OAAxABJEi/84EiINRIv/OBQyChJEi/84EYv8EkSL/jgAMQASRIv+OBIiDUSL/jgUMgoSRIv+OBGL+xJEMgqL/HAASIv/OBISSUEADTIKi/twAEiL/jgSEhBBAA6L/jgSi/84Eoj+KUIAPYv+OBKL/zgSMgqL+3AASIv+OBIJMgqL/HAASIv/OBIJIQQyCov9cABICYj+A4wAiwAiDUSLAIv9MQCI/cWJNhoDFzYaAhc2GgEXMRYjCUk4ECUSRIgAAiNDigQAKEcCi/4nBGQSRIv9KWQSRIv8KmQSRIv/OAAxABJEi/84EiINRIv/OBQyChJEi/84EYv+EkQhBDIKi/5wAEiL/zgSCQmMAIv/OBIyCov9cABIiwCI/eCMAYv/OBIyCov8cABIiwCI/c6MAosBi/0xAIj9M4sCi/wxAIj9KicFiP2aZ4k2GgIXNhoBFzEWIwlJOBAlEkSIAAIjQ4oDAChHAov+KWQSRIv9KmQSRIv/OBIiDUSL/zgUMgoSRIv/OAAxABJEi/84EYv+Eov/OBGL/RIRRIv/OBGL/hJBAAWL/kIAAov9jACL/zgRjAEyCosAcABIMgqLAXAASIv/OBIJi/84Eoj9QowCiwIiDUSLAosAMQCI/JAnBYj9AGeJgAS4RHs2NhoAjgH8MQCABN3Ey0qABCXmw3aABBAEXHmABAKON8GABGMqrtg2GgCOBf0g/Tz9o/6K/ysA", "clear": "Cg==" }, "compilerInfo": { "compiler": "algod", "compilerVersion": { "major": 4, "minor": 4, "patch": 1, "commitHash": "7b607ce4" } } }