We have switched to a new address format (UQ), if you want to return to the old one (EQ), use the switch at the bottom of the page
[X]
% Explorer > EQC4TdkCVwAf_xLoEKefWDsHHLRC-Mq-S1r76r24L_n8e-g8

Contract

AddressEQC4TdkCVwAf_xLoEKefWDsHHLRC-Mq-S1r76r24L_n8e-g8
ChainBasic Workchain
Contract TypeπŸ‘ Verfied source
Contract Code HashFzP3n0fSSih6OjK52QY4r6xbZ5cKrEIV8TeDIRWSi+o=

verifier.ton.org verification

View code

Source Code

{-
    math.func   

    Extends FunC's arithmetic operations.
-}
int equal_slices (slice a, slice b) asm "SDEQ";

(int) sqrt(int x) inline {
  if (x == 0){
    return 0;
  } else {
    if (x <= 3) {
      return 1;
    } else {
      int z = (x + 1) / 2;
      int y = x;
      while (z < y) {
          y = z;
          z = (x / z + z) / 2;
      }
      return y;
    }
  }
}

(int) avg(int x, int y) inline {
    return (x + y) / 2;
}

(int) exp(int x) inline {
    return (x >= 0 ? 1 << x : 1 >> (x * -1));
}

(int) log2(int x) inline {
  int n = 0;
  if (x >= 128.exp()) { 
    x >>= 128; 
    n += 128; 
  }
  if (x >= 64.exp()) { 
    x >>= 64;
    n += 64; 
  }
  if (x >= 32.exp()) {
    x >>= 32; 
    n += 32; 
  }
  if (x >= 16.exp()) { 
    x >>= 16; 
    n += 16; 
  }
  if (x >= 8.exp()) { 
    x >>= 8; 
    n += 8; 
  }
  if (x >= 4.exp()) { 
    x >>= 4; 
    n += 4; 
  }
  if (x >= 2.exp()) { 
    x >>= 2; 
    n += 2; 
  }
  if (x >= 1.exp()) { 
    ;; x >>= 1; 
    n += 1; 
  }
  return n;
}

(int) mod (int x, int y) asm "MOD";{-
    utils.func   

    Utility library for FunC.
-}

(slice) get_contract_address(int workchain, cell state_init) inline {
    return begin_cell()
        .store_uint(4, 3)
        .store_int(workchain, 8)
        .store_uint(cell_hash(state_init), 256)
    .end_cell().begin_parse();
}

(int) to_ton(int amount) inline {
    return amount * 1000000000;
}

(int) from_ton(int amount) inline {
    return amount / 1000000000;
}

(int) get_workchain(slice address) inline {
  (int wc, _) = parse_var_addr(address);
  return wc;
}

() force_chain(int workchain, slice address, int error_code) inline {
  (int wc) = get_workchain(address);
  throw_unless(error_code, wc == workchain);
}

(int) get_query_id() inline {
    return now() + mod(cur_lt(), 4294967296);
}

(slice) get_serialized_address(int workchain, int address) inline {
    return (begin_cell()
        .store_uint(2, 2)  ;; Is std address
        .store_uint(0, 1)  ;; Non-unicast
        .store_uint(workchain, 8)  ;; Basic workchain
        .store_uint(address, 256) ;; Address hash
    ).end_cell().begin_parse();
}
int workchain() asm "0 PUSHINT";
int op::transfer() asm "0xf8a7ea5 PUSHINT";
int op::transfer_notification() asm "0x7362d09c PUSHINT";
int op::internal_transfer() asm "0x178d4519 PUSHINT";
int op::excesses() asm "0xd53276db PUSHINT";
int op::burn() asm "0x595f07bc PUSHINT";
int op::burn_notification() asm "0x7bdd97de PUSHINT";

