0x60806040523480156200001157600080fd5b506040518060400160405280600681526020017f52656464696f00000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f524544000000000000000000000000000000000000000000000000000000000081525081600090816200008f919062000529565b508060019081620000a1919062000529565b505050620000bb600d6200011e60201b62000e9b1760201c565b620000ed7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775336200013460201b60201c565b6040518060600160405280602781526020016200446060279139600c908162000117919062000529565b5062000610565b6001816000016000828254019250508190555050565b6200014682826200014a60201b60201c565b5050565b6200015c82826200023c60201b60201c565b62000238576001600b600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620001dd620002a760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000600b600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200033157607f821691505b602082108103620003475762000346620002e9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003b17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000372565b620003bd868362000372565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200040a62000404620003fe84620003d5565b620003df565b620003d5565b9050919050565b6000819050919050565b6200042683620003e9565b6200043e620004358262000411565b8484546200037f565b825550505050565b600090565b6200045562000446565b620004628184846200041b565b505050565b5b818110156200048a576200047e6000826200044b565b60018101905062000468565b5050565b601f821115620004d957620004a3816200034d565b620004ae8462000362565b81016020851015620004be578190505b620004d6620004cd8562000362565b83018262000467565b50505b505050565b600082821c905092915050565b6000620004fe60001984600802620004de565b1980831691505092915050565b6000620005198383620004eb565b9150826002028217905092915050565b6200053482620002af565b67ffffffffffffffff81111562000550576200054f620002ba565b5b6200055c825462000318565b620005698282856200048e565b600060209050601f831160018114620005a157600084156200058c578287015190505b6200059885826200050b565b86555062000608565b601f198416620005b1866200034d565b60005b82811015620005db57848901518255600182019150602085019450602081019050620005b4565b86831015620005fb5784890151620005f7601f891682620004eb565b8355505b6001600288020188555050505b505050505050565b613e4080620006206000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806355f804b3116100de57806395d89b4111610097578063b88d4fde11610071578063b88d4fde146104cd578063c87b56dd146104e9578063d547741f14610519578063e985e9c5146105355761018e565b806395d89b4114610475578063a217fddf14610493578063a22cb465146104b15761018e565b806355f804b31461037b5780636352211e146103975780636a627842146103c757806370a08231146103f757806375b238fc1461042757806391d14854146104455761018e565b806323b872dd1161014b5780632f745c59116101255780632f745c59146102e357806336568abe1461031357806342842e0e1461032f5780634f6ccce71461034b5761018e565b806323b872dd1461027b578063248a9ca3146102975780632f2ff15d146102c75761018e565b806301ffc9a71461019357806306b21439146101c357806306fdde03146101f3578063081812fc14610211578063095ea7b31461024157806318160ddd1461025d575b600080fd5b6101ad60048036038101906101a89190612777565b610565565b6040516101ba91906127bf565b60405180910390f35b6101dd60048036038101906101d8919061286e565b610577565b6040516101ea91906128bd565b60405180910390f35b6101fb6105c7565b6040516102089190612968565b60405180910390f35b61022b6004803603810190610226919061298a565b610659565b60405161023891906129c6565b60405180910390f35b61025b6004803603810190610256919061286e565b61069f565b005b6102656107b6565b60405161027291906128bd565b60405180910390f35b610295600480360381019061029091906129e1565b6107c3565b005b6102b160048036038101906102ac9190612a6a565b610823565b6040516102be9190612aa6565b60405180910390f35b6102e160048036038101906102dc9190612ac1565b610843565b005b6102fd60048036038101906102f8919061286e565b610864565b60405161030a91906128bd565b60405180910390f35b61032d60048036038101906103289190612ac1565b610909565b005b610349600480360381019061034491906129e1565b61098c565b005b6103656004803603810190610360919061298a565b6109ac565b60405161037291906128bd565b60405180910390f35b61039560048036038101906103909190612c36565b610a1d565b005b6103b160048036038101906103ac919061298a565b610aa0565b6040516103be91906129c6565b60405180910390f35b6103e160048036038101906103dc9190612c7f565b610b51565b6040516103ee91906128bd565b60405180910390f35b610411600480360381019061040c9190612c7f565b610b7d565b60405161041e91906128bd565b60405180910390f35b61042f610c34565b60405161043c9190612aa6565b60405180910390f35b61045f600480360381019061045a9190612ac1565b610c58565b60405161046c91906127bf565b60405180910390f35b61047d610cc3565b60405161048a9190612968565b60405180910390f35b61049b610d55565b6040516104a89190612aa6565b60405180910390f35b6104cb60048036038101906104c69190612cd8565b610d5c565b005b6104e760048036038101906104e29190612db9565b610d72565b005b61050360048036038101906104fe919061298a565b610dd4565b6040516105109190612968565b60405180910390f35b610533600480360381019061052e9190612ac1565b610de6565b005b61054f600480360381019061054a9190612e3c565b610e07565b60405161055c91906127bf565b60405180910390f35b600061057082610eb1565b9050919050565b600080600090505b828110156105bd576000610593600d610f2b565b905061059f8582610f39565b6105a9600d610e9b565b5080806105b590612eab565b91505061057f565b5081905092915050565b6060600080546105d690612f22565b80601f016020809104026020016040519081016040528092919081815260200182805461060290612f22565b801561064f5780601f106106245761010080835404028352916020019161064f565b820191906000526020600020905b81548152906001019060200180831161063257829003601f168201915b5050505050905090565b600061066482611112565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006106aa82610aa0565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361071a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071190612fc5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661073961115d565b73ffffffffffffffffffffffffffffffffffffffff16148061076857506107678161076261115d565b610e07565b5b6107a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079e90613057565b60405180910390fd5b6107b18383611165565b505050565b6000600880549050905090565b6107d46107ce61115d565b8261121e565b610813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080a906130e9565b60405180910390fd5b61081e8383836112b3565b505050565b6000600b6000838152602001908152602001600020600101549050919050565b61084c82610823565b61085581611519565b61085f838361152d565b505050565b600061086f83610b7d565b82106108b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a79061317b565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b61091161115d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461097e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109759061320d565b60405180910390fd5b610988828261160e565b5050565b6109a783838360405180602001604052806000815250610d72565b505050565b60006109b66107b6565b82106109f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ee9061329f565b60405180910390fd5b60088281548110610a0b57610a0a6132bf565b5b90600052602060002001549050919050565b610a4e7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610a4961115d565b610c58565b610a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8490613360565b60405180910390fd5b80600c9081610a9c919061352c565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3f9061364a565b60405180910390fd5b80915050919050565b600080610b5e600d610f2b565b9050610b6a8382610f39565b610b74600d610e9b565b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be4906136dc565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b6000600b600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060018054610cd290612f22565b80601f0160208091040260200160405190810160405280929190818152602001828054610cfe90612f22565b8015610d4b5780601f10610d2057610100808354040283529160200191610d4b565b820191906000526020600020905b815481529060010190602001808311610d2e57829003601f168201915b5050505050905090565b6000801b81565b610d6e610d6761115d565b83836116f0565b5050565b610d83610d7d61115d565b8361121e565b610dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db9906130e9565b60405180910390fd5b610dce8484848461185c565b50505050565b6060610ddf826118b8565b9050919050565b610def82610823565b610df881611519565b610e02838361160e565b505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6001816000016000828254019250508190555050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610f245750610f23826119ca565b5b9050919050565b600081600001549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9f90613748565b60405180910390fd5b610fb181611a44565b15610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe8906137b4565b60405180910390fd5b610ffd60008383611ab0565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461104d91906137d4565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461110e60008383611ac0565b5050565b61111b81611a44565b61115a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111519061364a565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166111d883610aa0565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061122a83610aa0565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061126c575061126b8185610e07565b5b806112aa57508373ffffffffffffffffffffffffffffffffffffffff1661129284610659565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166112d382610aa0565b73ffffffffffffffffffffffffffffffffffffffff1614611329576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113209061387a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138f9061390c565b60405180910390fd5b6113a3838383611ab0565b6113ae600082611165565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113fe919061392c565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461145591906137d4565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611514838383611ac0565b505050565b61152a8161152561115d565b611ac5565b50565b6115378282610c58565b61160a576001600b600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506115af61115d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6116188282610c58565b156116ec576000600b600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061169161115d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361175e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611755906139ac565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161184f91906127bf565b60405180910390a3505050565b6118678484846112b3565b61187384848484611b62565b6118b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a990613a3e565b60405180910390fd5b50505050565b60606118c382611112565b6000600a600084815260200190815260200160002080546118e390612f22565b80601f016020809104026020016040519081016040528092919081815260200182805461190f90612f22565b801561195c5780601f106119315761010080835404028352916020019161195c565b820191906000526020600020905b81548152906001019060200180831161193f57829003601f168201915b50505050509050600061196d611ce9565b905060008151036119825781925050506119c5565b6000825111156119b757808260405160200161199f929190613a9a565b604051602081830303815290604052925050506119c5565b6119c084611d7b565b925050505b919050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611a3d5750611a3c82611de3565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b611abb838383611ec5565b505050565b505050565b611acf8282610c58565b611b5e57611af48173ffffffffffffffffffffffffffffffffffffffff166014611fd7565b611b028360001c6020611fd7565b604051602001611b13929190613b56565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b559190612968565b60405180910390fd5b5050565b6000611b838473ffffffffffffffffffffffffffffffffffffffff16612213565b15611cdc578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611bac61115d565b8786866040518563ffffffff1660e01b8152600401611bce9493929190613be5565b6020604051808303816000875af1925050508015611c0a57506040513d601f19601f82011682018060405250810190611c079190613c46565b60015b611c8c573d8060008114611c3a576040519150601f19603f3d011682016040523d82523d6000602084013e611c3f565b606091505b506000815103611c84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7b90613a3e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611ce1565b600190505b949350505050565b6060600c8054611cf890612f22565b80601f0160208091040260200160405190810160405280929190818152602001828054611d2490612f22565b8015611d715780601f10611d4657610100808354040283529160200191611d71565b820191906000526020600020905b815481529060010190602001808311611d5457829003601f168201915b5050505050905090565b6060611d8682611112565b6000611d90611ce9565b90506000815111611db05760405180602001604052806000815250611ddb565b80611dba84612236565b604051602001611dcb929190613a9a565b6040516020818303038152906040525b915050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611eae57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611ebe5750611ebd82612396565b5b9050919050565b611ed0838383612400565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f1257611f0d81612405565b611f51565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611f5057611f4f838261244e565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f9357611f8e816125bb565b611fd2565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611fd157611fd0828261268c565b5b5b505050565b606060006002836002611fea9190613c73565b611ff491906137d4565b67ffffffffffffffff81111561200d5761200c612b0b565b5b6040519080825280601f01601f19166020018201604052801561203f5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612077576120766132bf565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106120db576120da6132bf565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261211b9190613c73565b61212591906137d4565b90505b60018111156121c5577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110612167576121666132bf565b5b1a60f81b82828151811061217e5761217d6132bf565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806121be90613cb5565b9050612128565b5060008414612209576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220090613d2a565b60405180910390fd5b8091505092915050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60606000820361227d576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612391565b600082905060005b600082146122af57808061229890612eab565b915050600a826122a89190613d79565b9150612285565b60008167ffffffffffffffff8111156122cb576122ca612b0b565b5b6040519080825280601f01601f1916602001820160405280156122fd5781602001600182028036833780820191505090505b5090505b6000851461238a57600182612316919061392c565b9150600a856123259190613daa565b603061233191906137d4565b60f81b818381518110612347576123466132bf565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856123839190613d79565b9450612301565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161245b84610b7d565b612465919061392c565b905060006007600084815260200190815260200160002054905081811461254a576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506125cf919061392c565b90506000600960008481526020019081526020016000205490506000600883815481106125ff576125fe6132bf565b5b906000526020600020015490508060088381548110612621576126206132bf565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806126705761266f613ddb565b5b6001900381819060005260206000200160009055905550505050565b600061269783610b7d565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6127548161271f565b811461275f57600080fd5b50565b6000813590506127718161274b565b92915050565b60006020828403121561278d5761278c612715565b5b600061279b84828501612762565b91505092915050565b60008115159050919050565b6127b9816127a4565b82525050565b60006020820190506127d460008301846127b0565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612805826127da565b9050919050565b612815816127fa565b811461282057600080fd5b50565b6000813590506128328161280c565b92915050565b6000819050919050565b61284b81612838565b811461285657600080fd5b50565b60008135905061286881612842565b92915050565b6000806040838503121561288557612884612715565b5b600061289385828601612823565b92505060206128a485828601612859565b9150509250929050565b6128b781612838565b82525050565b60006020820190506128d260008301846128ae565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129125780820151818401526020810190506128f7565b60008484015250505050565b6000601f19601f8301169050919050565b600061293a826128d8565b61294481856128e3565b93506129548185602086016128f4565b61295d8161291e565b840191505092915050565b60006020820190508181036000830152612982818461292f565b905092915050565b6000602082840312156129a05761299f612715565b5b60006129ae84828501612859565b91505092915050565b6129c0816127fa565b82525050565b60006020820190506129db60008301846129b7565b92915050565b6000806000606084860312156129fa576129f9612715565b5b6000612a0886828701612823565b9350506020612a1986828701612823565b9250506040612a2a86828701612859565b9150509250925092565b6000819050919050565b612a4781612a34565b8114612a5257600080fd5b50565b600081359050612a6481612a3e565b92915050565b600060208284031215612a8057612a7f612715565b5b6000612a8e84828501612a55565b91505092915050565b612aa081612a34565b82525050565b6000602082019050612abb6000830184612a97565b92915050565b60008060408385031215612ad857612ad7612715565b5b6000612ae685828601612a55565b9250506020612af785828601612823565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b438261291e565b810181811067ffffffffffffffff82111715612b6257612b61612b0b565b5b80604052505050565b6000612b7561270b565b9050612b818282612b3a565b919050565b600067ffffffffffffffff821115612ba157612ba0612b0b565b5b612baa8261291e565b9050602081019050919050565b82818337600083830152505050565b6000612bd9612bd484612b86565b612b6b565b905082815260208101848484011115612bf557612bf4612b06565b5b612c00848285612bb7565b509392505050565b600082601f830112612c1d57612c1c612b01565b5b8135612c2d848260208601612bc6565b91505092915050565b600060208284031215612c4c57612c4b612715565b5b600082013567ffffffffffffffff811115612c6a57612c6961271a565b5b612c7684828501612c08565b91505092915050565b600060208284031215612c9557612c94612715565b5b6000612ca384828501612823565b91505092915050565b612cb5816127a4565b8114612cc057600080fd5b50565b600081359050612cd281612cac565b92915050565b60008060408385031215612cef57612cee612715565b5b6000612cfd85828601612823565b9250506020612d0e85828601612cc3565b9150509250929050565b600067ffffffffffffffff821115612d3357612d32612b0b565b5b612d3c8261291e565b9050602081019050919050565b6000612d5c612d5784612d18565b612b6b565b905082815260208101848484011115612d7857612d77612b06565b5b612d83848285612bb7565b509392505050565b600082601f830112612da057612d9f612b01565b5b8135612db0848260208601612d49565b91505092915050565b60008060008060808587031215612dd357612dd2612715565b5b6000612de187828801612823565b9450506020612df287828801612823565b9350506040612e0387828801612859565b925050606085013567ffffffffffffffff811115612e2457612e2361271a565b5b612e3087828801612d8b565b91505092959194509250565b60008060408385031215612e5357612e52612715565b5b6000612e6185828601612823565b9250506020612e7285828601612823565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612eb682612838565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ee857612ee7612e7c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f3a57607f821691505b602082108103612f4d57612f4c612ef3565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612faf6021836128e3565b9150612fba82612f53565b604082019050919050565b60006020820190508181036000830152612fde81612fa2565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b6000613041603e836128e3565b915061304c82612fe5565b604082019050919050565b6000602082019050818103600083015261307081613034565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b60006130d3602e836128e3565b91506130de82613077565b604082019050919050565b60006020820190508181036000830152613102816130c6565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000613165602b836128e3565b915061317082613109565b604082019050919050565b6000602082019050818103600083015261319481613158565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b60006131f7602f836128e3565b91506132028261319b565b604082019050919050565b60006020820190508181036000830152613226816131ea565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000613289602c836128e3565b91506132948261322d565b604082019050919050565b600060208201905081810360008301526132b88161327c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f52656464696f47656e6572616c3732313a206d75737420686176652061646d6960008201527f6e20726f6c650000000000000000000000000000000000000000000000000000602082015250565b600061334a6026836128e3565b9150613355826132ee565b604082019050919050565b600060208201905081810360008301526133798161333d565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026133e27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826133a5565b6133ec86836133a5565b95508019841693508086168417925050509392505050565b6000819050919050565b600061342961342461341f84612838565b613404565b612838565b9050919050565b6000819050919050565b6134438361340e565b61345761344f82613430565b8484546133b2565b825550505050565b600090565b61346c61345f565b61347781848461343a565b505050565b5b8181101561349b57613490600082613464565b60018101905061347d565b5050565b601f8211156134e0576134b181613380565b6134ba84613395565b810160208510156134c9578190505b6134dd6134d585613395565b83018261347c565b50505b505050565b600082821c905092915050565b6000613503600019846008026134e5565b1980831691505092915050565b600061351c83836134f2565b9150826002028217905092915050565b613535826128d8565b67ffffffffffffffff81111561354e5761354d612b0b565b5b6135588254612f22565b61356382828561349f565b600060209050601f8311600181146135965760008415613584578287015190505b61358e8582613510565b8655506135f6565b601f1984166135a486613380565b60005b828110156135cc578489015182556001820191506020850194506020810190506135a7565b868310156135e957848901516135e5601f8916826134f2565b8355505b6001600288020188555050505b505050505050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b60006136346018836128e3565b915061363f826135fe565b602082019050919050565b6000602082019050818103600083015261366381613627565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006136c66029836128e3565b91506136d18261366a565b604082019050919050565b600060208201905081810360008301526136f5816136b9565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006137326020836128e3565b915061373d826136fc565b602082019050919050565b6000602082019050818103600083015261376181613725565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061379e601c836128e3565b91506137a982613768565b602082019050919050565b600060208201905081810360008301526137cd81613791565b9050919050565b60006137df82612838565b91506137ea83612838565b925082820190508082111561380257613801612e7c565b5b92915050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006138646025836128e3565b915061386f82613808565b604082019050919050565b6000602082019050818103600083015261389381613857565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006138f66024836128e3565b91506139018261389a565b604082019050919050565b60006020820190508181036000830152613925816138e9565b9050919050565b600061393782612838565b915061394283612838565b925082820390508181111561395a57613959612e7c565b5b92915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006139966019836128e3565b91506139a182613960565b602082019050919050565b600060208201905081810360008301526139c581613989565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613a286032836128e3565b9150613a33826139cc565b604082019050919050565b60006020820190508181036000830152613a5781613a1b565b9050919050565b600081905092915050565b6000613a74826128d8565b613a7e8185613a5e565b9350613a8e8185602086016128f4565b80840191505092915050565b6000613aa68285613a69565b9150613ab28284613a69565b91508190509392505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613af4601783613a5e565b9150613aff82613abe565b601782019050919050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613b40601183613a5e565b9150613b4b82613b0a565b601182019050919050565b6000613b6182613ae7565b9150613b6d8285613a69565b9150613b7882613b33565b9150613b848284613a69565b91508190509392505050565b600081519050919050565b600082825260208201905092915050565b6000613bb782613b90565b613bc18185613b9b565b9350613bd18185602086016128f4565b613bda8161291e565b840191505092915050565b6000608082019050613bfa60008301876129b7565b613c0760208301866129b7565b613c1460408301856128ae565b8181036060830152613c268184613bac565b905095945050505050565b600081519050613c408161274b565b92915050565b600060208284031215613c5c57613c5b612715565b5b6000613c6a84828501613c31565b91505092915050565b6000613c7e82612838565b9150613c8983612838565b9250828202613c9781612838565b91508282048414831517613cae57613cad612e7c565b5b5092915050565b6000613cc082612838565b915060008203613cd357613cd2612e7c565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000613d146020836128e3565b9150613d1f82613cde565b602082019050919050565b60006020820190508181036000830152613d4381613d07565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d8482612838565b9150613d8f83612838565b925082613d9f57613d9e613d4a565b5b828204905092915050565b6000613db582612838565b9150613dc083612838565b925082613dd057613dcf613d4a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220f80e94e61d95a6e20727b0329001fbd9ed008f50922010c9a7c01110b3f5d26264736f6c6343000811003368747470733a2f2f6d657461646174612e72656464696f2e636f6d2f6170692f746f6b656e732f