60806040526040518060400160405280601481526020017f426c75652053637265656e206f66204465617468000000000000000000000000815250600190816200004a919062000550565b506040518060400160405280600481526020017f42534f44000000000000000000000000000000000000000000000000000000008152506002908162000091919062000550565b506012600360006101000a81548160ff021916908360ff160217905550620000be620001d260201b60201c565b600a620000cc9190620007c7565b620f4240620000dc919062000818565b600455348015620000ec57600080fd5b50620000fe33620001e960201b60201c565b6004546005600062000115620002ad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000163620002ad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454604051620001c4919062000874565b60405180910390a362000891565b6000600360009054906101000a900460ff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200035857607f821691505b6020821081036200036e576200036d62000310565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003d87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000399565b620003e4868362000399565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004316200042b6200042584620003fc565b62000406565b620003fc565b9050919050565b6000819050919050565b6200044d8362000410565b620004656200045c8262000438565b848454620003a6565b825550505050565b600090565b6200047c6200046d565b6200048981848462000442565b505050565b5b81811015620004b157620004a560008262000472565b6001810190506200048f565b5050565b601f8211156200050057620004ca8162000374565b620004d58462000389565b81016020851015620004e5578190505b620004fd620004f48562000389565b8301826200048e565b50505b505050565b600082821c905092915050565b6000620005256000198460080262000505565b1980831691505092915050565b600062000540838362000512565b9150826002028217905092915050565b6200055b82620002d6565b67ffffffffffffffff811115620005775762000576620002e1565b5b6200058382546200033f565b62000590828285620004b5565b600060209050601f831160018114620005c85760008415620005b3578287015190505b620005bf858262000532565b8655506200062f565b601f198416620005d88662000374565b60005b828110156200060257848901518255600182019150602085019450602081019050620005db565b868310156200062257848901516200061e601f89168262000512565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620006c5578086048111156200069d576200069c62000637565b5b6001851615620006ad5780820291505b8081029050620006bd8562000666565b94506200067d565b94509492505050565b600082620006e05760019050620007b3565b81620006f05760009050620007b3565b816001811462000709576002811462000714576200074a565b6001915050620007b3565b60ff84111562000729576200072862000637565b5b8360020a91508482111562000743576200074262000637565b5b50620007b3565b5060208310610133831016604e8410600b8410161715620007845782820a9050838111156200077e576200077d62000637565b5b620007b3565b62000793848484600162000673565b92509050818404811115620007ad57620007ac62000637565b5b81810290505b9392505050565b600060ff82169050919050565b6000620007d482620003fc565b9150620007e183620007ba565b9250620008107fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006ce565b905092915050565b60006200082582620003fc565b91506200083283620003fc565b92508282026200084281620003fc565b915082820484148315176200085c576200085b62000637565b5b5092915050565b6200086e81620003fc565b82525050565b60006020820190506200088b600083018462000863565b92915050565b61159e80620008a16000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063715018a61161008c578063a457c2d711610066578063a457c2d71461024f578063a9059cbb1461027f578063dd62ed3e146102af578063f2fde38b146102df576100ea565b8063715018a6146102095780638da5cb5b1461021357806395d89b4114610231576100ea565b806323b872dd116100c857806323b872dd1461015b578063313ce5671461018b57806339509351146101a957806370a08231146101d9576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd1461013d575b600080fd5b6100f76102fb565b6040516101049190610d53565b60405180910390f35b61012760048036038101906101229190610e0e565b61038d565b6040516101349190610e69565b60405180910390f35b6101456103a9565b6040516101529190610e93565b60405180910390f35b61017560048036038101906101709190610eae565b6103b3565b6040516101829190610e69565b60405180910390f35b6101936103db565b6040516101a09190610f1d565b60405180910390f35b6101c360048036038101906101be9190610e0e565b6103f2565b6040516101d09190610e69565b60405180910390f35b6101f360048036038101906101ee9190610f38565b610422565b6040516102009190610e93565b60405180910390f35b61021161046b565b005b61021b61047f565b6040516102289190610f74565b60405180910390f35b6102396104a8565b6040516102469190610d53565b60405180910390f35b61026960048036038101906102649190610e0e565b61053a565b6040516102769190610e69565b60405180910390f35b61029960048036038101906102949190610e0e565b6105aa565b6040516102a69190610e69565b60405180910390f35b6102c960048036038101906102c49190610f8f565b6105c6565b6040516102d69190610e93565b60405180910390f35b6102f960048036038101906102f49190610f38565b61064d565b005b60606001805461030a90610ffe565b80601f016020809104026020016040519081016040528092919081815260200182805461033690610ffe565b80156103835780601f1061035857610100808354040283529160200191610383565b820191906000526020600020905b81548152906001019060200180831161036657829003601f168201915b5050505050905090565b60008033905061039e8185856106d0565b600191505092915050565b6000600454905090565b6000803390506103c4858285610899565b6103cf858585610925565b60019150509392505050565b6000600360009054906101000a900460ff16905090565b60008033905061041781858561040885896105c6565b610412919061105e565b6106d0565b600191505092915050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610473610b88565b61047d6000610bff565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546104b790610ffe565b80601f01602080910402602001604051908101604052809291908181526020018280546104e390610ffe565b80156105305780601f1061050557610100808354040283529160200191610530565b820191906000526020600020905b81548152906001019060200180831161051357829003601f168201915b5050505050905090565b600080339050600061054c82866105c6565b905083811015610591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058890611104565b60405180910390fd5b61059e82868684036106d0565b60019250505092915050565b6000803390506105bb818585610925565b600191505092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610655610b88565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bb90611196565b60405180910390fd5b6106cd81610bff565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361073f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073690611228565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a5906112ba565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161088c9190610e93565b60405180910390a3505050565b60006108a584846105c6565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461091f5781811015610911576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090890611326565b60405180910390fd5b61091e84848484036106d0565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098b906113b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fa9061144a565b60405180910390fd5b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a81906114dc565b60405180910390fd5b818103600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b7a9190610e93565b60405180910390a350505050565b3373ffffffffffffffffffffffffffffffffffffffff16610ba761047f565b73ffffffffffffffffffffffffffffffffffffffff1614610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf490611548565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610cfd578082015181840152602081019050610ce2565b60008484015250505050565b6000601f19601f8301169050919050565b6000610d2582610cc3565b610d2f8185610cce565b9350610d3f818560208601610cdf565b610d4881610d09565b840191505092915050565b60006020820190508181036000830152610d6d8184610d1a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610da582610d7a565b9050919050565b610db581610d9a565b8114610dc057600080fd5b50565b600081359050610dd281610dac565b92915050565b6000819050919050565b610deb81610dd8565b8114610df657600080fd5b50565b600081359050610e0881610de2565b92915050565b60008060408385031215610e2557610e24610d75565b5b6000610e3385828601610dc3565b9250506020610e4485828601610df9565b9150509250929050565b60008115159050919050565b610e6381610e4e565b82525050565b6000602082019050610e7e6000830184610e5a565b92915050565b610e8d81610dd8565b82525050565b6000602082019050610ea86000830184610e84565b92915050565b600080600060608486031215610ec757610ec6610d75565b5b6000610ed586828701610dc3565b9350506020610ee686828701610dc3565b9250506040610ef786828701610df9565b9150509250925092565b600060ff82169050919050565b610f1781610f01565b82525050565b6000602082019050610f326000830184610f0e565b92915050565b600060208284031215610f4e57610f4d610d75565b5b6000610f5c84828501610dc3565b91505092915050565b610f6e81610d9a565b82525050565b6000602082019050610f896000830184610f65565b92915050565b60008060408385031215610fa657610fa5610d75565b5b6000610fb485828601610dc3565b9250506020610fc585828601610dc3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061101657607f821691505b60208210810361102957611028610fcf565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061106982610dd8565b915061107483610dd8565b925082820190508082111561108c5761108b61102f565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006110ee602583610cce565b91506110f982611092565b604082019050919050565b6000602082019050818103600083015261111d816110e1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611180602683610cce565b915061118b82611124565b604082019050919050565b600060208201905081810360008301526111af81611173565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611212602483610cce565b915061121d826111b6565b604082019050919050565b6000602082019050818103600083015261124181611205565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006112a4602283610cce565b91506112af82611248565b604082019050919050565b600060208201905081810360008301526112d381611297565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611310601d83610cce565b915061131b826112da565b602082019050919050565b6000602082019050818103600083015261133f81611303565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006113a2602583610cce565b91506113ad82611346565b604082019050919050565b600060208201905081810360008301526113d181611395565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611434602383610cce565b915061143f826113d8565b604082019050919050565b6000602082019050818103600083015261146381611427565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006114c6602683610cce565b91506114d18261146a565b604082019050919050565b600060208201905081810360008301526114f5816114b9565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611532602083610cce565b915061153d826114fc565b602082019050919050565b6000602082019050818103600083015261156181611525565b905091905056fea264697066735822122066045261f7afc0b858aca5207f9ac611435a026bdceed134f3f9f049db8dc24264736f6c63430008130033