;; Minter
int op::mint() asm "21 PUSHINT";
int op::collect_fee() asm "22 PUSHINT";
int op::fee_collected_notification() asm "23 PUSHINT";cell pack_jetton_wallet_data(int balance, slice owner_address, slice jetton_master_address, cell jetton_wallet_code) inline {
   return  begin_cell()
            .store_grams(balance)
            .store_slice(owner_address)
            .store_slice(jetton_master_address)
            .store_ref(jetton_wallet_code)
           .end_cell();
}

cell calculate_jetton_wallet_state_init(slice owner_address, slice jetton_master_address, cell jetton_wallet_code) inline {
  return begin_cell()
          .store_uint(0, 2)
          .store_dict(jetton_wallet_code)
          .store_dict(pack_jetton_wallet_data(0, owner_address, jetton_master_address, jetton_wallet_code))
          .store_uint(0, 1)
         .end_cell();
}

slice calculate_jetton_wallet_address(cell state_init) inline {
  return begin_cell().store_uint(4, 3)
                     .store_int(workchain(), 8)
                     .store_uint(cell_hash(state_init), 256)
                     .end_cell()
                     .begin_parse();
}

slice calculate_user_jetton_wallet_address(slice owner_address, slice jetton_master_address, cell jetton_wallet_code) inline {
  return calculate_jetton_wallet_address(calculate_jetton_wallet_state_init(owner_address, jetton_master_address, jetton_wallet_code));
}

int get_minimal_reserve() asm "100000000 PUSHINT";

(int, slice, cell, cell) load_data() inline {
  slice ds = get_data().begin_parse();
  return (
      ds~load_grams(), ;; total_supply
      ds~load_msg_addr(), ;; admin_address
      ds~load_ref(), ;; content
      ds~load_ref()  ;; jetton_wallet_code
  );
}

() save_data(int total_supply, slice admin_address, cell content, cell jetton_wallet_code) impure inline {
  set_data(begin_cell()
            .store_grams(total_supply)
            .store_slice(admin_address)
            .store_ref(content)
            .store_ref(jetton_wallet_code)
           .end_cell()
          );
}

() mint_tokens(slice to_address, cell jetton_wallet_code, int amount) impure {
  cell state_init = calculate_jetton_wallet_state_init(to_address, my_address(), jetton_wallet_code);
  slice to_wallet_address = calculate_jetton_wallet_address(state_init);
  var msg = begin_cell()
    .store_uint(0x18, 6)
    .store_slice(to_wallet_address)
    .store_grams(40000000) ;; should be enough to cover fees
    .store_uint(4 + 2 + 1, 1 + 4 + 4 + 64 + 32 + 1 + 1 + 1)
    .store_ref(state_init)
    .store_ref(begin_cell()
      .store_uint(op::internal_transfer(), 32)
      .store_uint(cur_lt(), 64)
      .store_grams(amount)
    .end_cell());
  send_raw_message(msg.end_cell(), 1); 
}

