0 txs
0 calls
constructor
constructor(address[] auxPolynomials, address oodsContract, address memoryPageFactRegistry_, address merkleStatementContractAddress, address friStatementContractAddress, uint256 numSecurityBits_, uint256 minProofOfWorkBits_)
functions
getLayoutInfo
purefunction getLayoutInfo() pure returns (uint256 publicMemoryOffset, uint256 selectedBuiltins)
PAGE_INFO_ADDRESS_OFFSET
viewfunction PAGE_INFO_ADDRESS_OFFSET() view returns (uint256)
PAGE_INFO_HASH_OFFSET
viewfunction PAGE_INFO_HASH_OFFSET() view returns (uint256)
PAGE_INFO_SIZE_IN_BYTES
viewfunction PAGE_INFO_SIZE_IN_BYTES() view returns (uint256)
PAGE_INFO_SIZE_OFFSET
viewfunction PAGE_INFO_SIZE_OFFSET() view returns (uint256)
PAGE_INFO_SIZE
viewfunction PAGE_INFO_SIZE() view returns (uint256)
verifyProofExternal
nonpayablefunction verifyProofExternal(uint256[] proofParams, uint256[] proof, uint256[] publicInput)
events
LogBool
event LogBool(bool val)
LogDebug
event LogDebug(uint256 val)
LogGas
event LogGas(string name, uint256 val)
LogValue
event LogValue(bytes32 val)
ReadFieldElementEvent
event ReadFieldElementEvent(uint256 val)
ReadHashEvent
event ReadHashEvent(bytes32 val)
SendRandomnessEvent
event SendRandomnessEvent(uint256 val)
errors
No errors.
creation bytecode
0x60c06040523480156200001157600080fd5b5060405162004ba738038062004ba7833981810160405260e08110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82518660208202830111640100000000821117156200008c57600080fd5b82525081516020918201928201910280838360005b83811015620000bb578181015183820152602001620000a1565b50505050919091016040908152602083015190830151606084015160808086015160a08088015160c09098015192889052829052600080546001600160a01b0319166001600160a01b0387161781558a51959950939750919591945090929091849186918a918a918a91889188918691906200013357fe5b6020908102919091010151600580546001600160a01b0319166001600160a01b039092169190911790556200016885620001b9565b5050600680546001600160a01b03199081166001600160a01b0393841617909155600780548216958316959095179094556008805490941694169390931790915550620002ac975050505050505050565b80600181518110620001c757fe5b6020026020010151600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806002815181106200020357fe5b6020026020010151600260006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806003815181106200023f57fe5b6020026020010151600360006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806004815181106200027b57fe5b6020026020010151600460006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050565b60805160a0516148d2620002d5600039806107a152508061081a5280610c0852506148d26000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80635b4c41c21161005b5780635b4c41c2146101ba5780638080fdfb146101c2578063b7a771f7146101e3578063e5b62b29146101eb5761007d565b80631cb7dd791461008257806329e10520146101985780634c14a6f9146101b2575b600080fd5b6101966004803603606081101561009857600080fd5b8101906020810181356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460208302840111640100000000831117156100e757600080fd5b91939092909160208101903564010000000081111561010557600080fd5b82018360208201111561011757600080fd5b8035906020019184602083028401116401000000008311171561013957600080fd5b91939092909160208101903564010000000081111561015757600080fd5b82018360208201111561016957600080fd5b8035906020019184602083028401116401000000008311171561018b57600080fd5b5090925090506101f3565b005b6101a0610299565b60408051918252519081900360200190f35b6101a061029e565b6101a06102a3565b6101ca6102a8565b6040805192835260208301919091528051918290030190f35b6101a06102b0565b6101a06102b5565b61029186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808a02828101820190935289825290935089925088918291850190849080828437600092019190915250506040805160208089028281018201909352888252909350889250879182918501908490808284376000920191909152506102ba92505050565b505050505050565b600281565b600381565b600181565b601790603f90565b606081565b600081565b60606102c68285610567565b905060006102d382610d9a565b90506102f0816102e286610da1565b6102eb86610da4565b610ddd565b6102fb816001610dfa565b60001c8260068151811061030b57fe5b60200260200101818152505061031f610e0f565b1561036d5761034681610330610e20565b6103418561033c610e25565b610e2b565b610ead565b610351816001610dfa565b82518390600790811061036057fe5b6020026020010181815250505b61037f81600161034185610169610e2b565b61038a816001610dfa565b60001c8260088151811061039a57fe5b6020026020010181815250506103b881600161034185610162610e2b565b60006103c2610fcb565b9050805b6103ce610fd1565b8201811015610401576103e2836001610fd7565b8482815181106103ee57fe5b60209081029190910101526001016103c6565b5061040b83610fec565b61041d826001610341866102ba610e2b565b610428826001610dfa565b60001c836101318151811061043957fe5b6020026020010181815250506000610450846111d3565b519050600061046185610127610e2b565b905060015b600183038110156104b357610482856001836020028501610ead565b61048d856001610dfa565b60001c868261013101815181106104a057fe5b6020908102919091010152600101610466565b506104c8846001610341886101268701610e2b565b6104d1856111eb565b6104ef84866003815181106104e257fe5b6020026020010151611336565b610532848660098151811061050057fe5b602002602001015160018860008151811061051757fe5b60200260200101510361052b89606d610e2b565b606061142b565b8560098151811061053f57fe5b60200260200101818152505061055485611591565b61055d856116b5565b5050505050505050565b606060058251116105d957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f496e76616c69642070726f6f66506172616d732e000000000000000000000000604482015290519081900360640190fd5b816004815181106105e657fe5b602002602001015160050182511461065f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f496e76616c69642070726f6f66506172616d732e000000000000000000000000604482015290519081900360640190fd5b60008260018151811061066e57fe5b6020026020010151905060108111156106d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806147f56022913960400191505060405180910390fd5b600181101561072c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806147766022913960400191505060405180910390fd5b60008360028151811061073b57fe5b60200260200101519050603281111561079f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806148496022913960400191505060405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000811015610818576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806147986025913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008110610890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061454c6026913960400191505060405180910390fd5b60008460038151811061089f57fe5b60200260200101519050600a811115610903576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806145ba602b913960400191505060405180910390fd5b60008560048151811061091257fe5b60200260200101519050600a81111561098c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f546f6f206d616e79206672692073746570732e00000000000000000000000000604482015290519081900360640190fd5b600181116109fb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f7420656e6f756768206672692073746570732e0000000000000000000000604482015290519081900360640190fd5b60608167ffffffffffffffff81118015610a1457600080fd5b50604051908082528060200260200182016040528015610a3e578160200160208202803683370190505b50905060005b82811015610a8257878160050181518110610a5b57fe5b6020026020010151828281518110610a6f57fe5b6020908102919091010152600101610a44565b506000610a8e896116c1565b9097509050610a9e828286611e6e565b6000610aac88610126610e2b565b90508281528460020a8861013b81518110610ac357fe5b6020026020010181815250508160020a8861014181518110610ae157fe5b6020026020010181815250508660020a88600181518110610afe57fe5b6020026020010181815250508588600381518110610b1857fe5b602002602001018181525050600089600081518110610b3357fe5b6020026020010151905060008111610b96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806146596026913960400191505060405180910390fd5b6030811115610c0657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f546f6f206d616e7920717565726965732e000000000000000000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000087898302011015610c83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806146fe6032913960400191505060405180910390fd5b8089600981518110610c9157fe5b60200260200101818152505087830189600281518110610cad57fe5b60200260200101818152505088600281518110610cc657fe5b602002602001015160020a89600081518110610cde57fe5b6020026020010181815250506000610d3760038b600081518110610cfe57fe5b602002602001015160017f08000000000000110000000000000000000000000000000000000000000000010381610d3157fe5b04612023565b9050808a600481518110610d4757fe5b602002602001018181525050610d71818b600181518110610d6457fe5b6020026020010151612023565b8a61016181518110610d7f57fe5b60200260200101818152505050505050505050505092915050565b6101600190565b90565b60008082601781518110610db457fe5b602002602001015190506000610dcb600083612057565b60209081029401939093209392505050565b602082018352610df5610def84612072565b82612078565b505050565b600080610e078484612084565b949350505050565b600080610e1a6120be565b11905090565b600690565b61016390565b60008061082e8310610e9e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4f766572666c6f772070726f74656374696f6e206661696c6564000000000000604482015290519081900360640190fd5b50506020908102919091010190565b63010000008210610f1f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4f766572666c6f772070726f74656374696f6e206661696c65642e0000000000604482015290519081900360640190fd5b7ff80000000000020f00000000000000000000000000000000000000000000001f60208401604085016020850284015b80851015610fc257835b848110610f7157506040832082516001018352610f59565b7f08000000000000110000000000000000000000000000000000000000000000017e400000000000011000000000000121000000000000000000000000000000008209865250602085019450610f4f565b50505050505050565b61016a90565b61012090565b600080610e07610fe78585612084565b6120c3565b610ff58161210e565b806101638151811061100357fe5b6020026020010151816101488151811061101957fe5b602002602001018181525050806101636001018151811061103657fe5b6020026020010151816101498151811061104c57fe5b602002602001018181525050806101636002018151811061106957fe5b60200260200101518161014b8151811061107f57fe5b6020026020010181815250506000611096826123b3565b9050808261014a815181106110a757fe5b602002602001018181525050506110bd816125f6565b60055460405160009173ffffffffffffffffffffffffffffffffffffffff16906127c0906129609060208183888601877ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa61111d573d6000803e3d6000fd5b80519450506000611179866102888151811061113557fe5b6020026020010151611174886101628151811061114e57fe5b6020026020010151896102886001018151811061116757fe5b6020026020010151612a2f565b612a5c565b9050808514610291576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806145726027913960400191505060405180910390fd5b606060006111e383610126610e2b565b519392505050565b6000600a905060008261013b8151811061120157fe5b60200260200101519050600080600090507f08000000000000110000000000000000000000000000000000000000000000006020850260208701018051935060208502808501855b8181101561126257805185109590951794602001611249565b50602083810180516001017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe089019081529390910190922090915260006040830152905250801561131457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c6964206669656c6420656c656d656e742e00000000000000000000604482015290519081900360640190fd5b818561013c8151811061132357fe5b6020026020010181815250505050505050565b8061134057611427565b60007f0123456789abcded00000000000000000000000000000000000000000000000060005260208301518060085282602853602960002060005283518051602052602860002092506001820160005260286000206020860152600060408601526008810185525050600082610100036001901b905080821061142457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f50726f6f66206f6620776f726b20636865636b206661696c65642e0000000000604482015290519081900360640190fd5b50505b5050565b60006801000000000000000084106114a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f6d61736b206d757374206265203c20322a2a36342e0000000000000000000000604482015290519081900360640190fd5b60008084815b8881101561157757826114d0576114c86114c38b612072565b612a89565b935061010092505b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092019183831c8816827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b8982111561154357508781035180831061153657611543565b808252888203915061151d565b808314611556578282529388019361156c565b5b8482101561156c578189018051909252611557565b5050506001016114aa565b50848682038161158357fe5b049998505050505050505050565b61159a81612abf565b6115d7816115a6612cac565b6115ae612cb1565b6115ba856102bb610e2b565b856006815181106115c757fe5b602002602001015160001b612cb6565b6115df610e0f565b1561161d5761161d816115f0612cac565b6115f86120be565b61160d85611604612cb1565b6102bb01610e2b565b856006600101815181106115c757fe5b61164a81611629612e27565b611631612e27565b61163d856107cb610e2b565b856008815181106115c757fe5b6000805473ffffffffffffffffffffffffffffffffffffffff169061167083606d610e2b565b8351909150611200908190839060010160200286867ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa611424573d6000803e3d6000fd5b6116be81612e2c565b50565b6060600060188351101561173657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f7075626c6963496e70757420697320746f6f2073686f72742e00000000000000604482015290519081900360640190fd5b6040805161082e808252620105e082019092529060208201620105c08036833701905050915062010000826101428151811061176e57fe5b602002602001018181525050618000826101438151811061178b57fe5b6020026020010181815250506000836001815181106117a657fe5b602002602001015190506032811061181f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e756d626572206f6620737465707320697320746f6f206c617267652e000000604482015290519081900360640190fd5b808361082b8151811061182e57fe5b6020026020010181815250506004810191508360028151811061184d57fe5b60200260200101518361014d8151811061186357fe5b6020026020010181815250508360038151811061187c57fe5b60200260200101518361014e8151811061189257fe5b6020026020010181815250508261014e815181106118ac57fe5b60200260200101518361014d815181106118c257fe5b6020026020010151111561193757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f72635f6d696e206d757374206265203c3d2072635f6d61780000000000000000604482015290519081900360640190fd5b826101428151811061194557fe5b60200260200101518361014e8151811061195b57fe5b6020026020010151106119cf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f72635f6d6178206f7574206f662072616e676500000000000000000000000000604482015290519081900360640190fd5b6b616c6c5f736f6c6964697479846004815181106119e957fe5b602002602001015114611a5d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4c61796f757420636f6465206d69736d617463682e0000000000000000000000604482015290519081900360640190fd5b83600581518110611a6a57fe5b60200260200101518361014581518110611a8057fe5b60200260200101818152505083600681518110611a9957fe5b60200260200101518361014781518110611aaf57fe5b60200260200101818152505060018361014581518110611acb57fe5b602002602001015114611b3f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e76616c696420696e697469616c2070630000000000000000000000000000604482015290519081900360640190fd5b60016004018361014781518110611b5257fe5b602002602001015114611bc657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f496e76616c69642066696e616c20706300000000000000000000000000000000604482015290519081900360640190fd5b83600781518110611bd357fe5b60200260200101518361014481518110611be957fe5b60200260200101818152505083600881518110611c0257fe5b60200260200101518361014681518110611c1857fe5b602002602001018181525050600184601781518110611c3357fe5b602002602001015110158015611c5f5750620186a084601781518110611c5557fe5b6020026020010151105b611cca57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f496e76616c6964206e756d626572206f66206d656d6f72792070616765732e00604482015290519081900360640190fd5b83601781518110611cd757fe5b60200260200101518361082d81518110611ced57fe5b6020026020010181815250506000805b8461082d81518110611d0b57fe5b6020026020010151811015611da357600086611d2683613323565b81518110611d3057fe5b6020026020010151905063400000008110611d96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061462e602b913960400191505060405180910390fd5b9190910190600101611cfd565b50808461082c81518110611db357fe5b602002602001018181525050506000611de08461082d81518110611dd357fe5b602002602001015161333d565b905084518114611e5157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f5075626c696320696e707574206c656e677468206d69736d617463682e000000604482015290519081900360640190fd5b6020850160c08501526005611e668587613355565b505050915091565b82600081518110611e7b57fe5b6020026020010151600014611edb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806147306025913960400191505060405180910390fd5b8251819060015b81811015611fc3576000868281518110611ef857fe5b602002602001015190506002811015611f5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806147556021913960400191505060405180910390fd5b6004811115611fb6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806145996021913960400191505060405180910390fd5b9290920191600101611ee2565b5083821461201c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806146ab6024913960400191505060405180910390fd5b5050505050565b600061205083837f080000000000001100000000000000000000000000000000000000000000000161392f565b9392505050565b600082600183600302612068612cb1565b0103019392505050565b60200190565b6114278282600061396a565b81518051602082018452600091908315610e0757602085016020810160018251018252828152604082208252600081525050949350505050565b600390565b60007f08000000000000110000000000000000000000000000000000000000000000017e40000000000001100000000000012100000000000000000000000000000000830992915050565b60008161082d8151811061211e57fe5b6020026020010151905060005b81811015610df557600061213e82613975565b6020028460058151811061214e57fe5b60200260200101510190506000806121668486612057565b6020028660058151811061217657fe5b602002602001015101905060008061218d86613323565b6020028860058151811061219d57fe5b602002602001015101905060008151905083519250855194506000808811156121ec5760006121cb89613987565b6020028b6005815181106121db57fe5b602002602001015101905080519150505b600088156121fb5760016121fe565b60005b7f0800000000000011000000000000000000000000000000000000000000000001848d6101638151811061222e57fe5b60200260200101518e6101636001018151811061224757fe5b6020026020010151898c886040516020018089815260200188815260200187815260200186815260200185815260200184815260200183815260200182815260200198505050505050505050604051602081830303815290604052805190602001209050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636a938567826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561231e57600080fd5b505afa158015612332573d6000803e3d6000fd5b505050506040513d602081101561234857600080fd5b505161239f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806145e56024913960400191505060405180910390fd5b50506001909601955061212b945050505050565b6000808261082c815181106123c457fe5b60200260200101519050600083610148815181106123de57fe5b60200260200101519050600084610149815181106123f857fe5b602002602001015190506000612424866101418151811061241557fe5b602002602001015160106139f3565b90506301000000841061249857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4f766572666c6f772070726f74656374696f6e206661696c65642e0000000000604482015290519081900360640190fd5b808411156124f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806146cf602f913960400191505060405180910390fd5b60008661082d8151811061250157fe5b602002602001015190506000612518600083612057565b6020028860058151811061252857fe5b6020026020010151019050600061256082847f0800000000000011000000000000000000000000000000000000000000000001613ad4565b905060008960058151811061257157fe5b60209081029190910101516102a08101516102c082015191925090600061259c83611174848c612a2f565b905060006125b56125ad8c84613afe565b8d8b03612023565b90506125c18682612a2f565b955060006125cf8c8b612023565b90506125e3816125de89613b4d565b612a2f565b9f9e505050505050505050505050505050565b6000816101628151811061260657fe5b6020026020010151905060008261082b8151811061262057fe5b602002602001015160020a9050600061263d8260046008026139f3565b9050600061264b8483612023565b600154604080517f5ed86d5c00000000000000000000000000000000000000000000000000000000815260048101849052905192935073ffffffffffffffffffffffffffffffffffffffff90911691635ed86d5c91602480820192602092909190829003018186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d60208110156126ea57600080fd5b50518551869061013d9081106126fc57fe5b602090810291909101810191909152600254604080517f5ed86d5c00000000000000000000000000000000000000000000000000000000815260048101859052905173ffffffffffffffffffffffffffffffffffffffff90921692635ed86d5c92602480840193829003018186803b15801561277757600080fd5b505afa15801561278b573d6000803e3d6000fd5b505050506040513d60208110156127a157600080fd5b50518551869061013e9081106127b357fe5b60200260200101818152505060006127e88661082b815181106127d257fe5b602002602001015160020a6001610200026139f3565b905060006127f68683612023565b600354604080517f5ed86d5c00000000000000000000000000000000000000000000000000000000815260048101849052905192935073ffffffffffffffffffffffffffffffffffffffff90911691635ed86d5c91602480820192602092909190829003018186803b15801561286b57600080fd5b505afa15801561287f573d6000803e3d6000fd5b505050506040513d602081101561289557600080fd5b50518751889061013f9081106128a757fe5b60209081029190910181019190915260048054604080517f5ed86d5c0000000000000000000000000000000000000000000000000000000081529283018590525173ffffffffffffffffffffffffffffffffffffffff90911692635ed86d5c9260248082019391829003018186803b15801561292257600080fd5b505afa158015612936573d6000803e3d6000fd5b505050506040513d602081101561294c57600080fd5b50518751889061014090811061295e57fe5b602002602001018181525050866101636003018151811061297b57fe5b60200260200101518761014f8151811061299157fe5b60200260200101818152505086610163600401815181106129ae57fe5b602002602001015187610152815181106129c457fe5b60200260200101818152505086610163600501815181106129e157fe5b602002602001015187610153815181106129f757fe5b602002602001018181525050612a0c87613ba0565b8761015481518110612a1a57fe5b60200260200101818152505050505050505050565b60007f08000000000000110000000000000000000000000000000000000000000000018284099392505050565b60007f08000000000000110000000000000000000000000000000000000000000000018284089392505050565b6000806000612a9784613d57565b9092509050612aa68282613d63565b94509092509050612ab884838361396a565b5050919050565b600081600981518110612ace57fe5b602002602001015190506000612ae583606d610e2b565b90506060820281016000612afb8561028a610e2b565b9050600085600281518110612b0c57fe5b60200260200101519050600086600081518110612b2557fe5b60200260200101519050600087600481518110612b3e57fe5b60200260200101519050612c55565b600081905067aaaaaaaaaaaaaaaa8116675555555555555555821660021b179050680199999999999999988116676666666666666666821660041b179050680787878787878787808116677878787878787878821660081b179050687f807f807f807f80008116677f807f807f807f80821660101b179050697fff80007fff800000008116677fff80007fff8000821660201b1790506b7fffffff80000000000000008116677fffffff80000000821660401b1790508083607f031c905092915050565b600060405160208152602080820152602060408201528260608201528360808201528460a082015260208160c08360055afa612c4c57600080fd5b51949350505050565b8486101561055d5785518281018752612c987f0800000000000011000000000000000000000000000000000000000000000001612c928684612b4d565b84612c11565b855250602084019350606086019550612c55565b601b90565b601890565b612cbe612e27565b612cc6612cac565b01831115612d3557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f546f6f206d616e7920636f6c756d6e732e000000000000000000000000000000604482015290519081900360640190fd5b600085600981518110612d4457fe5b602002602001015190506000612d5b87600a610e2b565b90506000612d6a88606d610e2b565b90506060830281016000612d7f8a600d610e2b565b84519091506020808a02918a8c0390910290835b85871015612e09577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000848320166020851415612dcd575081515b8751825260208201526040018184015b80831015612df85782518c5260209b8c019b90920191612ddd565b50828b019a50606087019650612d93565b508652612e1886848a8a613d96565b50505050505050505050505050565b600290565b6000612e3782610d9a565b9050600082600981518110612e4857fe5b6020026020010151905060005b81811015612ecb57612ea38482600302606d0160010181518110612e7557fe5b60200260200101517f07fffffffffffdf0ffffffffffffffffffffffffffffffffffffffffffffffe1612a2f565b8482600302606d0160010181518110612eb857fe5b6020908102919091010152600101612e55565b506000612ed984606d610e2b565b60608381028220919250612eec866111d3565b80519091507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190600190600090849083908110612f2757fe5b60200260200101519050612f3961452d565b83831015613145576000612f4e8a6001612084565b60001c90508a846101270181518110612f6357fe5b602002602001015182600060058110612f7857fe5b60200201528551869085908110612f8b57fe5b602002602001015182600160058110612fa057fe5b602002015260408201879052606082018190528a518b906101308601908110612fc557fe5b602002602001015182600460058110612fda57fe5b6020908102919091019190915260085460405173ffffffffffffffffffffffffffffffffffffffff90911691636a93856791859101808260a080838360005b83811015613031578181015183820152602001613019565b50505050905001915050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561308557600080fd5b505afa158015613099573d6000803e3d6000fd5b505050506040513d60208110156130af57600080fd5b505161311c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f494e56414c4944415445445f4652495f53544154454d454e5400000000000000604482015290519081900360640190fd5b809650838060010194505085848151811061313357fe5b60200260200101518301925050612f39565b8983610127018151811061315557fe5b60200260200101518160006005811061316a57fe5b6020020152845185908490811061317d57fe5b60200260200101518160016005811061319257fe5b6020020152604081018690526131a98a8984613dad565b606082015289518a9061013085019081106131c057fe5b6020026020010151816004600581106131d557fe5b6020908102919091019190915260085460405173ffffffffffffffffffffffffffffffffffffffff90911691636a93856791849101808260a080838360005b8381101561322c578181015183820152602001613214565b50505050905001915050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561328057600080fd5b505afa158015613294573d6000803e3d6000fd5b505050506040513d60208110156132aa57600080fd5b505161331757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f494e56414c4944415445445f4652495f53544154454d454e5400000000000000604482015290519081900360640190fd5b50505050505050505050565b600060018083600302613334612cb1565b01030192915050565b600060016004830261334d612cb1565b010392915050565b60008160098151811061336457fe5b60200260200101519050600082600a8151811061337d57fe5b60200260200101519050808211156133e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806146096025913960400191505060405180910390fd5b68010000000000000000811061345757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4f7574206f662072616e6765206f75747075742073746f705f7074722e000000604482015290519081900360640190fd5b60008461082b8151811061346757fe5b602002602001015160020a905083600b8151811061348157fe5b6020026020010151856101578151811061349757fe5b60200260200101818152505061351185610157815181106134b457fe5b602002602001015185600c815181106134c957fe5b602002602001015160086003856040518060400160405280600881526020017f706564657273656e000000000000000000000000000000000000000000000000815250613f21565b7f049ee3eba8c1600700ee1b87eb599f16716b0b1022947733551fde4050ca6804856101558151811061354057fe5b6020026020010181815250507f03ca0cfe4b3bc6ddf346d49d06ea0ed34e621062c0e056c1d0405d266e10268a856101568151811061357b57fe5b60200260200101818152505083600d8151811061359457fe5b602002602001015185610158815181106135aa57fe5b60200260200101818152505061362485610158815181106135c757fe5b602002602001015185600e815181106135dc57fe5b602002602001015160086001856040518060400160405280600b81526020017f72616e67655f636865636b000000000000000000000000000000000000000000815250613f21565b60018561014c8151811061363457fe5b60200260200101818152505083600f8151811061364d57fe5b60200260200101518561015d8151811061366357fe5b6020026020010181815250506136de8561015d8151811061368057fe5b60200260200101518560108151811061369557fe5b60200260200101516102006002856040518060400160405280600581526020017f6563647361000000000000000000000000000000000000000000000000000000815250613f21565b600185610159815181106136ee57fe5b6020026020010181815250507f06f21413efbe40de150e596d72f7a8c5609ad26c15c915c1f4cdfcb99cee9e898561015c8151811061372957fe5b6020026020010181815250507f049ee3eba8c1600700ee1b87eb599f16716b0b1022947733551fde4050ca68048561015a8151811061376457fe5b6020026020010181815250507f03ca0cfe4b3bc6ddf346d49d06ea0ed34e621062c0e056c1d0405d266e10268a8561015b8151811061379f57fe5b602002602001018181525050836011815181106137b857fe5b60200260200101518561015e815181106137ce57fe5b6020026020010181815250506138498561015e815181106137eb57fe5b60200260200101518560128151811061380057fe5b60200260200101516101006005856040518060400160405280600781526020017f6269747769736500000000000000000000000000000000000000000000000000815250613f21565b6001856101508151811061385957fe5b6020026020010181815250506000856101518151811061387557fe5b6020026020010181815250508360138151811061388e57fe5b60200260200101518561015f815181106138a457fe5b60200260200101818152505061391f8561015f815181106138c157fe5b6020026020010151856014815181106138d657fe5b60200260200101516101006007856040518060400160405280600581526020017f65635f6f70000000000000000000000000000000000000000000000000000000815250613f21565b6001856101608151811061132357fe5b600060405160208152602080820152602060408201528460608201528360808201528260a082015260208160c08360055afa612c4c57600080fd5b908252602090910152565b60006002600183600302613334612cb1565b600060018210156139e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806148176032913960400191505060405180910390fd5b6000600183600302613334612cb1565b6000808211613a6357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5468652064656e6f6d696e61746f72206d757374206e6f74206265207a65726f604482015290519081900360640190fd5b818381613a6c57fe5b0615613ac3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603281526020018061486b6032913960400191505060405180910390fd5b818381613acc57fe5b049392505050565b6001602083028401845b81811015613af55783815184099250602001613ade565b50509392505050565b60007f0800000000000011000000000000000000000000000000000000000000000001827f08000000000000110000000000000000000000000000000000000000000000010384089392505050565b6000613b9a827f0800000000000010ffffffffffffffffffffffffffffffffffffffffffffffff7f080000000000001100000000000000000000000000000000000000000000000161392f565b92915050565b6000808261015281518110613bb157fe5b6020026020010151905060008361015381518110613bcb57fe5b602090810291909101015190506010600e60018481019080805b6010811015613d22577f080000000000001100000000000000000000000000000000000000000000000185830891507f080000000000001100000000000000000000000000000000000000000000000186860994507f08000000000000110000000000000000000000000000000000000000000000018483097f0800000000000011000000000000000000000000000000000000000000000001818a0985017f0800000000000011000000000000000000000000000000000000000000000001857f08000000000000110000000000000000000000000000000000000000000000018487097f0800000000000011000000000000000000000000000000000000000000000001848909010894507f080000000000001100000000000000000000000000000000000000000000000181870995505050600101613be5565b507f08000000000000110000000000000000000000000000000000000000000000018087840984089998505050505050505050565b80516020820151915091565b60408051602080820185905281830184905282518083038401815260609092019092528051910120919260019091019190565b6000613da485858585614203565b95945050505050565b6000808461013b81518110613dbe57fe5b602002602001015190506000600186600181518110613dd957fe5b602002602001015183020390506000846001901b905060008060008961013c81518110613e0257fe5b6020026020010151905060005b89811015613efc576000898c83600302606d0181518110613e2c57fe5b6020026020010151901c905083811415613e465750613ef4565b808c86600302606d0181518110613e5957fe5b6020026020010181815250508093506000613e908d84600302606d0160020181518110613e8257fe5b602002602001015188612023565b9050808d87600302606d0160020181518110613ea857fe5b602002602001018181525050613ebe8189612023565b9050613ecb84828b6143bf565b8d87600302606d0160010181518110613ee057fe5b602090810291909101015250506001909301925b600101613e0f565b506000613f0a8b606d610e2b565b6060949094029093209a9950505050505050505050565b6801000000000000000086108160405160200180807f4f7574206f662072616e67652000000000000000000000000000000000000000815250600d0182805190602001908083835b60208310613fa657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613f69565b6001836020036101000a038019825116818451168082178552505050505050905001807f20626567696e5f616464722e0000000000000000000000000000000000000000815250600c01915050604051602081830303815290604052906140a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561406a578181015183820152602001614052565b50505050905090810190601f1680156140975780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060006140b283866139f3565b8402870190508587111580156140c85750808611155b8260405160200180807f496e76616c69642000000000000000000000000000000000000000000000000081525060080182805190602001908083835b6020831061414157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101614104565b6001836020036101000a038019825116818451168082178552505050505050905001807f2073746f705f7074722e00000000000000000000000000000000000000000000815250600a019150506040516020818303038152906040529061055d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835190928392604490910191908501908083836000831561406a578181015183820152602001614052565b600080608083111561427657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f544f4f5f4d414e595f4d45524b4c455f51554552494553000000000000000000604482015290519081900360640190fd5b604051806040850287015b8088101561429c578751825260209788019790910190614281565b508581526020808201604081815284840383019094206007547f6a9385670000000000000000000000000000000000000000000000000000000090925260248401819052935193945073ffffffffffffffffffffffffffffffffffffffff1692636a938567926044808201939291829003018186803b15801561431e57600080fd5b505afa158015614332573d6000803e3d6000fd5b505050506040513d602081101561434857600080fd5b50516143b557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f494e56414c4944415445445f4d45524b4c455f53544154454d454e5400000000604482015290519081900360640190fd5b5091949350505050565b6000807f0800000000000011000000000000000000000000000000000000000000000001600884061561443d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806147bd6038913960400191505060405180910390fd5b6110008410614497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061467f602c913960400191505060405180910390fd5b6020840286015b86811115614518577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000181868181818181818a0960e0880151010960c0860151010960a08401510109608082015101925081868388858a878c8a09606088015101096040860151010960208401510109815101925061449e565b5080828161452257fe5b069695505050505050565b6040518060a00160405280600590602082028036833750919291505056fe50726f6f6673206d6179206e6f7420626520707572656c79206261736564206f6e20506f572e636c61696d6564436f6d706f736974696f6e20646f6573206e6f74206d617463682074726163654d617820737570706f727465642066726920737465702073697a6520697320342e6c6f674672694c6173744c61796572446567426f756e64206d757374206265206174206d6f73742031302e4d656d6f72792070616765206661637420776173206e6f7420726567697374657265642e6f757470757420626567696e5f61646472206d757374206265203c3d2073746f705f707472546f6f206d616e79207075626c6963206d656d6f727920656e747269657320696e206f6e6520706167652e4e756d626572206f662071756572696573206d757374206265206174206c65617374206f6e654e6f206d6f7265207468616e203430393620636f656666696369656e74732061726520737570706f7274656446726920706172616d7320646f206e6f74206d61746368207472616365206c656e6774684e756d626572206f662076616c756573206f66207075626c6963206d656d6f727920697320746f6f206c617267652e50726f6f6620706172616d7320646f206e6f74207361746973667920736563757269747920726571756972656d656e74732e4f6e6c792065746130203d3d20302069732063757272656e746c7920737570706f727465644d696e20737570706f727465642066726920737465702073697a6520697320322e6c6f67426c6f777570466163746f72206d757374206265206174206c6561737420316d696e696d756d2070726f6f664f66576f726b42697473206e6f74207361746973666965644e756d626572206f6620706f6c796e6f6d69616c20636f656666696369656e7473206d75737420626520646976697369626c6520627920386c6f67426c6f777570466163746f72206d757374206265206174206d6f737420313641646472657373206f6620706167652030206973206e6f742070617274206f6620746865207075626c696320696e7075742e70726f6f664f66576f726b42697473206d757374206265206174206d6f7374203530546865206e756d657261746f72206973206e6f7420646976697369626c65206279207468652064656e6f6d696e61746f722ea26469706673582212206f48c64294ade741867ecaaab2ff1f749a87dd13b17a4f9a603a25891dcb68e864736f6c634300060c003300000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000acc3292202b05175f86c7bf4bd6011eb79ec5cb000000000000000000000000e583bcde0160b637330b27a3ea1f3c02ba2ec46000000000000000000000000032a91ff604ab2adcd832e91d68b2f3f25358fdad00000000000000000000000030efaaa99f8efe310d9fdc83072e2a04c093d400000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000000000000000000000547eecf2aee8f3859732bcffc70de24c75ce0717000000000000000000000000047dd4275bbdc1ee6b8bf026239e203c617e86d10000000000000000000000001a6f3bd4e4b80f85a0b1974b73d981f3295899ed00000000000000000000000001228f83c6664a14fc3bb4ea28b7d1a2fc283bf1000000000000000000000000e3929ea107238ce59d64a3ce497f12b57846b716