60806040525f600955336040518060400160405280600781526020017f4e66744e616d65000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4e46543100000000000000000000000000000000000000000000000000000000815250815f90816100839190610d47565b5080600190816100939190610d47565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610106575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100fd9190610e55565b60405180910390fd5b610115816101ee60201b60201c565b503073ffffffffffffffffffffffffffffffffffffffff166108fc662386f26fc1000090811502906040515f60405180830381858888f19350505050610190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161018790610ec8565b60405180910390fd5b6101a2336009546102b160201b60201c565b6101e96009546040518060400160405280600381526020017f61626300000000000000000000000000000000000000000000000000000000008152506103aa60201b60201c565b610f35565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610321575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016103189190610e55565b60405180910390fd5b5f61033383835f61040460201b60201c565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146103a5575f6040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260040161039c9190610e55565b60405180910390fd5b505050565b8060065f8481526020019081526020015f2090816103c89190610d47565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7826040516103f89190610ef5565b60405180910390a15050565b5f806104158461062160201b60201c565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461045c5761045b81848661065a60201b60201c565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146104ed576104a15f855f8061072360201b60201c565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461056c57600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460025f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61066b8383836108ee60201b60201c565b61071e575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106df57806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016106d69190610ef5565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401610715929190610f0e565b60405180910390fd5b505050565b808061075b57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15610899575f610770846109ba60201b60201c565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156107da57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156107f357506107f18184610a4660201b60201c565b155b1561083557826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040161082c9190610e55565b60405180910390fd5b811561089757838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360045f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156109b157508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061096c575061096b8484610a4660201b60201c565b5b806109b057508273ffffffffffffffffffffffffffffffffffffffff1661099883610ad460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f806109cb8361062160201b60201c565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a3d57826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401610a349190610ef5565b60405180910390fd5b80915050919050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610b8857607f821691505b602082108103610b9b57610b9a610b44565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610bfd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610bc2565b610c078683610bc2565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610c4b610c46610c4184610c1f565b610c28565b610c1f565b9050919050565b5f819050919050565b610c6483610c31565b610c78610c7082610c52565b848454610bce565b825550505050565b5f90565b610c8c610c80565b610c97818484610c5b565b505050565b5b81811015610cba57610caf5f82610c84565b600181019050610c9d565b5050565b601f821115610cff57610cd081610ba1565b610cd984610bb3565b81016020851015610ce8578190505b610cfc610cf485610bb3565b830182610c9c565b50505b505050565b5f82821c905092915050565b5f610d1f5f1984600802610d04565b1980831691505092915050565b5f610d378383610d10565b9150826002028217905092915050565b610d5082610b0d565b67ffffffffffffffff811115610d6957610d68610b17565b5b610d738254610b71565b610d7e828285610cbe565b5f60209050601f831160018114610daf575f8415610d9d578287015190505b610da78582610d2c565b865550610e0e565b601f198416610dbd86610ba1565b5f5b82811015610de457848901518255600182019150602085019450602081019050610dbf565b86831015610e015784890151610dfd601f891682610d10565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610e3f82610e16565b9050919050565b610e4f81610e35565b82525050565b5f602082019050610e685f830184610e46565b92915050565b5f82825260208201905092915050565b7f4e6f742073656e740000000000000000000000000000000000000000000000005f82015250565b5f610eb2600883610e6e565b9150610ebd82610e7e565b602082019050919050565b5f6020820190508181035f830152610edf81610ea6565b9050919050565b610eef81610c1f565b82525050565b5f602082019050610f085f830184610ee6565b92915050565b5f604082019050610f215f830185610e46565b610f2e6020830184610ee6565b9392505050565b612aed80610f425f395ff3fe608060405260043610610117575f3560e01c8063715018a61161009f578063c002d23d11610063578063c002d23d1461039e578063c87b56dd146103c8578063e13639db14610404578063e985e9c51461042c578063f2fde38b146104685761011e565b8063715018a6146102e45780638da5cb5b146102fa57806395d89b4114610324578063a22cb4651461034e578063b88d4fde146103765761011e565b806323b872dd116100e657806323b872dd146101ec578063286c9ef61461021457806342842e0e146102445780636352211e1461026c57806370a08231146102a85761011e565b806301ffc9a71461012257806306fdde031461015e578063081812fc14610188578063095ea7b3146101c45761011e565b3661011e57005b5f80fd5b34801561012d575f80fd5b5061014860048036038101906101439190611d65565b610490565b6040516101559190611daa565b60405180910390f35b348015610169575f80fd5b506101726104f0565b60405161017f9190611e33565b60405180910390f35b348015610193575f80fd5b506101ae60048036038101906101a99190611e86565b61057f565b6040516101bb9190611ef0565b60405180910390f35b3480156101cf575f80fd5b506101ea60048036038101906101e59190611f33565b61059a565b005b3480156101f7575f80fd5b50610212600480360381019061020d9190611f71565b6105b0565b005b61022e600480360381019061022991906120ed565b6106af565b60405161023b9190611daa565b60405180910390f35b34801561024f575f80fd5b5061026a60048036038101906102659190611f71565b610821565b005b348015610277575f80fd5b50610292600480360381019061028d9190611e86565b610840565b60405161029f9190611ef0565b60405180910390f35b3480156102b3575f80fd5b506102ce60048036038101906102c99190612147565b610851565b6040516102db9190612181565b60405180910390f35b3480156102ef575f80fd5b506102f8610907565b005b348015610305575f80fd5b5061030e61091a565b60405161031b9190611ef0565b60405180910390f35b34801561032f575f80fd5b50610338610942565b6040516103459190611e33565b60405180910390f35b348015610359575f80fd5b50610374600480360381019061036f91906121c4565b6109d2565b005b348015610381575f80fd5b5061039c600480360381019061039791906122a0565b6109e8565b005b3480156103a9575f80fd5b506103b2610a05565b6040516103bf9190612181565b60405180910390f35b3480156103d3575f80fd5b506103ee60048036038101906103e99190611e86565b610a10565b6040516103fb9190611e33565b60405180910390f35b34801561040f575f80fd5b5061042a600480360381019061042591906123e4565b610b1b565b005b348015610437575f80fd5b50610452600480360381019061044d919061242b565b610bfc565b60405161045f9190611daa565b60405180910390f35b348015610473575f80fd5b5061048e60048036038101906104899190612147565b610c8a565b005b5f634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104e957506104e882610d0e565b5b9050919050565b60605f80546104fe90612496565b80601f016020809104026020016040519081016040528092919081815260200182805461052a90612496565b80156105755780601f1061054c57610100808354040283529160200191610575565b820191905f5260205f20905b81548152906001019060200180831161055857829003601f168201915b5050505050905090565b5f61058982610def565b5061059382610e75565b9050919050565b6105ac82826105a7610eae565b610eb5565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610620575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016106179190611ef0565b60405180910390fd5b5f610633838361062e610eae565b610ec7565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106a9578382826040517f64283d7b0000000000000000000000000000000000000000000000000000000081526004016106a0939291906124c6565b60405180910390fd5b50505050565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610739576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107309061256b565b60405180910390fd5b5f3073ffffffffffffffffffffffffffffffffffffffff16662386f26fc10000604051610765906125b6565b5f6040518083038185875af1925050503d805f811461079f576040519150601f19603f3d011682016040523d82523d5f602084013e6107a4565b606091505b50509050806107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df90612614565b60405180910390fd5b5f60016009546107f8919061265f565b905061080485826110d2565b61080e81856111c5565b8060098190555060019250505092915050565b61083b83838360405180602001604052805f8152506109e8565b505050565b5f61084a82610def565b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108c2575f6040517f89c62b640000000000000000000000000000000000000000000000000000000081526004016108b99190611ef0565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61090f61121f565b6109185f6112a6565b565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461095190612496565b80601f016020809104026020016040519081016040528092919081815260200182805461097d90612496565b80156109c85780601f1061099f576101008083540402835291602001916109c8565b820191905f5260205f20905b8154815290600101906020018083116109ab57829003601f168201915b5050505050905090565b6109e46109dd610eae565b8383611369565b5050565b6109f38484846105b0565b6109ff848484846114d2565b50505050565b662386f26fc1000081565b6060610a1b82610def565b505f60065f8481526020019081526020015f208054610a3990612496565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6590612496565b8015610ab05780601f10610a8757610100808354040283529160200191610ab0565b820191905f5260205f20905b815481529060010190602001808311610a9357829003601f168201915b505050505090505f610ac0611684565b90505f815103610ad4578192505050610b16565b5f82511115610b08578082604051602001610af09291906126cc565b60405160208183030381529060405292505050610b16565b610b118461169a565b925050505b919050565b610b2361121f565b5f5b8151811015610bf8575f73ffffffffffffffffffffffffffffffffffffffff16828281518110610b5857610b576126ef565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610beb57600160085f848481518110610b9357610b926126ef565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b8080600101915050610b25565b5050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b610c9261121f565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d02575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610cf99190611ef0565b60405180910390fd5b610d0b816112a6565b50565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610dd857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610de85750610de782611700565b5b9050919050565b5f80610dfa83611769565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e6c57826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401610e639190612181565b60405180910390fd5b80915050919050565b5f60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b610ec283838360016117a2565b505050565b5f80610ed284611769565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610f1357610f12818486611961565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610f9e57610f525f855f806117a2565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461101d57600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460025f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611142575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016111399190611ef0565b60405180910390fd5b5f61114e83835f610ec7565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146111c0575f6040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016111b79190611ef0565b60405180910390fd5b505050565b8060065f8481526020019081526020015f2090816111e391906128b9565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7826040516112139190612181565b60405180910390a15050565b611227610eae565b73ffffffffffffffffffffffffffffffffffffffff1661124561091a565b73ffffffffffffffffffffffffffffffffffffffff16146112a457611268610eae565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161129b9190611ef0565b60405180910390fd5b565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113d957816040517f5b08ba180000000000000000000000000000000000000000000000000000000081526004016113d09190611ef0565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516114c59190611daa565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b111561167e578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02611515610eae565b8685856040518563ffffffff1660e01b815260040161153794939291906129da565b6020604051808303815f875af192505050801561157257506040513d601f19601f8201168201806040525081019061156f9190612a38565b60015b6115f3573d805f81146115a0576040519150601f19603f3d011682016040523d82523d5f602084013e6115a5565b606091505b505f8151036115eb57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016115e29190611ef0565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461167c57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016116739190611ef0565b60405180910390fd5b505b50505050565b606060405180602001604052805f815250905090565b60606116a582610def565b505f6116af611684565b90505f8151116116cd5760405180602001604052805f8152506116f8565b806116d784611a24565b6040516020016116e89291906126cc565b6040516020818303038152906040525b915050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b80806117da57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561190c575f6117e984610def565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561185357508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561186657506118648184610bfc565b155b156118a857826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040161189f9190611ef0565b60405180910390fd5b811561190a57838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360045f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b61196c838383611aee565b611a1f575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119e057806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016119d79190612181565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401611a16929190612a63565b60405180910390fd5b505050565b60605f6001611a3284611bae565b0190505f8167ffffffffffffffff811115611a5057611a4f611fc9565b5b6040519080825280601f01601f191660200182016040528015611a825781602001600182028036833780820191505090505b5090505f82602001820190505b600115611ae3578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611ad857611ad7612a8a565b5b0494505f8503611a8f575b819350505050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ba557508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b665750611b658484610bfc565b5b80611ba457508273ffffffffffffffffffffffffffffffffffffffff16611b8c83610e75565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611c0a577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611c0057611bff612a8a565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611c47576d04ee2d6d415b85acef81000000008381611c3d57611c3c612a8a565b5b0492506020810190505b662386f26fc100008310611c7657662386f26fc100008381611c6c57611c6b612a8a565b5b0492506010810190505b6305f5e1008310611c9f576305f5e1008381611c9557611c94612a8a565b5b0492506008810190505b6127108310611cc4576127108381611cba57611cb9612a8a565b5b0492506004810190505b60648310611ce75760648381611cdd57611cdc612a8a565b5b0492506002810190505b600a8310611cf6576001810190505b80915050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611d4481611d10565b8114611d4e575f80fd5b50565b5f81359050611d5f81611d3b565b92915050565b5f60208284031215611d7a57611d79611d08565b5b5f611d8784828501611d51565b91505092915050565b5f8115159050919050565b611da481611d90565b82525050565b5f602082019050611dbd5f830184611d9b565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611e0582611dc3565b611e0f8185611dcd565b9350611e1f818560208601611ddd565b611e2881611deb565b840191505092915050565b5f6020820190508181035f830152611e4b8184611dfb565b905092915050565b5f819050919050565b611e6581611e53565b8114611e6f575f80fd5b50565b5f81359050611e8081611e5c565b92915050565b5f60208284031215611e9b57611e9a611d08565b5b5f611ea884828501611e72565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611eda82611eb1565b9050919050565b611eea81611ed0565b82525050565b5f602082019050611f035f830184611ee1565b92915050565b611f1281611ed0565b8114611f1c575f80fd5b50565b5f81359050611f2d81611f09565b92915050565b5f8060408385031215611f4957611f48611d08565b5b5f611f5685828601611f1f565b9250506020611f6785828601611e72565b9150509250929050565b5f805f60608486031215611f8857611f87611d08565b5b5f611f9586828701611f1f565b9350506020611fa686828701611f1f565b9250506040611fb786828701611e72565b9150509250925092565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611fff82611deb565b810181811067ffffffffffffffff8211171561201e5761201d611fc9565b5b80604052505050565b5f612030611cff565b905061203c8282611ff6565b919050565b5f67ffffffffffffffff82111561205b5761205a611fc9565b5b61206482611deb565b9050602081019050919050565b828183375f83830152505050565b5f61209161208c84612041565b612027565b9050828152602081018484840111156120ad576120ac611fc5565b5b6120b8848285612071565b509392505050565b5f82601f8301126120d4576120d3611fc1565b5b81356120e484826020860161207f565b91505092915050565b5f806040838503121561210357612102611d08565b5b5f61211085828601611f1f565b925050602083013567ffffffffffffffff81111561213157612130611d0c565b5b61213d858286016120c0565b9150509250929050565b5f6020828403121561215c5761215b611d08565b5b5f61216984828501611f1f565b91505092915050565b61217b81611e53565b82525050565b5f6020820190506121945f830184612172565b92915050565b6121a381611d90565b81146121ad575f80fd5b50565b5f813590506121be8161219a565b92915050565b5f80604083850312156121da576121d9611d08565b5b5f6121e785828601611f1f565b92505060206121f8858286016121b0565b9150509250929050565b5f67ffffffffffffffff82111561221c5761221b611fc9565b5b61222582611deb565b9050602081019050919050565b5f61224461223f84612202565b612027565b9050828152602081018484840111156122605761225f611fc5565b5b61226b848285612071565b509392505050565b5f82601f83011261228757612286611fc1565b5b8135612297848260208601612232565b91505092915050565b5f805f80608085870312156122b8576122b7611d08565b5b5f6122c587828801611f1f565b94505060206122d687828801611f1f565b93505060406122e787828801611e72565b925050606085013567ffffffffffffffff81111561230857612307611d0c565b5b61231487828801612273565b91505092959194509250565b5f67ffffffffffffffff82111561233a57612339611fc9565b5b602082029050602081019050919050565b5f80fd5b5f61236161235c84612320565b612027565b905080838252602082019050602084028301858111156123845761238361234b565b5b835b818110156123ad57806123998882611f1f565b845260208401935050602081019050612386565b5050509392505050565b5f82601f8301126123cb576123ca611fc1565b5b81356123db84826020860161234f565b91505092915050565b5f602082840312156123f9576123f8611d08565b5b5f82013567ffffffffffffffff81111561241657612415611d0c565b5b612422848285016123b7565b91505092915050565b5f806040838503121561244157612440611d08565b5b5f61244e85828601611f1f565b925050602061245f85828601611f1f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806124ad57607f821691505b6020821081036124c0576124bf612469565b5b50919050565b5f6060820190506124d95f830186611ee1565b6124e66020830185612172565b6124f36040830184611ee1565b949350505050565b7f596f752068617665206e6f74206265656e20617070726f76656420617320616e5f8201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b5f612555602683611dcd565b9150612560826124fb565b604082019050919050565b5f6020820190508181035f83015261258281612549565b9050919050565b5f81905092915050565b50565b5f6125a15f83612589565b91506125ac82612593565b5f82019050919050565b5f6125c082612596565b9150819050919050565b7f4e6f74205061696420666f7220746865206e66740000000000000000000000005f82015250565b5f6125fe601483611dcd565b9150612609826125ca565b602082019050919050565b5f6020820190508181035f83015261262b816125f2565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61266982611e53565b915061267483611e53565b925082820190508082111561268c5761268b612632565b5b92915050565b5f81905092915050565b5f6126a682611dc3565b6126b08185612692565b93506126c0818560208601611ddd565b80840191505092915050565b5f6126d7828561269c565b91506126e3828461269c565b91508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026127787fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261273d565b612782868361273d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6127bd6127b86127b384611e53565b61279a565b611e53565b9050919050565b5f819050919050565b6127d6836127a3565b6127ea6127e2826127c4565b848454612749565b825550505050565b5f90565b6127fe6127f2565b6128098184846127cd565b505050565b5b8181101561282c576128215f826127f6565b60018101905061280f565b5050565b601f821115612871576128428161271c565b61284b8461272e565b8101602085101561285a578190505b61286e6128668561272e565b83018261280e565b50505b505050565b5f82821c905092915050565b5f6128915f1984600802612876565b1980831691505092915050565b5f6128a98383612882565b9150826002028217905092915050565b6128c282611dc3565b67ffffffffffffffff8111156128db576128da611fc9565b5b6128e58254612496565b6128f0828285612830565b5f60209050601f831160018114612921575f841561290f578287015190505b612919858261289e565b865550612980565b601f19841661292f8661271c565b5f5b8281101561295657848901518255600182019150602085019450602081019050612931565b86831015612973578489015161296f601f891682612882565b8355505b6001600288020188555050505b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f6129ac82612988565b6129b68185612992565b93506129c6818560208601611ddd565b6129cf81611deb565b840191505092915050565b5f6080820190506129ed5f830187611ee1565b6129fa6020830186611ee1565b612a076040830185612172565b8181036060830152612a1981846129a2565b905095945050505050565b5f81519050612a3281611d3b565b92915050565b5f60208284031215612a4d57612a4c611d08565b5b5f612a5a84828501612a24565b91505092915050565b5f604082019050612a765f830185611ee1565b612a836020830184612172565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffdfea2646970667358221220224b06f98eb3d8e9a98c0b1765ae8aa4e2cd9c7cb03d8ad34e40641aedc5b87664736f6c63430008190033