() recv_internal(int balance, int msg_value, cell in_msg_full, slice in_msg_body) impure {
    if (in_msg_body.slice_empty?()) { ;; ignore empty messages
      return ();
    }
    slice cs = in_msg_full.begin_parse();
    int flags = cs~load_uint(4);

    if (flags & 1) { ;; ignore all bounced messages
        return ();
    }
    slice sender_address = cs~load_msg_addr();
  
    int op = in_msg_body~load_uint(32);
    int query_id = in_msg_body~load_uint(64);

    (int total_supply, slice admin_address, cell content, cell jetton_wallet_code) = load_data();

    if (op == op::collect_fee()) { 
      total_supply += get_minimal_reserve();
      throw_unless(74, balance > total_supply);
      var msg = begin_cell()
        .store_uint(0x18, 6) ;; nobounce - int_msg_info$0 ihr_disabled:Bool bounce:Bool bounced:Bool src:MsgAddress -> 011000
        .store_slice(admin_address)
        .store_grams(balance - total_supply)
        .store_uint(0, 1 + 4 + 4 + 64 + 32 + 1 + 1)
        .store_uint(op::fee_collected_notification(), 32)
        .store_uint(query_id, 64);
      send_raw_message(msg.end_cell(), 1); 
      return ();
    }

    if (op == op::mint()) {
      throw_unless(75, msg_value > get_minimal_reserve()); ;; minimum minting amount is 0.1 TON
      msg_value -= get_minimal_reserve(); ;; minting fee 0.05
      mint_tokens(sender_address, jetton_wallet_code, msg_value);
      save_data(total_supply + msg_value, admin_address, content, jetton_wallet_code);
      return ();
    }

    if (op == op::burn_notification()) {
        int jetton_amount = in_msg_body~load_grams();
        slice from_address = in_msg_body~load_msg_addr();
        throw_unless(76,
            equal_slices(calculate_user_jetton_wallet_address(from_address, my_address(), jetton_wallet_code), sender_address)
        );
        save_data(total_supply - jetton_amount, admin_address, content, jetton_wallet_code);
        var msg = begin_cell()
          .store_uint(0x18, 6) ;; nobounce - int_msg_info$0 ihr_disabled:Bool bounce:Bool bounced:Bool src:MsgAddress -> 011000
          .store_slice(from_address)
          .store_grams(jetton_amount)
          .store_uint(0, 1 + 4 + 4 + 64 + 32 + 1 + 1)
          .store_uint(op::burn_notification(), 32)
          .store_uint(query_id, 64);
        send_raw_message(msg.end_cell(), 1);

        slice response_address = in_msg_body~load_msg_addr();
        if (response_address.preload_uint(2) != 0) {
          var msg = begin_cell()
            .store_uint(0x10, 6) ;; nobounce - int_msg_info$0 ihr_disabled:Bool bounce:Bool bounced:Bool src:MsgAddress -> 011000
            .store_slice(response_address)
            .store_grams(0)
            .store_uint(0, 1 + 4 + 4 + 64 + 32 + 1 + 1)
            .store_uint(op::excesses(), 32)
            .store_uint(query_id, 64);
          send_raw_message(msg.end_cell(), 2 + 64);
        }
        return ();
    }

    throw(0xffff);
}

(int, int, slice, cell, cell) get_jetton_data() method_id {
    (int total_supply, slice admin_address, cell content, cell jetton_wallet_code) = load_data();
    return (total_supply, -1, admin_address, content, jetton_wallet_code);
}

slice get_wallet_address(slice owner_address) method_id {
    (_, _, _, cell jetton_wallet_code) = load_data();
    return calculate_user_jetton_wallet_address(owner_address, my_address(), jetton_wallet_code);
}

(int) get_fee() method_id {
  (int total_supply, slice admin_address, cell content, cell jetton_wallet_code) = load_data();
  total_supply += get_minimal_reserve();
  [int balance, _] = get_balance();
  return balance - total_supply;
}

_ supported_interfaces() method_id {
    return (
        123515602279859691144772641439386770278, ;; org.ton.introspection.v0
        82609559452677550956134866036642686023 ;; org.ton.ft.wton.tonox:v0
    );
}

Disassembled Code

