608060405234801562000010575f80fd5b506040518060400160405280600481526020017f55534454000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f555344540000000000000000000000000000000000000000000000000000000081525081600390816200008e9190620005d1565b508060049081620000a09190620005d1565b505050620000b9336305f5e100620000bf60201b60201c565b620007e1565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000132575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620001299190620006f8565b60405180910390fd5b620001455f83836200014960201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200019d578060025f82825462000190919062000740565b925050819055506200026e565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101562000229578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040162000220939291906200078b565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002b7578060025f828254039250508190555062000301565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003609190620007c6565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620003e957607f821691505b602082108103620003ff57620003fe620003a4565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620004637fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000426565b6200046f868362000426565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620004b9620004b3620004ad8462000487565b62000490565b62000487565b9050919050565b5f819050919050565b620004d48362000499565b620004ec620004e382620004c0565b84845462000432565b825550505050565b5f90565b62000502620004f4565b6200050f818484620004c9565b505050565b5b8181101562000536576200052a5f82620004f8565b60018101905062000515565b5050565b601f82111562000585576200054f8162000405565b6200055a8462000417565b810160208510156200056a578190505b62000582620005798562000417565b83018262000514565b50505b505050565b5f82821c905092915050565b5f620005a75f19846008026200058a565b1980831691505092915050565b5f620005c1838362000596565b9150826002028217905092915050565b620005dc826200036d565b67ffffffffffffffff811115620005f857620005f762000377565b5b620006048254620003d1565b620006118282856200053a565b5f60209050601f83116001811462000647575f841562000632578287015190505b6200063e8582620005b4565b865550620006ad565b601f198416620006578662000405565b5f5b82811015620006805784890151825560018201915060208501945060208101905062000659565b86831015620006a057848901516200069c601f89168262000596565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620006e082620006b5565b9050919050565b620006f281620006d4565b82525050565b5f6020820190506200070d5f830184620006e7565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200074c8262000487565b9150620007598362000487565b925082820190508082111562000774576200077362000713565b5b92915050565b620007858162000487565b82525050565b5f606082019050620007a05f830186620006e7565b620007af60208301856200077a565b620007be60408301846200077a565b949350505050565b5f602082019050620007db5f8301846200077a565b92915050565b610df780620007ef5f395ff3fe608060405234801561000f575f80fd5b5060043610610091575f3560e01c8063313ce56711610064578063313ce5671461013157806370a082311461014f57806395d89b411461017f578063a9059cbb1461019d578063dd62ed3e146101cd57610091565b806306fdde0314610095578063095ea7b3146100b357806318160ddd146100e357806323b872dd14610101575b5f80fd5b61009d6101fd565b6040516100aa9190610a70565b60405180910390f35b6100cd60048036038101906100c89190610b21565b61028d565b6040516100da9190610b79565b60405180910390f35b6100eb6102af565b6040516100f89190610ba1565b60405180910390f35b61011b60048036038101906101169190610bba565b6102b8565b6040516101289190610b79565b60405180910390f35b6101396102e6565b6040516101469190610c25565b60405180910390f35b61016960048036038101906101649190610c3e565b6102ea565b6040516101769190610ba1565b60405180910390f35b61018761032f565b6040516101949190610a70565b60405180910390f35b6101b760048036038101906101b29190610b21565b6103bf565b6040516101c49190610b79565b60405180910390f35b6101e760048036038101906101e29190610c69565b6103e1565b6040516101f49190610ba1565b60405180910390f35b60606003805461020c90610cd4565b80601f016020809104026020016040519081016040528092919081815260200182805461023890610cd4565b80156102835780601f1061025a57610100808354040283529160200191610283565b820191905f5260205f20905b81548152906001019060200180831161026657829003601f168201915b5050505050905090565b5f80610297610463565b90506102a481858561046a565b600191505092915050565b5f600254905090565b5f806102c2610463565b90506102cf85828561047c565b6102da85858561050e565b60019150509392505050565b5f90565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60606004805461033e90610cd4565b80601f016020809104026020016040519081016040528092919081815260200182805461036a90610cd4565b80156103b55780601f1061038c576101008083540402835291602001916103b5565b820191905f5260205f20905b81548152906001019060200180831161039857829003601f168201915b5050505050905090565b5f806103c9610463565b90506103d681858561050e565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b61047783838360016105fe565b505050565b5f61048784846103e1565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461050857818110156104f9578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016104f093929190610d13565b60405180910390fd5b61050784848484035f6105fe565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361057e575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016105759190610d48565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036105ee575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016105e59190610d48565b60405180910390fd5b6105f98383836107cd565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361066e575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016106659190610d48565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106de575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016106d59190610d48565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156107c7578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107be9190610ba1565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361081d578060025f8282546108119190610d8e565b925050819055506108eb565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156108a6578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161089d93929190610d13565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610932578060025f828254039250508190555061097c565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516109d99190610ba1565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610a1d578082015181840152602081019050610a02565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610a42826109e6565b610a4c81856109f0565b9350610a5c818560208601610a00565b610a6581610a28565b840191505092915050565b5f6020820190508181035f830152610a888184610a38565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610abd82610a94565b9050919050565b610acd81610ab3565b8114610ad7575f80fd5b50565b5f81359050610ae881610ac4565b92915050565b5f819050919050565b610b0081610aee565b8114610b0a575f80fd5b50565b5f81359050610b1b81610af7565b92915050565b5f8060408385031215610b3757610b36610a90565b5b5f610b4485828601610ada565b9250506020610b5585828601610b0d565b9150509250929050565b5f8115159050919050565b610b7381610b5f565b82525050565b5f602082019050610b8c5f830184610b6a565b92915050565b610b9b81610aee565b82525050565b5f602082019050610bb45f830184610b92565b92915050565b5f805f60608486031215610bd157610bd0610a90565b5b5f610bde86828701610ada565b9350506020610bef86828701610ada565b9250506040610c0086828701610b0d565b9150509250925092565b5f60ff82169050919050565b610c1f81610c0a565b82525050565b5f602082019050610c385f830184610c16565b92915050565b5f60208284031215610c5357610c52610a90565b5b5f610c6084828501610ada565b91505092915050565b5f8060408385031215610c7f57610c7e610a90565b5b5f610c8c85828601610ada565b9250506020610c9d85828601610ada565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610ceb57607f821691505b602082108103610cfe57610cfd610ca7565b5b50919050565b610d0d81610ab3565b82525050565b5f606082019050610d265f830186610d04565b610d336020830185610b92565b610d406040830184610b92565b949350505050565b5f602082019050610d5b5f830184610d04565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610d9882610aee565b9150610da383610aee565b9250828201905080821115610dbb57610dba610d61565b5b9291505056fea264697066735822122018e8487816d77090ab02eee9ff6cea3592de375673c572b7f845284f71a0667864736f6c63430008170033