60806040523480156200001157600080fd5b506b033b2e3c9fd0803ce80000006000620000316200013f60201b60201c565b905080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060008111620000de57600080fd5b80600481905550620000f733826200014760201b60201c565b33600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000399565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200018257600080fd5b6200019e81600254620002aa60201b620009fe1790919060201c565b600281905550620001fc816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620002aa60201b620009fe1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200029e9190620002e6565b60405180910390a35050565b6000808284620002bb919062000303565b905083811015620002cb57600080fd5b8091505092915050565b620002e08162000360565b82525050565b6000602082019050620002fd6000830184620002d5565b92915050565b6000620003108262000360565b91506200031d8362000360565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200035557620003546200036a565b5b828201905092915050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b61187680620003a96000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063715018a611610097578063a9059cbb11610066578063a9059cbb1461028a578063ab5e28c5146102ba578063dd62ed3e146102c4578063f2fde38b146102f4576100f5565b8063715018a6146102145780638da5cb5b1461021e57806395d89b411461023c578063a457c2d71461025a576100f5565b806323b872dd116100d357806323b872dd14610166578063313ce5671461019657806339509351146101b457806370a08231146101e4576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b610102610310565b60405161010f9190611551565b60405180910390f35b610132600480360381019061012d919061123f565b610349565b60405161013f9190611536565b60405180910390f35b610150610360565b60405161015d91906115ee565b60405180910390f35b610180600480360381019061017b91906111f0565b61036a565b60405161018d9190611536565b60405180910390f35b61019e61041b565b6040516101ab9190611609565b60405180910390f35b6101ce60048036038101906101c9919061123f565b610420565b6040516101db9190611536565b60405180910390f35b6101fe60048036038101906101f9919061118b565b6104c5565b60405161020b91906115ee565b60405180910390f35b61021c61050d565b005b610226610665565b60405161023391906114f2565b60405180910390f35b61024461068f565b6040516102519190611551565b60405180910390f35b610274600480360381019061026f919061123f565b6106c8565b6040516102819190611536565b60405180910390f35b6102a4600480360381019061029f919061123f565b61076d565b6040516102b19190611536565b60405180910390f35b6102c2610796565b005b6102de60048036038101906102d991906111b4565b610847565b6040516102eb91906115ee565b60405180910390f35b61030e6004803603810190610309919061118b565b6108ce565b005b6040518060400160405280600781526020017f5969656c6446550000000000000000000000000000000000000000000000000081525081565b6000610356338484610a26565b6001905092915050565b6000600254905090565b6000610377848484610b85565b610410843361040b85600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d4f90919063ffffffff16565b610a26565b600190509392505050565b601281565b60006104bb33846104b685600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109fe90919063ffffffff16565b610a26565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610515610d78565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059b90611593565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6040518060400160405280600281526020017f465500000000000000000000000000000000000000000000000000000000000081525081565b6000610763338461075e85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d4f90919063ffffffff16565b610a26565b6001905092915050565b600081610779336104c5565b101561078457600080fd5b61078e8383610d80565b905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081d906115b3565b60405180910390fd5b61084430610832610360565b6103e861083f9190611696565b610d97565b50565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561093e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093590611573565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808284610a0d9190611640565b905083811015610a1c57600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a6057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a9a57600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610b7891906115ee565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610bbf57600080fd5b610c10816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d4f90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ca3816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109fe90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d4291906115ee565b60405180910390a3505050565b600082821115610d5e57600080fd5b60008284610d6c91906116f0565b90508091505092915050565b600033905090565b6000610d8d338484610b85565b6001905092915050565b6000610da38383610db5565b610dab610f07565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610def57600080fd5b610e04816002546109fe90919063ffffffff16565b600281905550610e5b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109fe90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610efb91906115ee565b60405180910390a35050565b3073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37368b3465833fb72a70ecdf485e0e4c7bd8665fc45610f40610360565b620f4240610f4e9190611696565b6040518363ffffffff1660e01b8152600401610f6b92919061150d565b602060405180830381600087803b158015610f8557600080fd5b505af1158015610f99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbd919061127b565b5060006040518060e001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff168152602001610bb862ffffff168152602001600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200161106b306104c5565b815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090507368b3465833fb72a70ecdf485e0e4c7bd8665fc4573ffffffffffffffffffffffffffffffffffffffff166304e45aaf826040518263ffffffff1660e01b81526004016110e191906115d3565b602060405180830381600087803b1580156110fb57600080fd5b505af115801561110f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113391906112a4565b5050565b600081359050611146816117fb565b92915050565b60008151905061115b81611812565b92915050565b60008135905061117081611829565b92915050565b60008151905061118581611829565b92915050565b60006020828403121561119d57600080fd5b60006111ab84828501611137565b91505092915050565b600080604083850312156111c757600080fd5b60006111d585828601611137565b92505060206111e685828601611137565b9150509250929050565b60008060006060848603121561120557600080fd5b600061121386828701611137565b935050602061122486828701611137565b925050604061123586828701611161565b9150509250925092565b6000806040838503121561125257600080fd5b600061126085828601611137565b925050602061127185828601611161565b9150509250929050565b60006020828403121561128d57600080fd5b600061129b8482850161114c565b91505092915050565b6000602082840312156112b657600080fd5b60006112c484828501611176565b91505092915050565b6112d681611724565b82525050565b6112e581611724565b82525050565b6112f481611736565b82525050565b600061130582611624565b61130f818561162f565b935061131f818560208601611788565b611328816117ea565b840191505092915050565b600061134060268361162f565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006113a660208361162f565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006113e660188361162f565b91507f6e6f742074686520636f727265637420616464726573732100000000000000006000830152602082019050919050565b60e08201600082015161142f60008501826112cd565b50602082015161144260208501826112cd565b50604082015161145560408501826114b6565b50606082015161146860608501826112cd565b50608082015161147b60808501826114c5565b5060a082015161148e60a08501826114c5565b5060c08201516114a160c08501826114a7565b50505050565b6114b081611742565b82525050565b6114bf81611762565b82525050565b6114ce81611771565b82525050565b6114dd81611771565b82525050565b6114ec8161177b565b82525050565b600060208201905061150760008301846112dc565b92915050565b600060408201905061152260008301856112dc565b61152f60208301846114d4565b9392505050565b600060208201905061154b60008301846112eb565b92915050565b6000602082019050818103600083015261156b81846112fa565b905092915050565b6000602082019050818103600083015261158c81611333565b9050919050565b600060208201905081810360008301526115ac81611399565b9050919050565b600060208201905081810360008301526115cc816113d9565b9050919050565b600060e0820190506115e86000830184611419565b92915050565b600060208201905061160360008301846114d4565b92915050565b600060208201905061161e60008301846114e3565b92915050565b600081519050919050565b600082825260208201905092915050565b600061164b82611771565b915061165683611771565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561168b5761168a6117bb565b5b828201905092915050565b60006116a182611771565b91506116ac83611771565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156116e5576116e46117bb565b5b828202905092915050565b60006116fb82611771565b915061170683611771565b925082821015611719576117186117bb565b5b828203905092915050565b600061172f82611742565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156117a657808201518184015260208101905061178b565b838111156117b5576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000601f19601f8301169050919050565b61180481611724565b811461180f57600080fd5b50565b61181b81611736565b811461182657600080fd5b50565b61183281611771565b811461183d57600080fd5b5056fea26469706673582212201b5c344e6d2b3964323f979e3a0caf239518af1a72328c0d752d6add64a2572a64736f6c63430008000033