//
0x608060405234801562000010575f80fd5b506040518060400160405280600681526020017f506f696e747300000000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f505400000000000000000000000000000000000000000000000000000000000081525081600390816200008e9190620003f7565b508060049081620000a09190620003f7565b505050620000c3620000b7620000c960201b60201c565b620000d060201b60201c565b620004db565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200020f57607f821691505b602082108103620002255762000224620001ca565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620002897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200024c565b6200029586836200024c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620002df620002d9620002d384620002ad565b620002b6565b620002ad565b9050919050565b5f819050919050565b620002fa83620002bf565b620003126200030982620002e6565b84845462000258565b825550505050565b5f90565b620003286200031a565b62000335818484620002ef565b505050565b5b818110156200035c57620003505f826200031e565b6001810190506200033b565b5050565b601f821115620003ab5762000375816200022b565b62000380846200023d565b8101602085101562000390578190505b620003a86200039f856200023d565b8301826200033a565b50505b505050565b5f82821c905092915050565b5f620003cd5f1984600802620003b0565b1980831691505092915050565b5f620003e78383620003bc565b9150826002028217905092915050565b620004028262000193565b67ffffffffffffffff8111156200041e576200041d6200019d565b5b6200042a8254620001f7565b6200043782828562000360565b5f60209050601f8311600181146200046d575f841562000458578287015190505b620004648582620003da565b865550620004d3565b601f1984166200047d866200022b565b5f5b82811015620004a6578489015182556001820191506020850194506020810190506200047f565b86831015620004c65784890151620004c2601f891682620003bc565b8355505b6001600288020188555050505b505050505050565b611b7b80620004e95f395ff3fe608060405234801561000f575f80fd5b5060043610610114575f3560e01c8063715018a6116100a057806395d89b411161006f57806395d89b4114610306578063a457c2d714610324578063a9059cbb14610354578063dd62ed3e14610384578063f2fde38b146103b457610114565b8063715018a61461027e5780637949b5001461028857806379cc6790146102b85780638da5cb5b146102e857610114565b8063313ce567116100e7578063313ce567146101b457806339509351146101d257806340c10f191461020257806342966c681461021e57806370a082311461024e57610114565b806306fdde0314610118578063095ea7b31461013657806318160ddd1461016657806323b872dd14610184575b5f80fd5b6101206103d0565b60405161012d91906111c8565b60405180910390f35b610150600480360381019061014b9190611279565b610460565b60405161015d91906112d1565b60405180910390f35b61016e610482565b60405161017b91906112f9565b60405180910390f35b61019e60048036038101906101999190611312565b61048b565b6040516101ab91906112d1565b60405180910390f35b6101bc6104b9565b6040516101c9919061137d565b60405180910390f35b6101ec60048036038101906101e79190611279565b6104c1565b6040516101f991906112d1565b60405180910390f35b61021c60048036038101906102179190611279565b6104f7565b005b61023860048036038101906102339190611396565b61050d565b60405161024591906112d1565b60405180910390f35b610268600480360381019061026391906113c1565b61052d565b60405161027591906112f9565b60405180910390f35b610286610572565b005b6102a2600480360381019061029d9190611279565b610585565b6040516102af91906112d1565b60405180910390f35b6102d260048036038101906102cd9190611279565b6105a2565b6040516102df91906112d1565b60405180910390f35b6102f06105ce565b6040516102fd91906113fb565b60405180910390f35b61030e6105f6565b60405161031b91906111c8565b60405180910390f35b61033e60048036038101906103399190611279565b610686565b60405161034b91906112d1565b60405180910390f35b61036e60048036038101906103699190611279565b6106fb565b60405161037b91906112d1565b60405180910390f35b61039e60048036038101906103999190611414565b61071d565b6040516103ab91906112f9565b60405180910390f35b6103ce60048036038101906103c991906113c1565b61079f565b005b6060600380546103df9061147f565b80601f016020809104026020016040519081016040528092919081815260200182805461040b9061147f565b80156104565780601f1061042d57610100808354040283529160200191610456565b820191905f5260205f20905b81548152906001019060200180831161043957829003601f168201915b5050505050905090565b5f8061046a610821565b9050610477818585610828565b600191505092915050565b5f600254905090565b5f80610495610821565b90506104a28582856109eb565b6104ad858585610a76565b60019150509392505050565b5f6012905090565b5f806104cb610821565b90506104ec8185856104dd858961071d565b6104e791906114dc565b610828565b600191505092915050565b6104ff610ce2565b6105098282610d60565b5050565b5f80610517610821565b90506105238184610eae565b6001915050919050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61057a610ce2565b6105835f611071565b565b5f61058e610ce2565b6105988383610eae565b6001905092915050565b5f806105ac610821565b90506105b98482856109eb565b6105c38484610eae565b600191505092915050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546106059061147f565b80601f01602080910402602001604051908101604052809291908181526020018280546106319061147f565b801561067c5780601f106106535761010080835404028352916020019161067c565b820191905f5260205f20905b81548152906001019060200180831161065f57829003601f168201915b5050505050905090565b5f80610690610821565b90505f61069d828661071d565b9050838110156106e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d99061157f565b60405180910390fd5b6106ef8286868403610828565b60019250505092915050565b5f80610705610821565b9050610712818585610a76565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6107a7610ce2565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080c9061160d565b60405180910390fd5b61081e81611071565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088d9061169b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb90611729565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109de91906112f9565b60405180910390a3505050565b5f6109f6848461071d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a705781811015610a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5990611791565b60405180910390fd5b610a6f8484848403610828565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adb9061181f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b49906118ad565b60405180910390fd5b610b5d838383611134565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610be0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd79061193b565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610cc991906112f9565b60405180910390a3610cdc848484611139565b50505050565b610cea610821565b73ffffffffffffffffffffffffffffffffffffffff16610d086105ce565b73ffffffffffffffffffffffffffffffffffffffff1614610d5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d55906119a3565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc590611a0b565b60405180910390fd5b610dd95f8383611134565b8060025f828254610dea91906114dc565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e9791906112f9565b60405180910390a3610eaa5f8383611139565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1390611a99565b60405180910390fd5b610f27825f83611134565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa190611b27565b60405180910390fd5b8181035f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161105991906112f9565b60405180910390a361106c835f84611139565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561117557808201518184015260208101905061115a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61119a8261113e565b6111a48185611148565b93506111b4818560208601611158565b6111bd81611180565b840191505092915050565b5f6020820190508181035f8301526111e08184611190565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611215826111ec565b9050919050565b6112258161120b565b811461122f575f80fd5b50565b5f813590506112408161121c565b92915050565b5f819050919050565b61125881611246565b8114611262575f80fd5b50565b5f813590506112738161124f565b92915050565b5f806040838503121561128f5761128e6111e8565b5b5f61129c85828601611232565b92505060206112ad85828601611265565b9150509250929050565b5f8115159050919050565b6112cb816112b7565b82525050565b5f6020820190506112e45f8301846112c2565b92915050565b6112f381611246565b82525050565b5f60208201905061130c5f8301846112ea565b92915050565b5f805f60608486031215611329576113286111e8565b5b5f61133686828701611232565b935050602061134786828701611232565b925050604061135886828701611265565b9150509250925092565b5f60ff82169050919050565b61137781611362565b82525050565b5f6020820190506113905f83018461136e565b92915050565b5f602082840312156113ab576113aa6111e8565b5b5f6113b884828501611265565b91505092915050565b5f602082840312156113d6576113d56111e8565b5b5f6113e384828501611232565b91505092915050565b6113f58161120b565b82525050565b5f60208201905061140e5f8301846113ec565b92915050565b5f806040838503121561142a576114296111e8565b5b5f61143785828601611232565b925050602061144885828601611232565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061149657607f821691505b6020821081036114a9576114a8611452565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6114e682611246565b91506114f183611246565b9250828201905080821115611509576115086114af565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f611569602583611148565b91506115748261150f565b604082019050919050565b5f6020820190508181035f8301526115968161155d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6115f7602683611148565b91506116028261159d565b604082019050919050565b5f6020820190508181035f830152611624816115eb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611685602483611148565b91506116908261162b565b604082019050919050565b5f6020820190508181035f8301526116b281611679565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611713602283611148565b915061171e826116b9565b604082019050919050565b5f6020820190508181035f83015261174081611707565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f61177b601d83611148565b915061178682611747565b602082019050919050565b5f6020820190508181035f8301526117a88161176f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611809602583611148565b9150611814826117af565b604082019050919050565b5f6020820190508181035f830152611836816117fd565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f611897602383611148565b91506118a28261183d565b604082019050919050565b5f6020820190508181035f8301526118c48161188b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f611925602683611148565b9150611930826118cb565b604082019050919050565b5f6020820190508181035f83015261195281611919565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61198d602083611148565b915061199882611959565b602082019050919050565b5f6020820190508181035f8301526119ba81611981565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f6119f5601f83611148565b9150611a00826119c1565b602082019050919050565b5f6020820190508181035f830152611a22816119e9565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f611a83602183611148565b9150611a8e82611a29565b604082019050919050565b5f6020820190508181035f830152611ab081611a77565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f611b11602283611148565b9150611b1c82611ab7565b604082019050919050565b5f6020820190508181035f830152611b3e81611b05565b905091905056fea264697066735822122062681bde713f84427367034ad749d14cd6843634c5303bee4b65260e61d9cfc364736f6c63430008140033