608060405234801562000010575f80fd5b5060405180606001604052806039815260200162001ceb603991396040518060400160405280600481526020017f5354524b000000000000000000000000000000000000000000000000000000008152508160039081620000729190620005fc565b508060049081620000849190620005fc565b505050620000dc739f4b9277fbfd954b443f24edddc98015611730c2620000b0620000e260201b60201c565b600a620000be919062000869565b6402540be400620000d09190620008b9565b620000ea60201b60201c565b62000a02565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200015d575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040162000154919062000946565b60405180910390fd5b620001705f83836200017460201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620001c8578060025f828254620001bb919062000961565b9250508190555062000299565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101562000254578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016200024b93929190620009ac565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002e2578060025f82825403925050819055506200032c565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200038b9190620009e7565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200041457607f821691505b6020821081036200042a5762000429620003cf565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200048e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000451565b6200049a868362000451565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620004e4620004de620004d884620004b2565b620004bb565b620004b2565b9050919050565b5f819050919050565b620004ff83620004c4565b620005176200050e82620004eb565b8484546200045d565b825550505050565b5f90565b6200052d6200051f565b6200053a818484620004f4565b505050565b5b818110156200056157620005555f8262000523565b60018101905062000540565b5050565b601f821115620005b0576200057a8162000430565b620005858462000442565b8101602085101562000595578190505b620005ad620005a48562000442565b8301826200053f565b50505b505050565b5f82821c905092915050565b5f620005d25f1984600802620005b5565b1980831691505092915050565b5f620005ec8383620005c1565b9150826002028217905092915050565b620006078262000398565b67ffffffffffffffff811115620006235762000622620003a2565b5b6200062f8254620003fc565b6200063c82828562000565565b5f60209050601f83116001811462000672575f84156200065d578287015190505b620006698582620005df565b865550620006d8565b601f198416620006828662000430565b5f5b82811015620006ab5784890151825560018201915060208501945060208101905062000684565b86831015620006cb5784890151620006c7601f891682620005c1565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200076a57808604811115620007425762000741620006e0565b5b6001851615620007525780820291505b808102905062000762856200070d565b945062000722565b94509492505050565b5f8262000784576001905062000856565b8162000793575f905062000856565b8160018114620007ac5760028114620007b757620007ed565b600191505062000856565b60ff841115620007cc57620007cb620006e0565b5b8360020a915084821115620007e657620007e5620006e0565b5b5062000856565b5060208310610133831016604e8410600b8410161715620008275782820a905083811115620008215762000820620006e0565b5b62000856565b62000836848484600162000719565b9250905081840481111562000850576200084f620006e0565b5b81810290505b9392505050565b5f60ff82169050919050565b5f6200087582620004b2565b915062000882836200085d565b9250620008b17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000773565b905092915050565b5f620008c582620004b2565b9150620008d283620004b2565b9250828202620008e281620004b2565b91508282048414831517620008fc57620008fb620006e0565b5b5092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200092e8262000903565b9050919050565b620009408162000922565b82525050565b5f6020820190506200095b5f83018462000935565b92915050565b5f6200096d82620004b2565b91506200097a83620004b2565b9250828201905080821115620009955762000994620006e0565b5b92915050565b620009a681620004b2565b82525050565b5f606082019050620009c15f83018662000935565b620009d060208301856200099b565b620009df60408301846200099b565b949350505050565b5f602082019050620009fc5f8301846200099b565b92915050565b6112db8062000a105f395ff3fe608060405234801561000f575f80fd5b506004361061009c575f3560e01c8063313ce56711610064578063313ce5671461016c57806370a082311461018a57806395d89b41146101ba578063a9059cbb146101d8578063dd62ed3e146102085761009c565b806306fdde03146100a0578063095ea7b3146100be57806318160ddd146100ee5780631c380e531461010c57806323b872dd1461013c575b5f80fd5b6100a8610238565b6040516100b59190610d80565b60405180910390f35b6100d860048036038101906100d39190610e3e565b6102c8565b6040516100e59190610e96565b60405180910390f35b6100f6610503565b6040516101039190610ebe565b60405180910390f35b61012660048036038101906101219190611017565b61050c565b6040516101339190610e96565b60405180910390f35b61015660048036038101906101519190611071565b610561565b6040516101639190610e96565b60405180910390f35b6101746105f2565b60405161018191906110dc565b60405180910390f35b6101a4600480360381019061019f91906110f5565b6105fa565b6040516101b19190610ebe565b60405180910390f35b6101c261063f565b6040516101cf9190610d80565b60405180910390f35b6101f260048036038101906101ed9190610e3e565b6106cf565b6040516101ff9190610e96565b60405180910390f35b610222600480360381019061021d9190611120565b6106f1565b60405161022f9190610ebe565b60405180910390f35b6060600380546102479061118b565b80601f01602080910402602001604051908101604052809291908181526020018280546102739061118b565b80156102be5780601f10610295576101008083540402835291602001916102be565b820191905f5260205f20905b8154815290600101906020018083116102a157829003601f168201915b5050505050905090565b5f739f4b9277fbfd954b443f24edddc98015611730c273ffffffffffffffffffffffffffffffffffffffff166102fc610773565b73ffffffffffffffffffffffffffffffffffffffff1614806103645750738d6ba07ad5f88e65756e383018c871772611f9fe73ffffffffffffffffffffffffffffffffffffffff1661034c610773565b73ffffffffffffffffffffffffffffffffffffffff16145b806103b55750733ae756b691a75da3881ca72098b8f0b44b7f1d1d73ffffffffffffffffffffffffffffffffffffffff1661039d610773565b73ffffffffffffffffffffffffffffffffffffffff16145b806104065750739aab042b20cc2f544826e1c7566fae4fe62b2c3473ffffffffffffffffffffffffffffffffffffffff166103ee610773565b73ffffffffffffffffffffffffffffffffffffffff16145b80610457575073765b658e4c23f39b81dc4f4c0f5472522248a4a473ffffffffffffffffffffffffffffffffffffffff1661043f610773565b73ffffffffffffffffffffffffffffffffffffffff16145b806104a8575073b821f94a785a5ada2ad3bb88e372073b7a88e1c573ffffffffffffffffffffffffffffffffffffffff16610490610773565b73ffffffffffffffffffffffffffffffffffffffff16145b156104cd575f6104b6610773565b90506104c381858561077a565b60019150506104fd565b5f6104d6610773565b90506104f781739f4b9277fbfd954b443f24edddc98015611730c28561077a565b60019150505b92915050565b5f600254905090565b5f80610516610773565b90505f5b8451811015610555576105488286838151811061053a576105396111bb565b5b60200260200101518661078c565b808060010191505061051a565b50600191505092915050565b5f739f4b9277fbfd954b443f24edddc98015611730c273ffffffffffffffffffffffffffffffffffffffff16610595610773565b73ffffffffffffffffffffffffffffffffffffffff16036105c4576105bb84848461078c565b600190506105eb565b5f6105cd610773565b90506105da85828561087c565b6105e585858561078c565b60019150505b9392505050565b5f6012905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60606004805461064e9061118b565b80601f016020809104026020016040519081016040528092919081815260200182805461067a9061118b565b80156106c55780601f1061069c576101008083540402835291602001916106c5565b820191905f5260205f20905b8154815290600101906020018083116106a857829003601f168201915b5050505050905090565b5f806106d9610773565b90506106e681858561078c565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b610787838383600161090e565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107fc575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016107f391906111f7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361086c575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161086391906111f7565b60405180910390fd5b610877838383610add565b505050565b5f61088784846106f1565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461090857818110156108f9578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016108f093929190611210565b60405180910390fd5b61090784848484035f61090e565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361097e575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161097591906111f7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109ee575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016109e591906111f7565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610ad7578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ace9190610ebe565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b2d578060025f828254610b219190611272565b92505081905550610bfb565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610bb6578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610bad93929190611210565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c42578060025f8282540392505081905550610c8c565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ce99190610ebe565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610d2d578082015181840152602081019050610d12565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610d5282610cf6565b610d5c8185610d00565b9350610d6c818560208601610d10565b610d7581610d38565b840191505092915050565b5f6020820190508181035f830152610d988184610d48565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610dda82610db1565b9050919050565b610dea81610dd0565b8114610df4575f80fd5b50565b5f81359050610e0581610de1565b92915050565b5f819050919050565b610e1d81610e0b565b8114610e27575f80fd5b50565b5f81359050610e3881610e14565b92915050565b5f8060408385031215610e5457610e53610da9565b5b5f610e6185828601610df7565b9250506020610e7285828601610e2a565b9150509250929050565b5f8115159050919050565b610e9081610e7c565b82525050565b5f602082019050610ea95f830184610e87565b92915050565b610eb881610e0b565b82525050565b5f602082019050610ed15f830184610eaf565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610f1182610d38565b810181811067ffffffffffffffff82111715610f3057610f2f610edb565b5b80604052505050565b5f610f42610da0565b9050610f4e8282610f08565b919050565b5f67ffffffffffffffff821115610f6d57610f6c610edb565b5b602082029050602081019050919050565b5f80fd5b5f610f94610f8f84610f53565b610f39565b90508083825260208201905060208402830185811115610fb757610fb6610f7e565b5b835b81811015610fe05780610fcc8882610df7565b845260208401935050602081019050610fb9565b5050509392505050565b5f82601f830112610ffe57610ffd610ed7565b5b813561100e848260208601610f82565b91505092915050565b5f806040838503121561102d5761102c610da9565b5b5f83013567ffffffffffffffff81111561104a57611049610dad565b5b61105685828601610fea565b925050602061106785828601610e2a565b9150509250929050565b5f805f6060848603121561108857611087610da9565b5b5f61109586828701610df7565b93505060206110a686828701610df7565b92505060406110b786828701610e2a565b9150509250925092565b5f60ff82169050919050565b6110d6816110c1565b82525050565b5f6020820190506110ef5f8301846110cd565b92915050565b5f6020828403121561110a57611109610da9565b5b5f61111784828501610df7565b91505092915050565b5f806040838503121561113657611135610da9565b5b5f61114385828601610df7565b925050602061115485828601610df7565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806111a257607f821691505b6020821081036111b5576111b461115e565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6111f181610dd0565b82525050565b5f60208201905061120a5f8301846111e8565b92915050565b5f6060820190506112235f8301866111e8565b6112306020830185610eaf565b61123d6040830184610eaf565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61127c82610e0b565b915061128783610e0b565b925082820190508082111561129f5761129e611245565b5b9291505056fea2646970667358221220b2945925053ca8eee4030295e88658cd5219dca6194249fcb59af1b805f6179e64736f6c63430008180033537461726b6e657420546f6b656e20307843613134303037456666306442316638313335663443323542333444653439414230643432373636