SETCP0
(:methods
  recv_internal: 
    s0 PUSH
    SEMPTY
    <{
      4 BLKDROP
    }> PUSHCONT
    IFJMP
    s0 s1 XCHG
    CTOS
    4 LDU
    s0 s1 XCHG
    1 PUSHINT
    AND
    <{
      4 BLKDROP
    }> PUSHCONT
    IFJMP
    LDMSGADDR
    s0 POP
    s0 s1 XCHG
    32 LDU
    64 LDU
    c4 PUSH
    CTOS
    LDGRAMS
    LDMSGADDR
    LDREF
    LDREF
    s0 POP
    22 PUSHINT
    s7 s-1 PUXC
    EQUAL
    <{
      2DROP
      s2 POP
      3 3 BLKDROP2
      100000000 PUSHINT
      ADD
      s3 s0 PUSH2
      GREATER
      74 THROWIFNOT
      23 PUSHINT
      0 PUSHINT
      24 PUSHINT
      NEWC
      6 STU
      s0 s4 XCHG2
      STSLICER
      s5 s2 XCHG2
      SUB
      STGRAMS
      107 STU
      s1 s2 XCHG
      32 STU
      64 STU
      ENDC
      1 PUSHINT
      SENDRAWMSG
    }> PUSHCONT
    IFJMP
    s9 POP
    21 PUSHINT
    s6 s-1 PUXC
    EQUAL
    <{
      3 3 BLKDROP2
      100000000 PUSHINT
      s5 s-1 PUXC
      GREATER
      75 THROWIFNOT
      100000000 PUSHINT
      s1 s5 XCHG
      SUB
      3 5 3 XCPU2
      18 CALLDICT
      s0 s2 XCHG
      ADD
      s2 s3 XCHG2
      NEWC
      s0 s4 XCHG2
      STGRAMS
      ROT
      STSLICER
      STREF
      STREF
      ENDC
      c4 POP
    }> IFJMPREF
    s7 POP
    2078119902 PUSHINT
    s1 s5 XCHG
    EQUAL
    <{
      s0 s1 XCHG
      LDGRAMS
      LDMSGADDR
      MYADDR
      2 9 -1 PU2XC
      0 PUSHINT
      0 1 2 XCPUXC
      4 0 3 XC2PU
      NEWC
      s0 s4 XCHG2
      STGRAMS
      ROT
      STSLICER
      s0 s1 XCHG
      STSLICER
      STREF
      ENDC
      s2 PUSH
      NEWC
      2 STU
      s1 s2 XCHG
      STDICT
      STDICT
      1 STU
      ENDC
      HASHCU
      0 PUSHINT
      4 PUSHINT
      NEWC
      3 STU
      8 STI
      256 STU
      ENDC
      CTOS
      s0 s7 XCHG2
      SDEQ
      76 THROWIFNOT
      s2 s1 XCPU
      SUB
      s4 s1 s3 XCHG3
      s6 s7 XCHG2
      NEWC
      s0 s4 XCHG2
      STGRAMS
      ROT
      STSLICER
      STREF
      STREF
      ENDC
      c4 POP
      2078119902 PUSHINT
      0 PUSHINT
      24 PUSHINT
      NEWC
      6 STU
      s0 s3 XCHG2
      STSLICER
      s0 s4 XCHG2
      STGRAMS
      107 STU
      s1 s2 XCHG
      32 STU
      s2 s-1 PUXC
      64 STU
      ENDC
      1 PUSHINT
      SENDRAWMSG
      LDMSGADDR
      s0 POP
      s0 PUSH
      2 PLDU
      0 NEQINT
      <{
        3576854235 PUSHINT
        0 PUSHINT
        16 PUSHINT
        NEWC
        6 STU
        s0 s3 XCHG2
        STSLICER
        s2 PUSH
        STGRAMS
        s1 s2 XCHG
        107 STU
        32 STU
        64 STU
        ENDC
        66 PUSHINT
        SENDRAWMSG
      }> PUSHCONT
      <{
        2DROP
      }> PUSHCONT
      IFELSE
    }> IFJMPREF
    7 BLKDROP
    16 PUSHPOW2DEC
    THROWANY

  18: 
    MYADDR
    s3 s0 s3 XCHG3
    0 PUSHINT
    0 1 2 XCPUXC
    4 0 3 XC2PU
    NEWC
    s0 s4 XCHG2
    STGRAMS
    ROT
    STSLICER
    s0 s1 XCHG
    STSLICER
    STREF
    ENDC
    s2 PUSH
    NEWC
    2 STU
    s1 s2 XCHG
    STDICT
    STDICT
    1 STU
    ENDC
    s0 PUSH
    HASHCU
    0 PUSHINT
    4 PUSHINT
    NEWC
    3 STU
    8 STI
    256 STU
    ENDC
    CTOS
    LTIME
    395134233 PUSHINT
    NEWC
    32 STU
    64 STU
    s0 s3 XCHG2
    STGRAMS
    ENDC
    7 PUSHINT
    24 PUSHINT
    NEWC
    6 STU
    s0 s4 XCHG2
    STSLICER
    40000000 PUSHINT
    STGRAMS
    s1 s3 XCHG
    108 STU
    STREF
    STREF
    ENDC
    1 PUSHINT
    SENDRAWMSG

  90629: 
    c4 PUSH
    CTOS
    LDGRAMS
    LDMSGADDR
    LDREF
    LDREF
    s0 POP
    3 BLKDROP
    100000000 PUSHINT
    ADD
    BALANCE
    2 UNTUPLE
    s0 POP
    s0 s1 XCHG
    SUB

  get_wallet_address: 
    c4 PUSH
    CTOS
    LDGRAMS
    LDMSGADDR
    LDREF
    LDREF
    s0 POP
    3 1 BLKDROP2
    MYADDR
    s0 s1 XCHG
    0 PUSHINT
    0 1 2 XCPUXC
    4 0 3 XC2PU
    NEWC
    s0 s4 XCHG2
    STGRAMS
    ROT
    STSLICER
    s0 s1 XCHG
    STSLICER
    STREF
    ENDC
    s2 PUSH
    NEWC
    2 STU
    s1 s2 XCHG
    STDICT
    STDICT
    1 STU
    ENDC
    HASHCU
    0 PUSHINT
    4 PUSHINT
    NEWC
    3 STU
    8 STI
    256 STU
    ENDC
    CTOS

  get_jetton_data: 
    c4 PUSH
    CTOS
    LDGRAMS
    LDMSGADDR
    LDREF
    LDREF
    s0 POP
    -1 PUSHINT
    3 1 BLKSWAP

  113617: 
    123515602279859691144772641439386770278 PUSHINT
    82609559452677550956134866036642686023 PUSHINT
) 19 DICTPUSHCONST
DICTIGETJMPZ
11 THROWARG

