{
    "_format": "hh-sol-artifact-1",
    "contractName": "RemovalTestHarness",
    "sourceName": "contracts/test/RemovalIdLibTestHarness.sol",
    "abi": [
        {
            "inputs": [
                {
                    "internalType": "uint8",
                    "name": "methodology",
                    "type": "uint8"
                }
            ],
            "name": "MethodologyTooLarge",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "uint8",
                    "name": "methodologyVersion",
                    "type": "uint8"
                }
            ],
            "name": "MethodologyVersionTooLarge",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes2",
                    "name": "country",
                    "type": "bytes2"
                },
                {
                    "internalType": "bytes2",
                    "name": "subdivision",
                    "type": "bytes2"
                }
            ],
            "name": "UncapitalizedString",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "uint8",
                    "name": "idVersion",
                    "type": "uint8"
                }
            ],
            "name": "UnsupportedIdVersion",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "components": [
                        {
                            "internalType": "uint8",
                            "name": "idVersion",
                            "type": "uint8"
                        },
                        {
                            "internalType": "uint8",
                            "name": "methodology",
                            "type": "uint8"
                        },
                        {
                            "internalType": "uint8",
                            "name": "methodologyVersion",
                            "type": "uint8"
                        },
                        {
                            "internalType": "uint16",
                            "name": "vintage",
                            "type": "uint16"
                        },
                        {
                            "internalType": "bytes2",
                            "name": "country",
                            "type": "bytes2"
                        },
                        {
                            "internalType": "bytes2",
                            "name": "subdivision",
                            "type": "bytes2"
                        },
                        {
                            "internalType": "address",
                            "name": "supplierAddress",
                            "type": "address"
                        },
                        {
                            "internalType": "uint32",
                            "name": "subIdentifier",
                            "type": "uint32"
                        }
                    ],
                    "internalType": "struct DecodedRemovalIdV0",
                    "name": "removalData",
                    "type": "tuple"
                }
            ],
            "name": "createRemovalId",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "removalId",
                    "type": "uint256"
                }
            ],
            "name": "decodeRemovalIdV0",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "uint8",
                            "name": "idVersion",
                            "type": "uint8"
                        },
                        {
                            "internalType": "uint8",
                            "name": "methodology",
                            "type": "uint8"
                        },
                        {
                            "internalType": "uint8",
                            "name": "methodologyVersion",
                            "type": "uint8"
                        },
                        {
                            "internalType": "uint16",
                            "name": "vintage",
                            "type": "uint16"
                        },
                        {
                            "internalType": "bytes2",
                            "name": "country",
                            "type": "bytes2"
                        },
                        {
                            "internalType": "bytes2",
                            "name": "subdivision",
                            "type": "bytes2"
                        },
                        {
                            "internalType": "address",
                            "name": "supplierAddress",
                            "type": "address"
                        },
                        {
                            "internalType": "uint32",
                            "name": "subIdentifier",
                            "type": "uint32"
                        }
                    ],
                    "internalType": "struct DecodedRemovalIdV0",
                    "name": "",
                    "type": "tuple"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        }
    ],
    "bytecode": "0x608060405234801561001057600080fd5b50610d52806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806342c6281d1461003b578063898a2b3f1461006b575b600080fd5b61005560048036038101906100509190610649565b61009b565b60405161006291906107ec565b60405180910390f35b61008560048036038101906100809190610a3f565b6100b3565b6040516100929190610a7c565b60405180910390f35b6100a3610554565b6100ac826100c5565b9050919050565b60006100be826101b9565b9050919050565b6100cd610554565b6040518061010001604052806100e2846102ab565b60ff1681526020016100f3846102c1565b60ff168152602001610104846102db565b60ff168152602001610115846102f4565b61ffff1681526020016101278461030a565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200161015684610323565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020016101858461033c565b73ffffffffffffffffffffffffffffffffffffffff1681526020016101a984610352565b63ffffffff168152509050919050565b60006101c482610368565b600082604001516004846020015160ff16901b1760ff169050600860006101eb9190610ac6565b8360e0015163ffffffff16901b600860046102069190610ac6565b8460c0015173ffffffffffffffffffffffffffffffffffffffff16901b600860186102319190610ac6565b8560a0015160f01c61ffff16901b6008601a61024d9190610ac6565b866080015160f01c61ffff16901b6008601c6102699190610ac6565b876060015161ffff16901b6008601e6102829190610ac6565b86901b6008601f6102939190610ac6565b896000015160ff16901b171717171717915050919050565b60006102ba826001601f6104ca565b9050919050565b600060046102d2836001601e6104ca565b901c9050919050565b6000600f6102ec836001601e6104ca565b169050919050565b6000610303826002601c6104ca565b9050919050565b6000610319826002601a6104ca565b60f01b9050919050565b600061033282600260186104ca565b60f01b9050919050565b600061034b82601460046104ca565b9050919050565b600061036182600460006104ca565b9050919050565b6000816000015160ff16146103b85780600001516040517ff981da6c0000000000000000000000000000000000000000000000000000000081526004016103af9190610b17565b60405180910390fd5b600f816040015160ff1611156104095780604001516040517f4962a53a0000000000000000000000000000000000000000000000000000000081526004016104009190610b17565b60405180910390fd5b600f816020015160ff16111561045a5780602001516040517f46ac6e0f0000000000000000000000000000000000000000000000000000000081526004016104519190610b17565b60405180910390fd5b610467816080015161052e565b801561047c575061047b8160a0015161052e565b5b6104c75780608001518160a001516040517f81036ebb0000000000000000000000000000000000000000000000000000000081526004016104be929190610b41565b60405180910390fd5b50565b6000806008836104da9190610ac6565b60016008866104e99190610ac6565b60026104f59190610c9d565b6104ff9190610ce8565b60001b901b90506000818660001b16905060088461051d9190610ac6565b81901c60001c925050509392505050565b60008160001a8260011a60408111605b82101660408311605b8410161692505050919050565b604051806101000160405280600060ff168152602001600060ff168152602001600060ff168152602001600061ffff16815260200160007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200160007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600063ffffffff1681525090565b6000604051905090565b600080fd5b6000819050919050565b61062681610613565b811461063157600080fd5b50565b6000813590506106438161061d565b92915050565b60006020828403121561065f5761065e61060e565b5b600061066d84828501610634565b91505092915050565b600060ff82169050919050565b61068c81610676565b82525050565b600061ffff82169050919050565b6106a981610692565b82525050565b60007fffff00000000000000000000000000000000000000000000000000000000000082169050919050565b6106e4816106af565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610715826106ea565b9050919050565b6107258161070a565b82525050565b600063ffffffff82169050919050565b6107448161072b565b82525050565b610100820160008201516107616000850182610683565b5060208201516107746020850182610683565b5060408201516107876040850182610683565b50606082015161079a60608501826106a0565b5060808201516107ad60808501826106db565b5060a08201516107c060a08501826106db565b5060c08201516107d360c085018261071c565b5060e08201516107e660e085018261073b565b50505050565b600061010082019050610802600083018461074a565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6108568261080d565b810181811067ffffffffffffffff821117156108755761087461081e565b5b80604052505050565b6000610888610604565b9050610894828261084d565b919050565b6108a281610676565b81146108ad57600080fd5b50565b6000813590506108bf81610899565b92915050565b6108ce81610692565b81146108d957600080fd5b50565b6000813590506108eb816108c5565b92915050565b6108fa816106af565b811461090557600080fd5b50565b600081359050610917816108f1565b92915050565b6109268161070a565b811461093157600080fd5b50565b6000813590506109438161091d565b92915050565b6109528161072b565b811461095d57600080fd5b50565b60008135905061096f81610949565b92915050565b6000610100828403121561098c5761098b610808565b5b61099761010061087e565b905060006109a7848285016108b0565b60008301525060206109bb848285016108b0565b60208301525060406109cf848285016108b0565b60408301525060606109e3848285016108dc565b60608301525060806109f784828501610908565b60808301525060a0610a0b84828501610908565b60a08301525060c0610a1f84828501610934565b60c08301525060e0610a3384828501610960565b60e08301525092915050565b60006101008284031215610a5657610a5561060e565b5b6000610a6484828501610975565b91505092915050565b610a7681610613565b82525050565b6000602082019050610a916000830184610a6d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ad182610613565b9150610adc83610613565b9250828202610aea81610613565b91508282048414831517610b0157610b00610a97565b5b5092915050565b610b1181610676565b82525050565b6000602082019050610b2c6000830184610b08565b92915050565b610b3b816106af565b82525050565b6000604082019050610b566000830185610b32565b610b636020830184610b32565b9392505050565b60008160011c9050919050565b6000808291508390505b6001851115610bc157808604811115610b9d57610b9c610a97565b5b6001851615610bac5780820291505b8081029050610bba85610b6a565b9450610b81565b94509492505050565b600082610bda5760019050610c96565b81610be85760009050610c96565b8160018114610bfe5760028114610c0857610c37565b6001915050610c96565b60ff841115610c1a57610c19610a97565b5b8360020a915084821115610c3157610c30610a97565b5b50610c96565b5060208310610133831016604e8410600b8410161715610c6c5782820a905083811115610c6757610c66610a97565b5b610c96565b610c798484846001610b77565b92509050818404811115610c9057610c8f610a97565b5b81810290505b9392505050565b6000610ca882610613565b9150610cb383610613565b9250610ce07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610bca565b905092915050565b6000610cf382610613565b9150610cfe83610613565b9250828203905081811115610d1657610d15610a97565b5b9291505056fea26469706673582212209fdc6c6170941d723651584ad66ba670071c25975ab4a384e73f3ce2fc5cedd164736f6c63430008110033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806342c6281d1461003b578063898a2b3f1461006b575b600080fd5b61005560048036038101906100509190610649565b61009b565b60405161006291906107ec565b60405180910390f35b61008560048036038101906100809190610a3f565b6100b3565b6040516100929190610a7c565b60405180910390f35b6100a3610554565b6100ac826100c5565b9050919050565b60006100be826101b9565b9050919050565b6100cd610554565b6040518061010001604052806100e2846102ab565b60ff1681526020016100f3846102c1565b60ff168152602001610104846102db565b60ff168152602001610115846102f4565b61ffff1681526020016101278461030a565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200161015684610323565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020016101858461033c565b73ffffffffffffffffffffffffffffffffffffffff1681526020016101a984610352565b63ffffffff168152509050919050565b60006101c482610368565b600082604001516004846020015160ff16901b1760ff169050600860006101eb9190610ac6565b8360e0015163ffffffff16901b600860046102069190610ac6565b8460c0015173ffffffffffffffffffffffffffffffffffffffff16901b600860186102319190610ac6565b8560a0015160f01c61ffff16901b6008601a61024d9190610ac6565b866080015160f01c61ffff16901b6008601c6102699190610ac6565b876060015161ffff16901b6008601e6102829190610ac6565b86901b6008601f6102939190610ac6565b896000015160ff16901b171717171717915050919050565b60006102ba826001601f6104ca565b9050919050565b600060046102d2836001601e6104ca565b901c9050919050565b6000600f6102ec836001601e6104ca565b169050919050565b6000610303826002601c6104ca565b9050919050565b6000610319826002601a6104ca565b60f01b9050919050565b600061033282600260186104ca565b60f01b9050919050565b600061034b82601460046104ca565b9050919050565b600061036182600460006104ca565b9050919050565b6000816000015160ff16146103b85780600001516040517ff981da6c0000000000000000000000000000000000000000000000000000000081526004016103af9190610b17565b60405180910390fd5b600f816040015160ff1611156104095780604001516040517f4962a53a0000000000000000000000000000000000000000000000000000000081526004016104009190610b17565b60405180910390fd5b600f816020015160ff16111561045a5780602001516040517f46ac6e0f0000000000000000000000000000000000000000000000000000000081526004016104519190610b17565b60405180910390fd5b610467816080015161052e565b801561047c575061047b8160a0015161052e565b5b6104c75780608001518160a001516040517f81036ebb0000000000000000000000000000000000000000000000000000000081526004016104be929190610b41565b60405180910390fd5b50565b6000806008836104da9190610ac6565b60016008866104e99190610ac6565b60026104f59190610c9d565b6104ff9190610ce8565b60001b901b90506000818660001b16905060088461051d9190610ac6565b81901c60001c925050509392505050565b60008160001a8260011a60408111605b82101660408311605b8410161692505050919050565b604051806101000160405280600060ff168152602001600060ff168152602001600060ff168152602001600061ffff16815260200160007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200160007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600063ffffffff1681525090565b6000604051905090565b600080fd5b6000819050919050565b61062681610613565b811461063157600080fd5b50565b6000813590506106438161061d565b92915050565b60006020828403121561065f5761065e61060e565b5b600061066d84828501610634565b91505092915050565b600060ff82169050919050565b61068c81610676565b82525050565b600061ffff82169050919050565b6106a981610692565b82525050565b60007fffff00000000000000000000000000000000000000000000000000000000000082169050919050565b6106e4816106af565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610715826106ea565b9050919050565b6107258161070a565b82525050565b600063ffffffff82169050919050565b6107448161072b565b82525050565b610100820160008201516107616000850182610683565b5060208201516107746020850182610683565b5060408201516107876040850182610683565b50606082015161079a60608501826106a0565b5060808201516107ad60808501826106db565b5060a08201516107c060a08501826106db565b5060c08201516107d360c085018261071c565b5060e08201516107e660e085018261073b565b50505050565b600061010082019050610802600083018461074a565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6108568261080d565b810181811067ffffffffffffffff821117156108755761087461081e565b5b80604052505050565b6000610888610604565b9050610894828261084d565b919050565b6108a281610676565b81146108ad57600080fd5b50565b6000813590506108bf81610899565b92915050565b6108ce81610692565b81146108d957600080fd5b50565b6000813590506108eb816108c5565b92915050565b6108fa816106af565b811461090557600080fd5b50565b600081359050610917816108f1565b92915050565b6109268161070a565b811461093157600080fd5b50565b6000813590506109438161091d565b92915050565b6109528161072b565b811461095d57600080fd5b50565b60008135905061096f81610949565b92915050565b6000610100828403121561098c5761098b610808565b5b61099761010061087e565b905060006109a7848285016108b0565b60008301525060206109bb848285016108b0565b60208301525060406109cf848285016108b0565b60408301525060606109e3848285016108dc565b60608301525060806109f784828501610908565b60808301525060a0610a0b84828501610908565b60a08301525060c0610a1f84828501610934565b60c08301525060e0610a3384828501610960565b60e08301525092915050565b60006101008284031215610a5657610a5561060e565b5b6000610a6484828501610975565b91505092915050565b610a7681610613565b82525050565b6000602082019050610a916000830184610a6d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ad182610613565b9150610adc83610613565b9250828202610aea81610613565b91508282048414831517610b0157610b00610a97565b5b5092915050565b610b1181610676565b82525050565b6000602082019050610b2c6000830184610b08565b92915050565b610b3b816106af565b82525050565b6000604082019050610b566000830185610b32565b610b636020830184610b32565b9392505050565b60008160011c9050919050565b6000808291508390505b6001851115610bc157808604811115610b9d57610b9c610a97565b5b6001851615610bac5780820291505b8081029050610bba85610b6a565b9450610b81565b94509492505050565b600082610bda5760019050610c96565b81610be85760009050610c96565b8160018114610bfe5760028114610c0857610c37565b6001915050610c96565b60ff841115610c1a57610c19610a97565b5b8360020a915084821115610c3157610c30610a97565b5b50610c96565b5060208310610133831016604e8410600b8410161715610c6c5782820a905083811115610c6757610c66610a97565b5b610c96565b610c798484846001610b77565b92509050818404811115610c9057610c8f610a97565b5b81810290505b9392505050565b6000610ca882610613565b9150610cb383610613565b9250610ce07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610bca565b905092915050565b6000610cf382610613565b9150610cfe83610613565b9250828203905081811115610d1657610d15610a97565b5b9291505056fea26469706673582212209fdc6c6170941d723651584ad66ba670071c25975ab4a384e73f3ce2fc5cedd164736f6c63430008110033",
    "linkReferences": {},
    "deployedLinkReferences": {}
}
