{
  "_format": "hh-sol-artifact-1",
  "contractName": "ERC20BatchTransfersFacet",
  "sourceName": "contracts/token/ERC20/facets/ERC20BatchTransfersFacet.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IForwarderRegistry",
          "name": "forwarderRegistry",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "ERC20ApprovalToAddressZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20BatchTransferValuesOverflow",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "allowance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "decrement",
          "type": "uint256"
        }
      ],
      "name": "ERC20InsufficientAllowance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "ERC20InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "ERC20TransferToAddressZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "IllegalInterfaceId",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InconsistentArrayLengths",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NotProxyAdmin",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "recipients",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "batchTransfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "recipients",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "batchTransferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "initERC20BatchTransfersStorage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a034606657601f610cc838819003918201601f19168301916001600160401b03831184841017606b57808492602094604052833981010312606657516001600160a01b0381168103606657608052604051610c469081610082823960805181610a830152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b60003560e01c80634885b2541461022c57806388d695b21461017c5763c30f1be11461003d57600080fd5b346101775760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017757610074610a6c565b73ffffffffffffffffffffffffffffffffffffffff807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035416911690810361014a577fc05327e6000000000000000000000000000000000000000000000000000000006000527fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d6020527f27d9344430097694b44c54daae5d82db951e70f450202e98a31fb7e512b2167480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055005b7f673a31a10000000000000000000000000000000000000000000000000000000060005260045260246000fd5b600080fd5b346101775760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101775760043567ffffffffffffffff8111610177576101cb9036906004016102f2565b6024359167ffffffffffffffff8311610177576101ef6102219336906004016102f2565b9290917f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee61021b610a6c565b9061080b565b602060405160018152f35b346101775760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101775760043573ffffffffffffffffffffffffffffffffffffffff811681036101775760243567ffffffffffffffff81116101775761029b9036906004016102f2565b916044359267ffffffffffffffff8411610177576102c06102219436906004016102f2565b9390927f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee6102ec610a6c565b90610383565b9181601f840112156101775782359167ffffffffffffffff8311610177576020808501948460051b01011161017757565b91908110156103335760051b0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b3573ffffffffffffffffffffffffffffffffffffffff811681036101775790565b9490929195938481036107e15780156107d85773ffffffffffffffffffffffffffffffffffffffff8716600052856020526040600020549160009560009260005b81811061054f575050505050505073ffffffffffffffffffffffffffffffffffffffff8091169316918383036103fb575b50505050565b8315610521576001018260005280602052604060002084600052602052604060002054917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83141580610518575b610484575b505060207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591604051908152a3388080806103f5565b80830392808410156104d55750507f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916020918460005282526040600020856000528252806040600020559161044e565b608491859187604051937f137ad6ab0000000000000000000000000000000000000000000000000000000085526004850152602484015260448301526064820152fd5b50801515610449565b827ff7e1ac0f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff61057761057283858b610323565b610362565b16801561079457610589828587610323565b358c81610654575b907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef73ffffffffffffffffffffffffffffffffffffffff6020949316938492604051908152a38915158061064a575b6105ee575b506001016103c4565b898703908782101561061457600090815260208c905260409020908601905560016105e5565b878b917fe450d38c0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b50858a14156105e0565b50998a81019081111561076a57998c8c73ffffffffffffffffffffffffffffffffffffffff82168481146106dc575073ffffffffffffffffffffffffffffffffffffffff602094939260407fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef936000908782528852208481540190555b929394505050610591565b915050888293949596979892116107345750810195949392916020917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef73ffffffffffffffffffffffffffffffffffffffff8f6106d1565b8891507fe450d38c0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b7fdedd83410000000000000000000000000000000000000000000000000000000060005260046000fd5b73ffffffffffffffffffffffffffffffffffffffff8c7f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b50505050505050565b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fd5b92939490918185036107e1578415610a645773ffffffffffffffffffffffffffffffffffffffff8316600052836020526040600020549560009260009660005b8181106108fd575050505050801515806108f3575b61086c575b5050505050565b80850394808610156108a957505073ffffffffffffffffffffffffffffffffffffffff166000526020526040600020910190553880808080610865565b73ffffffffffffffffffffffffffffffffffffffff837fe450d38c000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b5083811415610860565b73ffffffffffffffffffffffffffffffffffffffff610920610572838589610323565b168015610a2057610932828587610323565b3580610986575b90600192916040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602073ffffffffffffffffffffffffffffffffffffffff8c1692a30161084b565b968781019081111561076a579673ffffffffffffffffffffffffffffffffffffffff89168281146109d357509060019291604060008381528c602052208181540190555b90919250610939565b8c829c92116109ea5750908a60019392019a6109ca565b8c8c917fe450d38c0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b73ffffffffffffffffffffffffffffffffffffffff887f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b505050505050565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168015610c01573233148015610c06575b610c01577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115610af7575b50610af457503390565b90565b60649150602090604051928380927f019a20280000000000000000000000000000000000000000000000000000000082528660048301523360248301523060448301525afa908115610bf557600091610b52575b5038610aea565b60203d602011610bee575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f820116820182811067ffffffffffffffff821117610bc157602091839160405281010312610bbd5751908115158203610bba575038610b4b565b80fd5b5080fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b503d610b5d565b6040513d6000823e3d90fd5b503390565b5060183610610ab356fea2646970667358221220b1ec434de461881bed53082dca43092ef5dcb479172526b9d11af754550efb9764736f6c634300081e0033",
  "deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c80634885b2541461022c57806388d695b21461017c5763c30f1be11461003d57600080fd5b346101775760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017757610074610a6c565b73ffffffffffffffffffffffffffffffffffffffff807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035416911690810361014a577fc05327e6000000000000000000000000000000000000000000000000000000006000527fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d6020527f27d9344430097694b44c54daae5d82db951e70f450202e98a31fb7e512b2167480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055005b7f673a31a10000000000000000000000000000000000000000000000000000000060005260045260246000fd5b600080fd5b346101775760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101775760043567ffffffffffffffff8111610177576101cb9036906004016102f2565b6024359167ffffffffffffffff8311610177576101ef6102219336906004016102f2565b9290917f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee61021b610a6c565b9061080b565b602060405160018152f35b346101775760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101775760043573ffffffffffffffffffffffffffffffffffffffff811681036101775760243567ffffffffffffffff81116101775761029b9036906004016102f2565b916044359267ffffffffffffffff8411610177576102c06102219436906004016102f2565b9390927f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee6102ec610a6c565b90610383565b9181601f840112156101775782359167ffffffffffffffff8311610177576020808501948460051b01011161017757565b91908110156103335760051b0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b3573ffffffffffffffffffffffffffffffffffffffff811681036101775790565b9490929195938481036107e15780156107d85773ffffffffffffffffffffffffffffffffffffffff8716600052856020526040600020549160009560009260005b81811061054f575050505050505073ffffffffffffffffffffffffffffffffffffffff8091169316918383036103fb575b50505050565b8315610521576001018260005280602052604060002084600052602052604060002054917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83141580610518575b610484575b505060207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591604051908152a3388080806103f5565b80830392808410156104d55750507f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916020918460005282526040600020856000528252806040600020559161044e565b608491859187604051937f137ad6ab0000000000000000000000000000000000000000000000000000000085526004850152602484015260448301526064820152fd5b50801515610449565b827ff7e1ac0f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff61057761057283858b610323565b610362565b16801561079457610589828587610323565b358c81610654575b907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef73ffffffffffffffffffffffffffffffffffffffff6020949316938492604051908152a38915158061064a575b6105ee575b506001016103c4565b898703908782101561061457600090815260208c905260409020908601905560016105e5565b878b917fe450d38c0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b50858a14156105e0565b50998a81019081111561076a57998c8c73ffffffffffffffffffffffffffffffffffffffff82168481146106dc575073ffffffffffffffffffffffffffffffffffffffff602094939260407fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef936000908782528852208481540190555b929394505050610591565b915050888293949596979892116107345750810195949392916020917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef73ffffffffffffffffffffffffffffffffffffffff8f6106d1565b8891507fe450d38c0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b7fdedd83410000000000000000000000000000000000000000000000000000000060005260046000fd5b73ffffffffffffffffffffffffffffffffffffffff8c7f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b50505050505050565b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fd5b92939490918185036107e1578415610a645773ffffffffffffffffffffffffffffffffffffffff8316600052836020526040600020549560009260009660005b8181106108fd575050505050801515806108f3575b61086c575b5050505050565b80850394808610156108a957505073ffffffffffffffffffffffffffffffffffffffff166000526020526040600020910190553880808080610865565b73ffffffffffffffffffffffffffffffffffffffff837fe450d38c000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b5083811415610860565b73ffffffffffffffffffffffffffffffffffffffff610920610572838589610323565b168015610a2057610932828587610323565b3580610986575b90600192916040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602073ffffffffffffffffffffffffffffffffffffffff8c1692a30161084b565b968781019081111561076a579673ffffffffffffffffffffffffffffffffffffffff89168281146109d357509060019291604060008381528c602052208181540190555b90919250610939565b8c829c92116109ea5750908a60019392019a6109ca565b8c8c917fe450d38c0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b73ffffffffffffffffffffffffffffffffffffffff887f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b505050505050565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168015610c01573233148015610c06575b610c01577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115610af7575b50610af457503390565b90565b60649150602090604051928380927f019a20280000000000000000000000000000000000000000000000000000000082528660048301523360248301523060448301525afa908115610bf557600091610b52575b5038610aea565b60203d602011610bee575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f820116820182811067ffffffffffffffff821117610bc157602091839160405281010312610bbd5751908115158203610bba575038610b4b565b80fd5b5080fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b503d610b5d565b6040513d6000823e3d90fd5b503390565b5060183610610ab356fea2646970667358221220b1ec434de461881bed53082dca43092ef5dcb479172526b9d11af754550efb9764736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