Serialized Code

te6cckECDwEAAm0AART/APSkE/S88sgLAQIBYgIDAgLLBAUCASAGBwLl0IMcAkl8E4AHQ0wMBcbCSXwTg+kAwAdMf0z/tRND6APpA1NQwgBZScLqOLVsybDOCEAX14QCgUzC88uBKgBdwgBjIywVQBM8WUFKh+gLLahLLH8s/yXH7AOA5gBVSYLrjAjeCEHvdl94VuuMCXweED/LwggJAL+hfBQhgbgqEAmqCgHkKAJ9ASxniwDni2ZkkWRlgIl6AHoAZYBkkHyAODpkZYFlA+X/5Oh8EsEIC8aijORlj+WfqAH9AWS7wAxkZYKoAmeLQQUxLQB9AQnlteZmZLj9gEAAOb8QL2omh9AH0gamoYL4HBCAL68IBQfBO3kRgA0MAgFICgsAWGwzghAF9eEAUlC88uBLghAF9eEAFaFUM1PwEgKgUCPIUAT6AljPFszMye1UAfgB+gD6QPgoVGKhcFQgE1QUA8hQBPoCWM8WAc8WzMkiyMsBEvQA9ADLAMn5AHB0yMsCygfL/8nQUAfHBfLgTFEhoUQTUGfIUAT6AljPFszMye1UghB73ZfecIAYyMsFUAPPFlAE+gLLahLLH1Igyz/JcfsA+kAwINcLAcMADAIBWA0OAE23ejBOC52Hq6WVz2PQnYc6yVCjbNBOB8TAt7MSMmAMvCTKdRFEiPAASI4fghDVMnbbcIAQyMsFUAPPFiL6AhLLassfyz/JgEL7AJFb4gB9rbz2omh9AH0gamoYNhj8FAC4KhAJqgoB5CgCfQEsZ4sA54tmZJFkZYCJegB6AGWAZPyAODpkZYFlA+X/5OhAAB+vFvaiaH0AfSBqahg/qpBA/57AMA==

Serialized Data

