0x60806040525f6006555f600755737a250d5630b4cf539739df2c5dacb4c659f2488d60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006c575f80fd5b50336040518060400160405280600581526020017f4b504f504f0000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4b504f00000000000000000000000000000000000000000000000000000000008152508160039081620000eb919062000507565b508060049081620000fd919062000507565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000173575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200016a91906200062e565b60405180910390fd5b6200018481620001e060201b60201c565b506a52b7d2dcc80cd2e40000006002819055506002545f803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555062000649565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200031f57607f821691505b602082108103620003355762000334620002da565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620003997fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200035c565b620003a586836200035c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620003ef620003e9620003e384620003bd565b620003c6565b620003bd565b9050919050565b5f819050919050565b6200040a83620003cf565b620004226200041982620003f6565b84845462000368565b825550505050565b5f90565b620004386200042a565b62000445818484620003ff565b505050565b5b818110156200046c57620004605f826200042e565b6001810190506200044b565b5050565b601f821115620004bb5762000485816200033b565b62000490846200034d565b81016020851015620004a0578190505b620004b8620004af856200034d565b8301826200044a565b50505b505050565b5f82821c905092915050565b5f620004dd5f1984600802620004c0565b1980831691505092915050565b5f620004f78383620004cc565b9150826002028217905092915050565b6200051282620002a3565b67ffffffffffffffff8111156200052e576200052d620002ad565b5b6200053a825462000307565b6200054782828562000470565b5f60209050601f8311600181146200057d575f841562000568578287015190505b620005748582620004ea565b865550620005e3565b601f1984166200058d866200033b565b5f5b82811015620005b6578489015182556001820191506020850194506020810190506200058f565b86831015620005d65784890151620005d2601f891682620004cc565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200061682620005eb565b9050919050565b62000628816200060a565b82525050565b5f602082019050620006435f8301846200061d565b92915050565b6119e980620006575f395ff3fe608060405234801561000f575f80fd5b506004361061011f575f3560e01c8063715018a6116100ab578063a11223da1161006f578063a11223da146102d1578063a9059cbb146102ed578063c38e5f5e1461031d578063dd62ed3e14610327578063f2fde38b146103575761011f565b8063715018a6146102515780637298d36e1461025b5780638187f516146102795780638da5cb5b1461029557806395d89b41146102b35761011f565b806325fa0b98116100f257806325fa0b98146101bf578063313ce567146101c95780633736421b146101e7578063667f65261461020557806370a08231146102215761011f565b806306fdde0314610123578063095ea7b31461014157806318160ddd1461017157806323b872dd1461018f575b5f80fd5b61012b610373565b60405161013891906111ce565b60405180910390f35b61015b6004803603810190610156919061128c565b610403565b60405161016891906112e4565b60405180910390f35b610179610425565b604051610186919061130c565b60405180910390f35b6101a960048036038101906101a49190611325565b61042e565b6040516101b691906112e4565b60405180910390f35b6101c761045c565b005b6101d1610481565b6040516101de9190611390565b60405180910390f35b6101ef610489565b6040516101fc91906113b8565b60405180910390f35b61021f600480360381019061021a91906113d1565b6104af565b005b61023b6004803603810190610236919061140f565b6104c9565b604051610248919061130c565b60405180910390f35b61025961050e565b005b610263610521565b6040516102709190611495565b60405180910390f35b610293600480360381019061028e919061140f565b610546565b005b61029d610592565b6040516102aa91906113b8565b60405180910390f35b6102bb6105ba565b6040516102c891906111ce565b60405180910390f35b6102eb60048036038101906102e691906115ee565b61064a565b005b6103076004803603810190610302919061128c565b6106fb565b60405161031491906112e4565b60405180910390f35b61032561071d565b005b610341600480360381019061033c9190611648565b610741565b60405161034e919061130c565b60405180910390f35b610371600480360381019061036c919061140f565b6107c3565b005b606060038054610382906116b3565b80601f01602080910402602001604051908101604052809291908181526020018280546103ae906116b3565b80156103f95780601f106103d0576101008083540402835291602001916103f9565b820191905f5260205f20905b8154815290600101906020018083116103dc57829003601f168201915b5050505050905090565b5f8061040d610847565b905061041a81858561084e565b600191505092915050565b5f600254905090565b5f80610438610847565b9050610445858285610860565b6104508585856108f2565b60019150509392505050565b610464610ca9565b6001600560146101000a81548160ff021916908315150217905550565b5f6012905090565b600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6104b7610ca9565b81600681905550806007819055505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610516610ca9565b61051f5f610d30565b565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61054e610ca9565b80600860016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546105c9906116b3565b80601f01602080910402602001604051908101604052809291908181526020018280546105f5906116b3565b80156106405780601f1061061757610100808354040283529160200191610640565b820191905f5260205f20905b81548152906001019060200180831161062357829003601f168201915b5050505050905090565b610652610ca9565b5f5b82518110156106f6578281815181106106705761066f6116e3565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610696610592565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106db919061130c565b60405180910390a380806106ee9061173d565b915050610654565b505050565b5f80610705610847565b90506107128185856108f2565b600191505092915050565b610725610ca9565b600160085f6101000a81548160ff021916908315150217905550565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6107cb610ca9565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361083b575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161083291906113b8565b60405180910390fd5b61084481610d30565b50565b5f33905090565b61085b8383836001610df3565b505050565b5f61086b8484610741565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108ec57818110156108dd578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016108d493929190611784565b60405180910390fd5b6108eb84848484035f610df3565b5b50505050565b6001600560146101000a81548160ff021916908315150217905561094b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094290611803565b60405180910390fd5b5f600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036109f8576064600754836109b19190611821565b6109bb919061188f565b905080826109c991906118bf565b91506109f7600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682610fc2565b5b600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015610a60575060085f9054906101000a900460ff165b15610b10576103e860028054610a769190611821565b610a80919061188f565b825f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ac891906118f2565b1115610b0f575f610b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0590611995565b60405180910390fd5b5b5b600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b9a57606460065483610b759190611821565b610b7f919061188f565b90508082610b8d91906118bf565b9150610b998482610fc2565b5b815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610be591906118f2565b92505081905550815f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610c3791906118bf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c9b919061130c565b60405180910390a350505050565b610cb1610847565b73ffffffffffffffffffffffffffffffffffffffff16610ccf610592565b73ffffffffffffffffffffffffffffffffffffffff1614610d2e57610cf2610847565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610d2591906113b8565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610e63575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610e5a91906113b8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ed3575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610eca91906113b8565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610fbc578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610fb3919061130c565b60405180910390a35b50505050565b5f81031561114057805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461101291906118bf565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550805f803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461109a91906118f2565b5f803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611137919061130c565b60405180910390a35b5050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561117b578082015181840152602081019050611160565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6111a082611144565b6111aa818561114e565b93506111ba81856020860161115e565b6111c381611186565b840191505092915050565b5f6020820190508181035f8301526111e68184611196565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611228826111ff565b9050919050565b6112388161121e565b8114611242575f80fd5b50565b5f813590506112538161122f565b92915050565b5f819050919050565b61126b81611259565b8114611275575f80fd5b50565b5f8135905061128681611262565b92915050565b5f80604083850312156112a2576112a16111f7565b5b5f6112af85828601611245565b92505060206112c085828601611278565b9150509250929050565b5f8115159050919050565b6112de816112ca565b82525050565b5f6020820190506112f75f8301846112d5565b92915050565b61130681611259565b82525050565b5f60208201905061131f5f8301846112fd565b92915050565b5f805f6060848603121561133c5761133b6111f7565b5b5f61134986828701611245565b935050602061135a86828701611245565b925050604061136b86828701611278565b9150509250925092565b5f60ff82169050919050565b61138a81611375565b82525050565b5f6020820190506113a35f830184611381565b92915050565b6113b28161121e565b82525050565b5f6020820190506113cb5f8301846113a9565b92915050565b5f80604083850312156113e7576113e66111f7565b5b5f6113f485828601611278565b925050602061140585828601611278565b9150509250929050565b5f60208284031215611424576114236111f7565b5b5f61143184828501611245565b91505092915050565b5f819050919050565b5f61145d611458611453846111ff565b61143a565b6111ff565b9050919050565b5f61146e82611443565b9050919050565b5f61147f82611464565b9050919050565b61148f81611475565b82525050565b5f6020820190506114a85f830184611486565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6114e882611186565b810181811067ffffffffffffffff82111715611507576115066114b2565b5b80604052505050565b5f6115196111ee565b905061152582826114df565b919050565b5f67ffffffffffffffff821115611544576115436114b2565b5b602082029050602081019050919050565b5f80fd5b5f61156b6115668461152a565b611510565b9050808382526020820190506020840283018581111561158e5761158d611555565b5b835b818110156115b757806115a38882611245565b845260208401935050602081019050611590565b5050509392505050565b5f82601f8301126115d5576115d46114ae565b5b81356115e5848260208601611559565b91505092915050565b5f8060408385031215611604576116036111f7565b5b5f83013567ffffffffffffffff811115611621576116206111fb565b5b61162d858286016115c1565b925050602061163e85828601611278565b9150509250929050565b5f806040838503121561165e5761165d6111f7565b5b5f61166b85828601611245565b925050602061167c85828601611245565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806116ca57607f821691505b6020821081036116dd576116dc611686565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61174782611259565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361177957611778611710565b5b600182019050919050565b5f6060820190506117975f8301866113a9565b6117a460208301856112fd565b6117b160408301846112fd565b949350505050565b7f74726164696e672d6e6f742d656e61626c6564000000000000000000000000005f82015250565b5f6117ed60138361114e565b91506117f8826117b9565b602082019050919050565b5f6020820190508181035f83015261181a816117e1565b9050919050565b5f61182b82611259565b915061183683611259565b925082820261184481611259565b9150828204841483151761185b5761185a611710565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61189982611259565b91506118a483611259565b9250826118b4576118b3611862565b5b828204905092915050565b5f6118c982611259565b91506118d483611259565b92508282039050818111156118ec576118eb611710565b5b92915050565b5f6118fc82611259565b915061190783611259565b925082820190508082111561191f5761191e611710565b5b92915050565b7f5075726368617365207265737472696374696f6e7320657863656564696e67205f8201527f3225206f662074686520746f74616c207175616e746974790000000000000000602082015250565b5f61197f60388361114e565b915061198a82611925565b604082019050919050565b5f6020820190508181035f8301526119ac81611973565b905091905056fea2646970667358221220fbb2ffc88bfa19cb839b08a050df8a2532b695170afb730e2796c6ca9a0f82cb64736f6c63430008140033