60806040526001601860006101000a81548160ff0219169083151502179055506000601860016101000a81548160ff0219169083151502179055506000601860026101000a81548160ff0219169083151502179055506000601860036101000a81548160ff0219169083151502179055503480156200007d57600080fd5b5060405162004fdd38038062004fdd8339818101604052810190620000a39190620003ba565b336040518060400160405280600881526020017f4461696c794e46540000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f444e465400000000000000000000000000000000000000000000000000000000815250816000908162000121919062000686565b50806001908162000133919062000686565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620001ab5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620001a291906200077e565b60405180910390fd5b620001bc816200024f60201b60201c565b5082600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806010819055505050506200079b565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000347826200031a565b9050919050565b62000359816200033a565b81146200036557600080fd5b50565b60008151905062000379816200034e565b92915050565b6000819050919050565b62000394816200037f565b8114620003a057600080fd5b50565b600081519050620003b48162000389565b92915050565b600080600060608486031215620003d657620003d562000315565b5b6000620003e68682870162000368565b9350506020620003f98682870162000368565b92505060406200040c86828701620003a3565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200049857607f821691505b602082108103620004ae57620004ad62000450565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005187fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004d9565b620005248683620004d9565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000567620005616200055b846200037f565b6200053c565b6200037f565b9050919050565b6000819050919050565b620005838362000546565b6200059b62000592826200056e565b848454620004e6565b825550505050565b600090565b620005b2620005a3565b620005bf81848462000578565b505050565b5b81811015620005e757620005db600082620005a8565b600181019050620005c5565b5050565b601f82111562000636576200060081620004b4565b6200060b84620004c9565b810160208510156200061b578190505b620006336200062a85620004c9565b830182620005c4565b50505b505050565b600082821c905092915050565b60006200065b600019846008026200063b565b1980831691505092915050565b600062000676838362000648565b9150826002028217905092915050565b620006918262000416565b67ffffffffffffffff811115620006ad57620006ac62000421565b5b620006b982546200047f565b620006c6828285620005eb565b600060209050601f831160018114620006fe5760008415620006e9578287015190505b620006f5858262000668565b86555062000765565b601f1984166200070e86620004b4565b60005b82811015620007385784890151825560018201915060208501945060208101905062000711565b8683101562000758578489015162000754601f89168262000648565b8355505b6001600288020188555050505b505050505050565b62000778816200033a565b82525050565b60006020820190506200079560008301846200076d565b92915050565b61483280620007ab6000396000f3fe608060405234801561001057600080fd5b506004361061023c5760003560e01c80636f8608e41161013b5780639cd608ff116100b8578063d01fe79f1161007c578063d01fe79f146106a3578063d1c336e3146106d3578063e985e9c5146106f1578063f2fde38b14610721578063fcf37e301461073d5761023c565b80639cd608ff146105ff5780639e3894081461061d578063a22cb4651461063b578063b88d4fde14610657578063c87b56dd146106735761023c565b80638da5cb5b116100ff5780638da5cb5b146105a557806395317861146105c357806395d89b41146105cd5780639a65ea26146105eb5780639adfa4e9146105f55761023c565b80636f8608e41461050157806370a082311461051f578063715018a61461054f57806379f906791461055957806379fd9365146105755761023c565b8063280eebfd116101c95780635e0e1d4c1161018d5780635e0e1d4c1461043757806361296f45146104535780636352211e14610471578063646dc093146104a1578063689aa202146104d15761023c565b8063280eebfd1461036d5780632f745c591461039d57806342842e0e146103cd5780634f6ccce7146103e95780635c9302c9146104195761023c565b8063081812fc11610210578063081812fc146102dd578063095ea7b31461030d5780631249c58b1461032957806318160ddd1461033357806323b872dd146103515761023c565b80629a9b7b1461024157806301ffc9a71461025f578063037807331461028f57806306fdde03146102bf575b600080fd5b61024961075b565b6040516102569190612f94565b60405180910390f35b6102796004803603810190610274919061301b565b610761565b6040516102869190613063565b60405180910390f35b6102a960048036038101906102a49190613108565b610773565b6040516102b69190613063565b60405180910390f35b6102c76107a2565b6040516102d491906131d8565b60405180910390f35b6102f760048036038101906102f291906131fa565b610834565b6040516103049190613236565b60405180910390f35b61032760048036038101906103229190613251565b610850565b005b610331610866565b005b61033b610c4d565b6040516103489190612f94565b60405180910390f35b61036b60048036038101906103669190613291565b610c5a565b005b610387600480360381019061038291906132e4565b610d5c565b6040516103949190612f94565b60405180910390f35b6103b760048036038101906103b29190613251565b610d74565b6040516103c49190612f94565b60405180910390f35b6103e760048036038101906103e29190613291565b610e1d565b005b61040360048036038101906103fe91906131fa565b610e3d565b6040516104109190612f94565b60405180910390f35b610421610eb3565b60405161042e9190612f94565b60405180910390f35b610451600480360381019061044c9190613251565b610eb9565b005b61045b611103565b6040516104689190613063565b60405180910390f35b61048b600480360381019061048691906131fa565b611116565b6040516104989190613236565b60405180910390f35b6104bb60048036038101906104b691906131fa565b611128565b6040516104c891906131d8565b60405180910390f35b6104eb60048036038101906104e691906131fa565b6111c8565b6040516104f89190612f94565b60405180910390f35b6105096111e0565b6040516105169190613063565b60405180910390f35b610539600480360381019061053491906132e4565b6111f3565b6040516105469190612f94565b60405180910390f35b6105576112ad565b005b610573600480360381019061056e9190613472565b6112c1565b005b61058f600480360381019061058a91906132e4565b611382565b60405161059c9190612f94565b60405180910390f35b6105ad61139a565b6040516105ba9190613236565b60405180910390f35b6105cb6113c4565b005b6105d56113e9565b6040516105e291906131d8565b60405180910390f35b6105f361147b565b005b6105fd6114a0565b005b6106076114c5565b6040516106149190613063565b60405180910390f35b6106256114d8565b6040516106329190612f94565b60405180910390f35b610655600480360381019061065091906134ce565b6114de565b005b610671600480360381019061066c91906135af565b6114f4565b005b61068d600480360381019061068891906131fa565b611511565b60405161069a91906131d8565b60405180910390f35b6106bd60048036038101906106b891906131fa565b6115df565b6040516106ca9190612f94565b60405180910390f35b6106db6115f7565b6040516106e89190612f94565b60405180910390f35b61070b60048036038101906107069190613632565b6115fd565b6040516107189190613063565b60405180910390f35b61073b600480360381019061073691906132e4565b611691565b005b610745611717565b6040516107529190613063565b60405180910390f35b600e5481565b600061076c8261172a565b9050919050565b60176020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6060600080546107b1906136a1565b80601f01602080910402602001604051908101604052809291908181526020018280546107dd906136a1565b801561082a5780601f106107ff5761010080835404028352916020019161082a565b820191906000526020600020905b81548152906001019060200180831161080d57829003601f168201915b5050505050905090565b600061083f826117a4565b506108498261182c565b9050919050565b610862828261085d611869565b611871565b5050565b601860039054906101000a900460ff16156108b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ad90613744565b60405180910390fd5b601860029054906101000a900460ff16610905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fc906137b0565b60405180910390fd5b600060126000600f5481526020019081526020016000208054610927906136a1565b905003610969576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109609061381c565b60405180910390fd5b60176000600f54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a00906138ae565b60405180910390fd5b6001600f54610a1891906138fd565b601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403610ab9576001601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610aad9190613931565b92505081905550610aff565b6001601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600f54601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e6000815480929190610b5890613965565b91905055506000600e549050610b6e3382611883565b600f546013600083815260200190815260200160002081905550600160176000600f54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601660008381526020019081526020016000208190555050565b6000600980549050905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ccc5760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610cc39190613236565b60405180910390fd5b6000610ce08383610cdb611869565b61197c565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d56578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610d4d939291906139ad565b60405180910390fd5b50505050565b60146020528060005260406000206000915090505481565b6000610d7f836111f3565b8210610dc45782826040517fa57d13dc000000000000000000000000000000000000000000000000000000008152600401610dbb9291906139e4565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610e38838383604051806020016040528060008152506114f4565b505050565b6000610e47610c4d565b8210610e8d576000826040517fa57d13dc000000000000000000000000000000000000000000000000000000008152600401610e849291906139e4565b60405180910390fd5b60098281548110610ea157610ea0613a0d565b5b90600052602060002001549050919050565b600f5481565b610ec1611992565b601860009054906101000a900460ff16610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0790613a88565b60405180910390fd5b600f548110610f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b90613b1a565b60405180910390fd5b6017600082815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe990613bac565b60405180910390fd5b6000601260008381526020019081526020016000208054611012906136a1565b905003611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b90613c3e565b60405180910390fd5b600e600081548092919061106790613965565b91905055506000600e54905061107d8382611883565b81601360008381526020019081526020016000208190555060016017600084815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b601860009054906101000a900460ff1681565b6000611121826117a4565b9050919050565b60126020528060005260406000206000915090508054611147906136a1565b80601f0160208091040260200160405190810160405280929190818152602001828054611173906136a1565b80156111c05780601f10611195576101008083540402835291602001916111c0565b820191906000526020600020905b8154815290600101906020018083116111a357829003601f168201915b505050505081565b60136020528060005260406000206000915090505481565b601860029054906101000a900460ff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112665760006040517f89c62b6400000000000000000000000000000000000000000000000000000000815260040161125d9190613236565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112b5611992565b6112bf6000611a19565b565b6112c9611992565b601860019054906101000a900460ff1615611319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131090613cd0565b60405180910390fd5b600f600081548092919061132c90613965565b91905055508160126000600f54815260200190815260200160002090816113539190613e9c565b50801561137e5780601860016101000a81548160ff021916908315150217905550600f546011819055505b5050565b60156020528060005260406000206000915090505481565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6113cc611992565b6001601860036101000a81548160ff021916908315150217905550565b6060600180546113f8906136a1565b80601f0160208091040260200160405190810160405280929190818152602001828054611424906136a1565b80156114715780601f1061144657610100808354040283529160200191611471565b820191906000526020600020905b81548152906001019060200180831161145457829003601f168201915b5050505050905090565b611483611992565b6001601860026101000a81548160ff021916908315150217905550565b6114a8611992565b6000601860006101000a81548160ff021916908315150217905550565b601860019054906101000a900460ff1681565b60115481565b6114f06114e9611869565b8383611adf565b5050565b6114ff848484610c5a565b61150b84848484611c4e565b50505050565b6060600060136000848152602001908152602001600020549050600060126000838152602001908152602001600020805461154b906136a1565b80601f0160208091040260200160405190810160405280929190818152602001828054611577906136a1565b80156115c45780601f10611599576101008083540402835291602001916115c4565b820191906000526020600020905b8154815290600101906020018083116115a757829003601f168201915b505050505090506115d6828286611e05565b92505050919050565b60166020528060005260406000206000915090505481565b60105481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611699611992565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361170b5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016117029190613236565b60405180910390fd5b61171481611a19565b50565b601860039054906101000a900460ff1681565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061179d575061179c82611e8b565b5b9050919050565b6000806117b083611eec565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361182357826040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161181a9190612f94565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b61187e8383836001611f29565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118f55760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016118ec9190613236565b60405180910390fd5b60006119038383600061197c565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146119775760006040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260040161196e9190613236565b60405180910390fd5b505050565b60006119898484846120ee565b90509392505050565b61199a611869565b73ffffffffffffffffffffffffffffffffffffffff166119b861139a565b73ffffffffffffffffffffffffffffffffffffffff1614611a17576119db611869565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611a0e9190613236565b60405180910390fd5b565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b5057816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401611b479190613236565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c419190613063565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b1115611dff578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02611c92611869565b8685856040518563ffffffff1660e01b8152600401611cb49493929190613fc3565b6020604051808303816000875af1925050508015611cf057506040513d601f19601f82011682018060405250810190611ced9190614024565b60015b611d74573d8060008114611d20576040519150601f19603f3d011682016040523d82523d6000602084013e611d25565b606091505b506000815103611d6c57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611d639190613236565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611dfd57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611df49190613236565b60405180910390fd5b505b50505050565b6060611e108461220b565b83611e1a86612393565b611e238561220b565b611e2c8861220b565b611e358961250b565b88611e3f8b612592565b611e5b601660008c81526020019081526020016000205461220b565b604051602001611e7399989796959493929190614469565b60405160208183030381529060405290509392505050565b6000634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611ee55750611ee482612618565b5b9050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8080611f625750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612096576000611f72846117a4565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611fdd57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611ff05750611fee81846115fd565b155b1561203257826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016120299190613236565b60405180910390fd5b811561209457838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6000806120fc8585856126fa565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121405761213b84612914565b61217f565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461217e5761217d818561295d565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036121c1576121bc84612abe565b612200565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146121ff576121fe8585612b8f565b5b5b809150509392505050565b606060008203612252576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061238e565b600082905060005b6000821461228457808061226d90613965565b915050600a8261227d91906145b1565b915061225a565b60008167ffffffffffffffff8111156122a05761229f61331b565b5b6040519080825280601f01601f1916602001820160405280156122d25781602001600182028036833780820191505090505b50905060008290505b60008614612386576001816122f091906138fd565b90506000600a808861230291906145b1565b61230c91906145e2565b8761231791906138fd565b60306123239190614631565b905060008160f81b90508084848151811061234157612340613a0d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8861237d91906145b1565b975050506122db565b819450505050505b919050565b606080601154831461243c57600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663489187e86040518163ffffffff1660e01b8152600401600060405180830381865afa15801561240c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061243591906146d6565b90506124d5565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663489187e86040518163ffffffff1660e01b8152600401600060405180830381865afa1580156124a9573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906124d291906146d6565b90505b60006124e082612c1a565b6040516020016124f0919061476b565b60405160208183030381529060405290508092505050919050565b6060601054821015612554576040518060400160405280600481526020017f7472756500000000000000000000000000000000000000000000000000000000815250905061258d565b6040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525090505b919050565b606060115482146125da576040518060400160405280600681526020017f6e6f726d616c00000000000000000000000000000000000000000000000000008152509050612613565b6040518060400160405280600581526020017f66696e616c00000000000000000000000000000000000000000000000000000081525090505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806126e357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806126f357506126f282612d8c565b5b9050919050565b60008061270684611eec565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461274857612747818486612df6565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146127d95761278a600085600080611f29565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461285c576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b600980549050600a600083815260200190815260200160002081905550600981908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000612968836111f3565b9050600060086000848152602001908152602001600020549050818114612a4d576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600980549050612ad291906138fd565b90506000600a6000848152602001908152602001600020549050600060098381548110612b0257612b01613a0d565b5b906000526020600020015490508060098381548110612b2457612b23613a0d565b5b906000526020600020018190555081600a600083815260200190815260200160002081905550600a6000858152602001908152602001600020600090556009805480612b7357612b7261478d565b5b6001900381819060005260206000200160009055905550505050565b60006001612b9c846111f3565b612ba691906138fd565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b60606000825103612c3c57604051806020016040528060008152509050612d87565b60006040518060600160405280604081526020016147bd6040913990506000600360028551612c6b9190613931565b612c7591906145b1565b6004612c8191906145e2565b67ffffffffffffffff811115612c9a57612c9961331b565b5b6040519080825280601f01601f191660200182016040528015612ccc5781602001600182028036833780820191505090505b50905060018201602082018586518701602081018051600082525b82841015612d42576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f8116870151865360018601955050612ce7565b80825260038a510660018114612d5f5760028114612d7257612d7a565b603d6001870353603d6002870353612d7a565b603d60018703535b5050505050505080925050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612e01838383612eba565b612eb557600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e7657806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401612e6d9190612f94565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401612eac9291906139e4565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612f7257508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612f335750612f3284846115fd565b5b80612f7157508273ffffffffffffffffffffffffffffffffffffffff16612f598361182c565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b6000819050919050565b612f8e81612f7b565b82525050565b6000602082019050612fa96000830184612f85565b92915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612ff881612fc3565b811461300357600080fd5b50565b60008135905061301581612fef565b92915050565b60006020828403121561303157613030612fb9565b5b600061303f84828501613006565b91505092915050565b60008115159050919050565b61305d81613048565b82525050565b60006020820190506130786000830184613054565b92915050565b61308781612f7b565b811461309257600080fd5b50565b6000813590506130a48161307e565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006130d5826130aa565b9050919050565b6130e5816130ca565b81146130f057600080fd5b50565b600081359050613102816130dc565b92915050565b6000806040838503121561311f5761311e612fb9565b5b600061312d85828601613095565b925050602061313e858286016130f3565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613182578082015181840152602081019050613167565b60008484015250505050565b6000601f19601f8301169050919050565b60006131aa82613148565b6131b48185613153565b93506131c4818560208601613164565b6131cd8161318e565b840191505092915050565b600060208201905081810360008301526131f2818461319f565b905092915050565b6000602082840312156132105761320f612fb9565b5b600061321e84828501613095565b91505092915050565b613230816130ca565b82525050565b600060208201905061324b6000830184613227565b92915050565b6000806040838503121561326857613267612fb9565b5b6000613276858286016130f3565b925050602061328785828601613095565b9150509250929050565b6000806000606084860312156132aa576132a9612fb9565b5b60006132b8868287016130f3565b93505060206132c9868287016130f3565b92505060406132da86828701613095565b9150509250925092565b6000602082840312156132fa576132f9612fb9565b5b6000613308848285016130f3565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6133538261318e565b810181811067ffffffffffffffff821117156133725761337161331b565b5b80604052505050565b6000613385612faf565b9050613391828261334a565b919050565b600067ffffffffffffffff8211156133b1576133b061331b565b5b6133ba8261318e565b9050602081019050919050565b82818337600083830152505050565b60006133e96133e484613396565b61337b565b90508281526020810184848401111561340557613404613316565b5b6134108482856133c7565b509392505050565b600082601f83011261342d5761342c613311565b5b813561343d8482602086016133d6565b91505092915050565b61344f81613048565b811461345a57600080fd5b50565b60008135905061346c81613446565b92915050565b6000806040838503121561348957613488612fb9565b5b600083013567ffffffffffffffff8111156134a7576134a6612fbe565b5b6134b385828601613418565b92505060206134c48582860161345d565b9150509250929050565b600080604083850312156134e5576134e4612fb9565b5b60006134f3858286016130f3565b92505060206135048582860161345d565b9150509250929050565b600067ffffffffffffffff8211156135295761352861331b565b5b6135328261318e565b9050602081019050919050565b600061355261354d8461350e565b61337b565b90508281526020810184848401111561356e5761356d613316565b5b6135798482856133c7565b509392505050565b600082601f83011261359657613595613311565b5b81356135a684826020860161353f565b91505092915050565b600080600080608085870312156135c9576135c8612fb9565b5b60006135d7878288016130f3565b94505060206135e8878288016130f3565b93505060406135f987828801613095565b925050606085013567ffffffffffffffff81111561361a57613619612fbe565b5b61362687828801613581565b91505092959194509250565b6000806040838503121561364957613648612fb9565b5b6000613657858286016130f3565b9250506020613668858286016130f3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806136b957607f821691505b6020821081036136cc576136cb613672565b5b50919050565b7f536e61696c206d696e74696e67206973206f7665722e20456e6a6f7920796f7560008201527f7220736e61696c732e0000000000000000000000000000000000000000000000602082015250565b600061372e602983613153565b9150613739826136d2565b604082019050919050565b6000602082019050818103600083015261375d81613721565b9050919050565b7f4d696e74696e67206861736e2774207374617274656420796574000000000000600082015250565b600061379a601a83613153565b91506137a582613764565b602082019050919050565b600060208201905081810360008301526137c98161378d565b9050919050565b7f4e6f2070726963652073657420666f7220746f64617900000000000000000000600082015250565b6000613806601683613153565b9150613811826137d0565b602082019050919050565b60006020820190508181036000830152613835816137f9565b9050919050565b7f596f75206861766520616c7265616479206d696e74656420666f7220746f646160008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b6000613898602183613153565b91506138a38261383c565b604082019050919050565b600060208201905081810360008301526138c78161388b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061390882612f7b565b915061391383612f7b565b925082820390508181111561392b5761392a6138ce565b5b92915050565b600061393c82612f7b565b915061394783612f7b565b925082820190508082111561395f5761395e6138ce565b5b92915050565b600061397082612f7b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036139a2576139a16138ce565b5b600182019050919050565b60006060820190506139c26000830186613227565b6139cf6020830185612f85565b6139dc6040830184613227565b949350505050565b60006040820190506139f96000830185613227565b613a066020830184612f85565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f526574726f616374697665206d696e74696e672069732064697361626c656400600082015250565b6000613a72601f83613153565b9150613a7d82613a3c565b602082019050919050565b60006020820190508181036000830152613aa181613a65565b9050919050565b7f43616e6e6f7420726574726f6163746976656c79206d696e7420666f7220746f60008201527f646179206f722066757475726520646179730000000000000000000000000000602082015250565b6000613b04603283613153565b9150613b0f82613aa8565b604082019050919050565b60006020820190508181036000830152613b3381613af7565b9050919050565b7f526563697069656e742068617320616c7265616479206d696e74656420666f7260008201527f2074686973206461790000000000000000000000000000000000000000000000602082015250565b6000613b96602983613153565b9150613ba182613b3a565b604082019050919050565b60006020820190508181036000830152613bc581613b89565b9050919050565b7f4e6f2070726963652073657420666f722074686520737065636966696564206460008201527f6179000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c28602283613153565b9150613c3382613bcc565b604082019050919050565b60006020820190508181036000830152613c5781613c1b565b9050919050565b7f43616e277420616476616e63652074686520646179206166746572207468652060008201527f70726963652074617267657420686173206265656e2068697400000000000000602082015250565b6000613cba603983613153565b9150613cc582613c5e565b604082019050919050565b60006020820190508181036000830152613ce981613cad565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613d527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613d15565b613d5c8683613d15565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613d99613d94613d8f84612f7b565b613d74565b612f7b565b9050919050565b6000819050919050565b613db383613d7e565b613dc7613dbf82613da0565b848454613d22565b825550505050565b600090565b613ddc613dcf565b613de7818484613daa565b505050565b5b81811015613e0b57613e00600082613dd4565b600181019050613ded565b5050565b601f821115613e5057613e2181613cf0565b613e2a84613d05565b81016020851015613e39578190505b613e4d613e4585613d05565b830182613dec565b50505b505050565b600082821c905092915050565b6000613e7360001984600802613e55565b1980831691505092915050565b6000613e8c8383613e62565b9150826002028217905092915050565b613ea582613148565b67ffffffffffffffff811115613ebe57613ebd61331b565b5b613ec882546136a1565b613ed3828285613e0f565b600060209050601f831160018114613f065760008415613ef4578287015190505b613efe8582613e80565b865550613f66565b601f198416613f1486613cf0565b60005b82811015613f3c57848901518255600182019150602085019450602081019050613f17565b86831015613f595784890151613f55601f891682613e62565b8355505b6001600288020188555050505b505050505050565b600081519050919050565b600082825260208201905092915050565b6000613f9582613f6e565b613f9f8185613f79565b9350613faf818560208601613164565b613fb88161318e565b840191505092915050565b6000608082019050613fd86000830187613227565b613fe56020830186613227565b613ff26040830185612f85565b81810360608301526140048184613f8a565b905095945050505050565b60008151905061401e81612fef565b92915050565b60006020828403121561403a57614039612fb9565b5b60006140488482850161400f565b91505092915050565b600081905092915050565b7f7b00000000000000000000000000000000000000000000000000000000000000600082015250565b6000614092600183614051565b915061409d8261405c565b600182019050919050565b7f226e616d65223a202246585320536e61696c2044617920000000000000000000600082015250565b60006140de601783614051565b91506140e9826140a8565b601782019050919050565b60006140ff82613148565b6141098185614051565b9350614119818560208601613164565b80840191505092915050565b7f222c000000000000000000000000000000000000000000000000000000000000600082015250565b600061415b600283614051565b915061416682614125565b600282019050919050565b7f226465736372697074696f6e223a20224658532050726963653a200000000000600082015250565b60006141a7601b83614051565b91506141b282614171565b601b82019050919050565b7f222c22696d616765223a20220000000000000000000000000000000000000000600082015250565b60006141f3600c83614051565b91506141fe826141bd565b600c82019050919050565b7f222c2261747472696275746573223a207b000000000000000000000000000000600082015250565b600061423f601183614051565b915061424a82614209565b601182019050919050565b7f226964223a200000000000000000000000000000000000000000000000000000600082015250565b600061428b600683614051565b915061429682614255565b600682019050919050565b7f2c22646179223a20000000000000000000000000000000000000000000000000600082015250565b60006142d7600883614051565b91506142e2826142a1565b600882019050919050565b7f2c22726574726f616374697665223a2000000000000000000000000000000000600082015250565b6000614323601083614051565b915061432e826142ed565b601082019050919050565b7f2c227072696365223a2022000000000000000000000000000000000000000000600082015250565b600061436f600b83614051565b915061437a82614339565b600b82019050919050565b7f2274797065223a20220000000000000000000000000000000000000000000000600082015250565b60006143bb600983614051565b91506143c682614385565b600982019050919050565b7f222c2273747265616b223a200000000000000000000000000000000000000000600082015250565b6000614407600c83614051565b9150614412826143d1565b600c82019050919050565b7f7d7d000000000000000000000000000000000000000000000000000000000000600082015250565b6000614453600283614051565b915061445e8261441d565b600282019050919050565b600061447482614085565b915061447f826140d1565b915061448b828c6140f4565b91506144968261414e565b91506144a18261419a565b91506144ad828b6140f4565b91506144b8826141e6565b91506144c4828a6140f4565b91506144cf82614232565b91506144da8261427e565b91506144e682896140f4565b91506144f1826142ca565b91506144fd82886140f4565b915061450882614316565b915061451482876140f4565b915061451f82614362565b915061452b82866140f4565b91506145368261414e565b9150614541826143ae565b915061454d82856140f4565b9150614558826143fa565b915061456482846140f4565b915061456f82614446565b91508190509a9950505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006145bc82612f7b565b91506145c783612f7b565b9250826145d7576145d6614582565b5b828204905092915050565b60006145ed82612f7b565b91506145f883612f7b565b925082820261460681612f7b565b9150828204841483151761461d5761461c6138ce565b5b5092915050565b600060ff82169050919050565b600061463c82614624565b915061464783614624565b9250828201905060ff8111156146605761465f6138ce565b5b92915050565b600061467961467484613396565b61337b565b90508281526020810184848401111561469557614694613316565b5b6146a0848285613164565b509392505050565b600082601f8301126146bd576146bc613311565b5b81516146cd848260208601614666565b91505092915050565b6000602082840312156146ec576146eb612fb9565b5b600082015167ffffffffffffffff81111561470a57614709612fbe565b5b614716848285016146a8565b91505092915050565b7f646174613a696d6167652f7376672b786d6c3b6261736536342c000000000000600082015250565b6000614755601a83614051565b91506147608261471f565b601a82019050919050565b600061477682614748565b915061478282846140f4565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212208e6a9b3bf4aef4a3c921f28556d45fab2c4067040cb1c974d2c903f091a75da264736f6c6343000818003300000000000000000000000065afe0e9b9642f8327b6ef35dc9f9967bf8e50430000000000000000000000009f533782eda4b7d40c5d38d44e0134c26d62259f0000000000000000000000000000000000000000000000000000000000000001