te6cckECEQEAA6MAAktKDuuwCAG8otaiI6r9B2ZaPLjCL4+r+QC0Rdk+sID741xwfSAxsQECAFABaHR0cHM6Ly9zdGF0aWMudG9ub3guZXhjaGFuZ2UveHRvbi5qc29uART/APSkE/S88sgLAwIBYgQFAgLLBgcAG6D2BdqJofQB9IH0gahhALvQgxwCSXwTgAdDTAwFxsJUTXwPwFeD6QPpAMfoAMXHXIfoAMfoAMALTH4IQD4p+pVIgupUxNFnwEuCCEBeNRRlSILqWMTNAM/AT4DWCEFlfB7y6k1nwFOBfBIQP8vCAgFICAkCAVgKCwIBSAwNAfcA9M/+gD6QO1E0PoA+kD6QNQwUTahUirHBfLiwSjC//LiwlQ0QnBUIBNUFAPIUAT6AljPFgHPFszJIsjLARL0APQAywDJIPkAcHTIywLKB8v/ydAE+kD0BDH6AHeAGMjLBVAIzxZw+gIXy2sTzIIQF41FGcjLHxnLP1AHgDgHlO1E0PoA+kD6QNQwggiYloCCCJiWgKAWoQfTP/oAUzjHBY5JMDU2JsIAjiqCCJiWgHL7AoIQ1TJ223CAEMjLBSPPFlAJ+gIYy2oXyx8Vyz/JcfsAEDSSNTXiAaBVIMhQBPoCWM8WAc8WzMntVOD6QFRxSIA8A2ztRND6APpA+kDUMAfTP/oA+kAwUVGhUknHBfLiwSfC//LiwoIImJaAqgAWoBa88uLDghB73ZfeyMsfFcs/UAP6AiLPFgHPFslxgBDIywUkzxZw+gLLaszJgED7AEATyFAE+gJYzxYBzxbMye1UgAIMgCDXIe1E0PoA+kD6QNQwBNMfghAXjUUZUiC6ghB73ZfeE7oSsfLixdM/MfoAMBOgUCPIUAT6AljPFgHPFszJ7VSAAhvoCIs8WUAbPFiX6AlADzxbJUAXMB6oAE6CCCJiWgKoAggiYloCgoBS88uLFBMmAQPsAECPIUAT6AljPFgHPFszJ7VQB/HBUIBNUFAPIUAT6AljPFgHPFszJIsjLARL0APQAywDJ+QBwdMjLAsoHy//J0FAKxwXy4sMI+kD6ACGONlIZoBuhghBzYtCcyMsfUkDLPyP6AlAKzxZQB88WyXGAGMjLBSbPFlAL+gIay2oZzMlx+wAQZ5NbNjfiJNcLAcMAKBAAkMIAsI4qggiYloBy+wKCENUydttwgBDIywVQB88WUAn6AhXLahfLHxPLP8ly+wAUkzAzNeJQA6BVIMhQBPoCWM8WAc8WzMntVCEFuhA=

Code Cells

