608060405234801561000f575f80fd5b503360405180602001604052805f81525061002f816100b560201b60201c565b505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a0575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161009791906101ca565b60405180910390fd5b6100af816100c860201b60201c565b506104ec565b80600290816100c4919061041d565b5050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101b48261018b565b9050919050565b6101c4816101aa565b82525050565b5f6020820190506101dd5f8301846101bb565b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061025e57607f821691505b6020821081036102715761027061021a565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026102d37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610298565b6102dd8683610298565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61032161031c610317846102f5565b6102fe565b6102f5565b9050919050565b5f819050919050565b61033a83610307565b61034e61034682610328565b8484546102a4565b825550505050565b5f90565b610362610356565b61036d818484610331565b505050565b5b81811015610390576103855f8261035a565b600181019050610373565b5050565b601f8211156103d5576103a681610277565b6103af84610289565b810160208510156103be578190505b6103d26103ca85610289565b830182610372565b50505b505050565b5f82821c905092915050565b5f6103f55f19846008026103da565b1980831691505092915050565b5f61040d83836103e6565b9150826002028217905092915050565b610426826101e3565b67ffffffffffffffff81111561043f5761043e6101ed565b5b6104498254610247565b610454828285610394565b5f60209050601f831160018114610485575f8415610473578287015190505b61047d8582610402565b8655506104e4565b601f19841661049386610277565b5f5b828110156104ba57848901518255600182019150602085019450602081019050610495565b868310156104d757848901516104d3601f8916826103e6565b8355505b6001600288020188555050505b505050505050565b613b1c806104f95f395ff3fe608060405234801561000f575f80fd5b5060043610610113575f3560e01c8063760b4a25116100a0578063a22cb4651161006f578063a22cb46514610308578063c27a500d14610324578063e985e9c514610342578063f242432a14610372578063f2fde38b1461038e57610113565b8063760b4a25146102805780638da5cb5b1461029c57806390a7e051146102ba5780639a150bb9146102ec57610113565b806324d62b83116100e757806324d62b83146101dc5780632eb2c2d6146101f85780634e1273f4146102145780635bf608b814610244578063715018a61461027657610113565b8062fdd58e1461011757806301ffc9a7146101475780630b791430146101775780630e89341c146101ac575b5f80fd5b610131600480360381019061012c9190612527565b6103aa565b60405161013e9190612574565b60405180910390f35b610161600480360381019061015c91906125e2565b6103ff565b60405161016e9190612627565b60405180910390f35b610191600480360381019061018c9190612640565b6104e0565b6040516101a3969594939291906126ea565b60405180910390f35b6101c660048036038101906101c19190612640565b6106d8565b6040516101d3919061275e565b60405180910390f35b6101f660048036038101906101f191906128aa565b61076a565b005b610212600480360381019061020d9190612a78565b61094e565b005b61022e60048036038101906102299190612c03565b6109f5565b60405161023b9190612d30565b60405180910390f35b61025e60048036038101906102599190612640565b610afc565b60405161026d93929190612d50565b60405180910390f35b61027e610ca8565b005b61029a60048036038101906102959190612d8c565b610cbb565b005b6102a4610e2c565b6040516102b19190612e69565b60405180910390f35b6102d460048036038101906102cf9190612e82565b610e54565b6040516102e393929190612d50565b60405180910390f35b61030660048036038101906103019190612ec0565b610f0b565b005b610322600480360381019061031d9190612f4e565b611246565b005b61032c61125c565b6040516103399190613132565b60405180910390f35b61035c60048036038101906103579190613152565b6114d0565b6040516103699190612627565b60405180910390f35b61038c60048036038101906103879190613190565b61155e565b005b6103a860048036038101906103a39190613223565b611605565b005b5f805f8381526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f7fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104c957507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104d957506104d882611689565b5b9050919050565b600481815481106104ef575f80fd5b905f5260205f2090600602015f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020180546105399061327b565b80601f01602080910402602001604051908101604052809291908181526020018280546105659061327b565b80156105b05780601f10610587576101008083540402835291602001916105b0565b820191905f5260205f20905b81548152906001019060200180831161059357829003601f168201915b5050505050908060030180546105c59061327b565b80601f01602080910402602001604051908101604052809291908181526020018280546105f19061327b565b801561063c5780601f106106135761010080835404028352916020019161063c565b820191905f5260205f20905b81548152906001019060200180831161061f57829003601f168201915b5050505050908060040180546106519061327b565b80601f016020809104026020016040519081016040528092919081815260200182805461067d9061327b565b80156106c85780601f1061069f576101008083540402835291602001916106c8565b820191905f5260205f20905b8154815290600101906020018083116106ab57829003601f168201915b5050505050908060050154905086565b6060600280546106e79061327b565b80601f01602080910402602001604051908101604052809291908181526020018280546107139061327b565b801561075e5780601f106107355761010080835404028352916020019161075e565b820191905f5260205f20905b81548152906001019060200180831161074157829003601f168201915b50505050509050919050565b5f600480549050116107b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a8906132f5565b60405180910390fd5b6107ba836116f2565b6107f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f09061335d565b60405180910390fd5b5f811161083b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610832906133eb565b60405180910390fd5b5f600460018561084b9190613436565b8154811061085c5761085b613469565b5b905f5260205f20906006020160050154826108779190613496565b905060405180606001604052808481526020018381526020018281525060055f8681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f0190816108f39190613674565b5060208201518160010155604082015181600201559050507fa0b63cf72dd09957a62094fdfbbf60f63bca7a088cb350b1404484358ce1f385848484846040516109409493929190613743565b60405180910390a150505050565b5f610957611750565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561099c575061099a86826114d0565b155b156109e05780866040517fe237d9220000000000000000000000000000000000000000000000000000000081526004016109d792919061378d565b60405180910390fd5b6109ed8686868686611757565b505050505050565b60608151835114610a4157815183516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401610a389291906137b4565b60405180910390fd5b5f835167ffffffffffffffff811115610a5d57610a5c612786565b5b604051908082528060200260200182016040528015610a8b5781602001602082028036833780820191505090505b5090505f5b8451811015610af157610ac7610aaf828761184b90919063ffffffff16565b610ac2838761185e90919063ffffffff16565b6103aa565b828281518110610ada57610ad9613469565b5b602002602001018181525050806001019050610a90565b508091505092915050565b60605f80610b09846116f2565b610b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3f9061335d565b60405180910390fd5b5f60055f8681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060600160405290815f82018054610baf9061327b565b80601f0160208091040260200160405190810160405280929190818152602001828054610bdb9061327b565b8015610c265780601f10610bfd57610100808354040283529160200191610c26565b820191905f5260205f20905b815481529060010190602001808311610c0957829003601f168201915b50505050508152602001600182015481526020016002820154815250509050847ff9dcd8a9e42ad1121a72223cb81cfeb842c9ce8a4566a032b7264ec86d78198d825f015183602001518460400151604051610c8493929190612d50565b60405180910390a2805f015181602001518260400151935093509350509193909250565b610cb0611871565b610cb95f6118f8565b565b610cc3611871565b610cdd86868360405180602001604052805f8152506119bb565b60046040518060c001604052808873ffffffffffffffffffffffffffffffffffffffff16815260200187815260200186815260200185815260200184815260200183815250908060018154018082558091505060019003905f5260205f2090600602015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002019081610dab9190613674565b506060820151816003019081610dc19190613674565b506080820151816004019081610dd79190613674565b5060a082015181600501555050847f6b7b59e21b50aeeb010ac169a52842c952c3c3c8d08afa5b933407020d8debfa8786868686604051610e1c9594939291906137db565b60405180910390a2505050505050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6005602052815f5260405f20602052805f5260405f205f9150915050805f018054610e7e9061327b565b80601f0160208091040260200160405190810160405280929190818152602001828054610eaa9061327b565b8015610ef55780601f10610ecc57610100808354040283529160200191610ef5565b820191905f5260205f20905b815481529060010190602001808311610ed857829003601f168201915b5050505050908060010154908060020154905083565b610f14826116f2565b610f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4a9061335d565b60405180910390fd5b5f8111610f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8c906133eb565b60405180910390fd5b8060055f8481526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101541015611027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101e9061388b565b60405180910390fd5b6110428484848460405180602001604052805f81525061155e565b8060055f8481526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f8282546110a09190613436565b925050819055505f60055f8481526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101540361119e57604051806060016040528060405180602001604052805f81525081526020015f81526020015f81525060055f8481526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f0190816111859190613674565b5060208201518160010155604082015181600201559050505b8060055f8481526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f8282546111fc91906138a9565b925050819055507ff7e48eef07ea2908eb51d82309e92718d1dcc055b2be4e18f1a0dbd056348e498484848460405161123894939291906138dc565b60405180910390a150505050565b611258611251611750565b8383611a50565b5050565b60606004805480602002602001604051908101604052809291908181526020015f905b828210156114c7578382905f5260205f2090600602016040518060c00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201805461130e9061327b565b80601f016020809104026020016040519081016040528092919081815260200182805461133a9061327b565b80156113855780601f1061135c57610100808354040283529160200191611385565b820191905f5260205f20905b81548152906001019060200180831161136857829003601f168201915b5050505050815260200160038201805461139e9061327b565b80601f01602080910402602001604051908101604052809291908181526020018280546113ca9061327b565b80156114155780601f106113ec57610100808354040283529160200191611415565b820191905f5260205f20905b8154815290600101906020018083116113f857829003601f168201915b5050505050815260200160048201805461142e9061327b565b80601f016020809104026020016040519081016040528092919081815260200182805461145a9061327b565b80156114a55780601f1061147c576101008083540402835291602001916114a5565b820191905f5260205f20905b81548152906001019060200180831161148857829003601f168201915b505050505081526020016005820154815250508152602001906001019061127f565b50505050905090565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f611567611750565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156115ac57506115aa86826114d0565b155b156115f05780866040517fe237d9220000000000000000000000000000000000000000000000000000000081526004016115e792919061378d565b60405180910390fd5b6115fd8686868686611bb9565b505050505050565b61160d611871565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361167d575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016116749190612e69565b60405180910390fd5b611686816118f8565b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f805f90505b60048054905081101561174657826004828154811061171a57611719613469565b5b905f5260205f209060060201600101540361173957600191505061174b565b80806001019150506116f8565b505f90505b919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036117c7575f6040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016117be9190612e69565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611837575f6040517f01a8351400000000000000000000000000000000000000000000000000000000815260040161182e9190612e69565b60405180910390fd5b6118448585858585611cbf565b5050505050565b5f60208202602084010151905092915050565b5f60208202602084010151905092915050565b611879611750565b73ffffffffffffffffffffffffffffffffffffffff16611897610e2c565b73ffffffffffffffffffffffffffffffffffffffff16146118f6576118ba611750565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016118ed9190612e69565b60405180910390fd5b565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611a2b575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611a229190612e69565b60405180910390fd5b5f80611a378585611d6b565b91509150611a485f87848487611cbf565b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ac0575f6040517fced3e100000000000000000000000000000000000000000000000000000000008152600401611ab79190612e69565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611bac9190612627565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c29575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611c209190612e69565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611c99575f6040517f01a83514000000000000000000000000000000000000000000000000000000008152600401611c909190612e69565b60405180910390fd5b5f80611ca58585611d6b565b91509150611cb68787848487611cbf565b50505050505050565b611ccb85858585611d9b565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611d64575f611d07611750565b90506001845103611d53575f611d265f8661185e90919063ffffffff16565b90505f611d3c5f8661185e90919063ffffffff16565b9050611d4c83898985858961212b565b5050611d62565b611d618187878787876122da565b5b505b5050505050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b8051825114611de557815181516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401611ddc9291906137b4565b60405180910390fd5b5f611dee611750565b90505f5b8351811015611fea575f611e0f828661185e90919063ffffffff16565b90505f611e25838661185e90919063ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611f48575f805f8481526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611ef457888183856040517f03dee4c5000000000000000000000000000000000000000000000000000000008152600401611eeb949392919061391f565b60405180910390fd5b8181035f808581526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614611fdd57805f808481526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611fd591906138a9565b925050819055505b5050806001019050611df2565b5060018351036120a5575f6120085f8561185e90919063ffffffff16565b90505f61201e5f8561185e90919063ffffffff16565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6285856040516120969291906137b4565b60405180910390a45050612124565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161211b929190613962565b60405180910390a45b5050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b11156122d2578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161218b9594939291906139e9565b6020604051808303815f875af19250505080156121c657506040513d601f19601f820116820180604052508101906121c39190613a55565b60015b612247573d805f81146121f4576040519150601f19603f3d011682016040523d82523d5f602084013e6121f9565b606091505b505f81510361223f57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016122369190612e69565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146122d057846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016122c79190612e69565b60405180910390fd5b505b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1115612481578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161233a959493929190613a80565b6020604051808303815f875af192505050801561237557506040513d601f19601f820116820180604052508101906123729190613a55565b60015b6123f6573d805f81146123a3576040519150601f19603f3d011682016040523d82523d5f602084013e6123a8565b606091505b505f8151036123ee57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016123e59190612e69565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461247f57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016124769190612e69565b60405180910390fd5b505b505050505050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6124c38261249a565b9050919050565b6124d3816124b9565b81146124dd575f80fd5b50565b5f813590506124ee816124ca565b92915050565b5f819050919050565b612506816124f4565b8114612510575f80fd5b50565b5f81359050612521816124fd565b92915050565b5f806040838503121561253d5761253c612492565b5b5f61254a858286016124e0565b925050602061255b85828601612513565b9150509250929050565b61256e816124f4565b82525050565b5f6020820190506125875f830184612565565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6125c18161258d565b81146125cb575f80fd5b50565b5f813590506125dc816125b8565b92915050565b5f602082840312156125f7576125f6612492565b5b5f612604848285016125ce565b91505092915050565b5f8115159050919050565b6126218161260d565b82525050565b5f60208201905061263a5f830184612618565b92915050565b5f6020828403121561265557612654612492565b5b5f61266284828501612513565b91505092915050565b612674816124b9565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6126bc8261267a565b6126c68185612684565b93506126d6818560208601612694565b6126df816126a2565b840191505092915050565b5f60c0820190506126fd5f83018961266b565b61270a6020830188612565565b818103604083015261271c81876126b2565b9050818103606083015261273081866126b2565b9050818103608083015261274481856126b2565b905061275360a0830184612565565b979650505050505050565b5f6020820190508181035f83015261277681846126b2565b905092915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6127bc826126a2565b810181811067ffffffffffffffff821117156127db576127da612786565b5b80604052505050565b5f6127ed612489565b90506127f982826127b3565b919050565b5f67ffffffffffffffff82111561281857612817612786565b5b612821826126a2565b9050602081019050919050565b828183375f83830152505050565b5f61284e612849846127fe565b6127e4565b90508281526020810184848401111561286a57612869612782565b5b61287584828561282e565b509392505050565b5f82601f8301126128915761289061277e565b5b81356128a184826020860161283c565b91505092915050565b5f805f606084860312156128c1576128c0612492565b5b5f6128ce86828701612513565b935050602084013567ffffffffffffffff8111156128ef576128ee612496565b5b6128fb8682870161287d565b925050604061290c86828701612513565b9150509250925092565b5f67ffffffffffffffff8211156129305761292f612786565b5b602082029050602081019050919050565b5f80fd5b5f61295761295284612916565b6127e4565b9050808382526020820190506020840283018581111561297a57612979612941565b5b835b818110156129a3578061298f8882612513565b84526020840193505060208101905061297c565b5050509392505050565b5f82601f8301126129c1576129c061277e565b5b81356129d1848260208601612945565b91505092915050565b5f67ffffffffffffffff8211156129f4576129f3612786565b5b6129fd826126a2565b9050602081019050919050565b5f612a1c612a17846129da565b6127e4565b905082815260208101848484011115612a3857612a37612782565b5b612a4384828561282e565b509392505050565b5f82601f830112612a5f57612a5e61277e565b5b8135612a6f848260208601612a0a565b91505092915050565b5f805f805f60a08688031215612a9157612a90612492565b5b5f612a9e888289016124e0565b9550506020612aaf888289016124e0565b945050604086013567ffffffffffffffff811115612ad057612acf612496565b5b612adc888289016129ad565b935050606086013567ffffffffffffffff811115612afd57612afc612496565b5b612b09888289016129ad565b925050608086013567ffffffffffffffff811115612b2a57612b29612496565b5b612b3688828901612a4b565b9150509295509295909350565b5f67ffffffffffffffff821115612b5d57612b5c612786565b5b602082029050602081019050919050565b5f612b80612b7b84612b43565b6127e4565b90508083825260208201905060208402830185811115612ba357612ba2612941565b5b835b81811015612bcc5780612bb888826124e0565b845260208401935050602081019050612ba5565b5050509392505050565b5f82601f830112612bea57612be961277e565b5b8135612bfa848260208601612b6e565b91505092915050565b5f8060408385031215612c1957612c18612492565b5b5f83013567ffffffffffffffff811115612c3657612c35612496565b5b612c4285828601612bd6565b925050602083013567ffffffffffffffff811115612c6357612c62612496565b5b612c6f858286016129ad565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612cab816124f4565b82525050565b5f612cbc8383612ca2565b60208301905092915050565b5f602082019050919050565b5f612cde82612c79565b612ce88185612c83565b9350612cf383612c93565b805f5b83811015612d23578151612d0a8882612cb1565b9750612d1583612cc8565b925050600181019050612cf6565b5085935050505092915050565b5f6020820190508181035f830152612d488184612cd4565b905092915050565b5f6060820190508181035f830152612d6881866126b2565b9050612d776020830185612565565b612d846040830184612565565b949350505050565b5f805f805f8060c08789031215612da657612da5612492565b5b5f612db389828a016124e0565b9650506020612dc489828a01612513565b955050604087013567ffffffffffffffff811115612de557612de4612496565b5b612df189828a0161287d565b945050606087013567ffffffffffffffff811115612e1257612e11612496565b5b612e1e89828a0161287d565b935050608087013567ffffffffffffffff811115612e3f57612e3e612496565b5b612e4b89828a0161287d565b92505060a0612e5c89828a01612513565b9150509295509295509295565b5f602082019050612e7c5f83018461266b565b92915050565b5f8060408385031215612e9857612e97612492565b5b5f612ea585828601612513565b9250506020612eb6858286016124e0565b9150509250929050565b5f805f8060808587031215612ed857612ed7612492565b5b5f612ee5878288016124e0565b9450506020612ef6878288016124e0565b9350506040612f0787828801612513565b9250506060612f1887828801612513565b91505092959194509250565b612f2d8161260d565b8114612f37575f80fd5b50565b5f81359050612f4881612f24565b92915050565b5f8060408385031215612f6457612f63612492565b5b5f612f71858286016124e0565b9250506020612f8285828601612f3a565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612fbe816124b9565b82525050565b5f82825260208201905092915050565b5f612fde8261267a565b612fe88185612fc4565b9350612ff8818560208601612694565b613001816126a2565b840191505092915050565b5f60c083015f8301516130215f860182612fb5565b5060208301516130346020860182612ca2565b506040830151848203604086015261304c8282612fd4565b915050606083015184820360608601526130668282612fd4565b915050608083015184820360808601526130808282612fd4565b91505060a083015161309560a0860182612ca2565b508091505092915050565b5f6130ab838361300c565b905092915050565b5f602082019050919050565b5f6130c982612f8c565b6130d38185612f96565b9350836020820285016130e585612fa6565b805f5b85811015613120578484038952815161310185826130a0565b945061310c836130b3565b925060208a019950506001810190506130e8565b50829750879550505050505092915050565b5f6020820190508181035f83015261314a81846130bf565b905092915050565b5f806040838503121561316857613167612492565b5b5f613175858286016124e0565b9250506020613186858286016124e0565b9150509250929050565b5f805f805f60a086880312156131a9576131a8612492565b5b5f6131b6888289016124e0565b95505060206131c7888289016124e0565b94505060406131d888828901612513565b93505060606131e988828901612513565b925050608086013567ffffffffffffffff81111561320a57613209612496565b5b61321688828901612a4b565b9150509295509295909350565b5f6020828403121561323857613237612492565b5b5f613245848285016124e0565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061329257607f821691505b6020821081036132a5576132a461324e565b5b50919050565b7f4e6f206576656e747320617661696c61626c65000000000000000000000000005f82015250565b5f6132df601383612684565b91506132ea826132ab565b602082019050919050565b5f6020820190508181035f83015261330c816132d3565b9050919050565b7f4576656e7420646f6573206e6f742065786973740000000000000000000000005f82015250565b5f613347601483612684565b915061335282613313565b602082019050919050565b5f6020820190508181035f8301526133748161333b565b9050919050565b7f5175616e74697479206d7573742062652067726561746572207468616e207a655f8201527f726f000000000000000000000000000000000000000000000000000000000000602082015250565b5f6133d5602283612684565b91506133e08261337b565b604082019050919050565b5f6020820190508181035f830152613402816133c9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613440826124f4565b915061344b836124f4565b925082820390508181111561346357613462613409565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6134a0826124f4565b91506134ab836124f4565b92508282026134b9816124f4565b915082820484148315176134d0576134cf613409565b5b5092915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026135337fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826134f8565b61353d86836134f8565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61357861357361356e846124f4565b613555565b6124f4565b9050919050565b5f819050919050565b6135918361355e565b6135a561359d8261357f565b848454613504565b825550505050565b5f90565b6135b96135ad565b6135c4818484613588565b505050565b5b818110156135e7576135dc5f826135b1565b6001810190506135ca565b5050565b601f82111561362c576135fd816134d7565b613606846134e9565b81016020851015613615578190505b613629613621856134e9565b8301826135c9565b50505b505050565b5f82821c905092915050565b5f61364c5f1984600802613631565b1980831691505092915050565b5f613664838361363d565b9150826002028217905092915050565b61367d8261267a565b67ffffffffffffffff81111561369657613695612786565b5b6136a0825461327b565b6136ab8282856135eb565b5f60209050601f8311600181146136dc575f84156136ca578287015190505b6136d48582613659565b86555061373b565b601f1984166136ea866134d7565b5f5b82811015613711578489015182556001820191506020850194506020810190506136ec565b8683101561372e578489015161372a601f89168261363d565b8355505b6001600288020188555050505b505050505050565b5f6080820190506137565f830187612565565b818103602083015261376881866126b2565b90506137776040830185612565565b6137846060830184612565565b95945050505050565b5f6040820190506137a05f83018561266b565b6137ad602083018461266b565b9392505050565b5f6040820190506137c75f830185612565565b6137d46020830184612565565b9392505050565b5f60a0820190506137ee5f83018861266b565b818103602083015261380081876126b2565b9050818103604083015261381481866126b2565b9050818103606083015261382881856126b2565b90506138376080830184612565565b9695505050505050565b7f496e73756666696369656e74207469636b65747320746f207472616e736665725f82015250565b5f613875602083612684565b915061388082613841565b602082019050919050565b5f6020820190508181035f8301526138a281613869565b9050919050565b5f6138b3826124f4565b91506138be836124f4565b92508282019050808211156138d6576138d5613409565b5b92915050565b5f6080820190506138ef5f83018761266b565b6138fc602083018661266b565b6139096040830185612565565b6139166060830184612565565b95945050505050565b5f6080820190506139325f83018761266b565b61393f6020830186612565565b61394c6040830185612565565b6139596060830184612565565b95945050505050565b5f6040820190508181035f83015261397a8185612cd4565b9050818103602083015261398e8184612cd4565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6139bb82613997565b6139c581856139a1565b93506139d5818560208601612694565b6139de816126a2565b840191505092915050565b5f60a0820190506139fc5f83018861266b565b613a09602083018761266b565b613a166040830186612565565b613a236060830185612565565b8181036080830152613a3581846139b1565b90509695505050505050565b5f81519050613a4f816125b8565b92915050565b5f60208284031215613a6a57613a69612492565b5b5f613a7784828501613a41565b91505092915050565b5f60a082019050613a935f83018861266b565b613aa0602083018761266b565b8181036040830152613ab28186612cd4565b90508181036060830152613ac68185612cd4565b90508181036080830152613ada81846139b1565b9050969550505050505056fea264697066735822122032af70815fb90e98f500d6fd9084182c887f81b693fe1b753f55a4c381f4162c64736f6c63430008190033