x{FF00F4A413F4BCF2C80B}
 x{62_}
  x{CB}
   x{D0831C02497C138007434C0C05C6C2497C1383E900C0074C7F4CFFB51343E803E9035350C2005949C2EA38B56CC9B0CE084017D78402814CC2F3CB812A005DC20063232C1540133C59414A87E80B2DA84B2C7F2CFF25C7EC0380E600554982EB8C08DE0841EF765F7856EB8C097C1E103FCBC2_}
    x{6C33821005F5E1005250BCF2E04B821005F5E10015A1543353F01202A05023C85004FA0258CF16CCCCC9ED54}
    x{01FA00FA40F8285462A170542013541403C85004FA0258CF1601CF16CCC922C8CB0112F400F400CB00C9F9007074C8CB02CA07CBFFC9D05007C705F2E04C5121A144135067C85004FA0258CF16CCCCC9ED5482107BDD97DE708018C8CB055003CF165004FA02CB6A12CB1F5220CB3FC971FB00FA403020D70B01C300}
     x{8E1F8210D53276DB708010C8CB055003CF1622FA0212CB6ACB1FCB3FC98042FB00915BE2}
   x{A17C142181B82A1009AA0A01E428027D012C678B00E78B666491646580897A007A00658064907C80383A6465816503E5FFE4E87C12C1080BC6A28CE4658FE59FA801FD0164BBC00C646582A802678B4105312D007D0109E5B5E66664B8FD804_}
  x{2_}
   x{BF102F6A2687D007D206A6A182F81C10802FAF080507C13B7911800D0C_}
   x{4}
    x{5}
     x{ADBCF6A2687D007D206A6A183618FC1400B82A1009AA0A01E428027D012C678B00E78B666491646580897A007A00658064FC80383A6465816503E5FFE4E84_}
     x{AF16F6A2687D007D206A6A183FAA904_}
    x{B77A304E0B9D87ABA595CF63D09D873AC950A36CD04E07C4C0B7B31232600CBC24CA75114488F_}

Data Cells

x{4A0EEBB00801BCA2D6A223AAFD07665A3CB8C22F8FABF900B445D93EB080FBE35C707D2031B1_}
 x{0168747470733A2F2F7374617469632E746F6E6F782E65786368616E67652F78746F6E2E6A736F6E}
 x{FF00F4A413F4BCF2C80B}
  x{62_}
   x{CB}
    x{D0831C02497C138007434C0C05C6C2544D7C0FC05783E903E900C7E800C5C75C87E800C7E800C00B4C7E08403E29FA954882EA54C4D167C04B8208405E3514654882EA58C4CD00CFC04F80D60841657C1EF2EA4D67C053817C12103FCBC2_}
    x{4}
     x{5}
      x{00F4CFFE803E903B51343E803E903E90350C144DA8548AB1C17CB8B04A30BFFCB8B0950D109C150804D50500F214013E809633C58073C5B33248B232C044BD003D0032C032483E401C1D3232C0B281F2FFF274013E903D010C7E801DE0063232C1540233C59C3E8085F2DAC4F3208405E351467232C7C672CFD401E_}
       x{FA0222CF165006CF1625FA025003CF16C95005CC07AA0013A08208989680AA008208989680A0A014BCF2E2C504C98040FB001023C85004FA0258CF1601CF16CCC9ED54}
      x{3B51343E803E903E90350C20822625A020822625A02805A841F4CFFE8014CE31C163924C0D4D89B080238AA0822625A01CBEC0A084354C9DB6DC20043232C148F3C594027E808632DA85F2C7C572CFF25C7EC0040D248D4D78806815483214013E809633C58073C5B3327B55383E90151C522_}
       x{70542013541403C85004FA0258CF1601CF16CCC922C8CB0112F400F400CB00C9F9007074C8CB02CA07CBFFC9D0500AC705F2E2C308FA40FA00218E365219A01BA182107362D09CC8CB1F5240CB3F23FA02500ACF165007CF16C9718018C8CB0526CF16500BFA021ACB6A19CCC971FB001067935B3637E224D70B01C30028}
        x{C200B08E2A820898968072FB028210D53276DB708010C8CB055007CF165009FA0215CB6A17CB1F13CB3FC972FB001493303335E25003A05520C85004FA0258CF1601CF16CCC9ED54}
     x{4}
      x{3B51343E803E903E90350C01F4CFFE803E900C145468549271C17CB8B049F0BFFCB8B0A0822625A02A8005A805AF3CB8B0E0841EF765F7B232C7C572CFD400FE8088B3C58073C5B25C60043232C14933C59C3E80B2DAB33260103EC01004F214013E809633C58073C5B3327B552_}
      x{200835C87B51343E803E903E90350C0134C7E08405E3514654882EA0841EF765F784EE84AC7CB8B174CFCC7E800C04E81408F214013E809633C58073C5B3327B552_}
   x{A0F605DA89A1F401F481F481A861_}
Address format (UQ)
Lang: