From 4343bd1b3321bd3c5f60f33d072ff0b78008da08 Mon Sep 17 00:00:00 2001
From: Daniel Newbrook <dwn1c21@soton.ac.uk>
Date: Wed, 6 Dec 2023 21:17:55 +0000
Subject: [PATCH] Add dma350 stream tests

---
 nanosoc/sldma350_tech                         |     2 +-
 .../common/validation/dma350_stream_tests.c   |   507 +
 .../dma350_stream_tests.hex                   | 10784 ++++++++++++++++
 testcodes/dma350_stream_tests/makefile        |   285 +
 testcodes/excluded_tests.txt                  |     3 +-
 5 files changed, 11579 insertions(+), 2 deletions(-)
 create mode 100644 software/common/validation/dma350_stream_tests.c
 create mode 100644 testcodes/dma350_stream_tests/dma350_stream_tests.hex
 create mode 100644 testcodes/dma350_stream_tests/makefile

diff --git a/nanosoc/sldma350_tech b/nanosoc/sldma350_tech
index d3a9db1..a69e001 160000
--- a/nanosoc/sldma350_tech
+++ b/nanosoc/sldma350_tech
@@ -1 +1 @@
-Subproject commit d3a9db1014315bda22e9025b24fc9cda7b064a10
+Subproject commit a69e001167fc5d075728988e2ca1c047e66f3c14
diff --git a/software/common/validation/dma350_stream_tests.c b/software/common/validation/dma350_stream_tests.c
new file mode 100644
index 0000000..2e90352
--- /dev/null
+++ b/software/common/validation/dma350_stream_tests.c
@@ -0,0 +1,507 @@
+#ifdef CORTEX_M0
+#include "CMSDK_CM0.h"
+#endif
+
+#ifdef CORTEX_M0PLUS
+#include "CMSDK_CM0plus.h"
+#endif
+
+#ifdef CORTEX_M3
+#include "CMSDK_CM3.h"
+#endif
+
+#ifdef CORTEX_M4
+#include "CMSDK_CM4.h"
+#endif
+
+#include <stdio.h>
+#include "uart_stdout.h"
+#include "CMSDK_driver.h"
+
+
+#include "config_id.h"
+#include <string.h>
+#include <inttypes.h>
+#include "dma_350_command_lib.h"
+
+//Channel number defines
+// Note: Please add more channels if DMA has more than 8 channels
+#define CH0                     0
+#define CH1                     1
+
+
+// Note: Please modify the addresses according to the system memory map
+#define COPY_ADDR_SRC_0        0x80000000
+#define COPY_ADDR_SRC_1        0x80000100
+#define COPY_ADDR_SRC_2        0x80000200
+#define COPY_ADDR_DST_0        0x98000000
+#define COPY_ADDR_DST_1        0x98000100
+#define COPY_ADDR_DST_2        0x98000200
+
+
+// Note: Please modify to the desired data size
+#define DATA_SIZE               64
+#define LARGE_DATA_SIZE         10000
+
+#define HW32_REG(ADDRESS)  (*((volatile unsigned long  *)(ADDRESS)))
+
+#if defined ( __CC_ARM   )
+__asm void          address_test_write(unsigned int addr, unsigned int wdata);
+__asm unsigned int  address_test_read(unsigned int addr);
+#else
+      void          address_test_write(unsigned int addr, unsigned int wdata);
+      unsigned int  address_test_read(unsigned int addr);
+#endif
+
+void                HardFault_Handler_c(unsigned int * hardfault_args, unsigned lr_value);
+
+//typedef unsigned long int uintptr_t;
+// Array for command with a Header + 5 modified registers
+uint32_t LinkCmd[6];
+// Variable to store the address of the above array
+uintptr_t LinkCmd_adr = (uintptr_t) LinkCmd;
+
+volatile int dma_done_irq_occurred;
+volatile int dma_done_irq_expected;
+volatile int dma_error_irq_occurred;
+volatile int dma_error_irq_expected;
+volatile int hardfault_occurred;
+volatile int hardfault_expected;
+volatile int temp_data;
+volatile int current_channel;
+
+uint8_t dma350_detect(void);
+void delay(uint32_t t);
+void SystemInitialization(void);
+void DMAClearChIrq(uint32_t ch);
+void DMA_Handler(void) __attribute__((interrupt));
+void initialise_destination(unsigned int actual_addr);
+uint8_t check_destination(unsigned int actual_addr);
+
+int main(void) {
+
+  // Get the number of channels and trigger interfaces
+  uint32_t ch_num;
+  uint32_t trig_in_num;
+  uint32_t trig_out_num;
+  uint32_t errors = 0;
+  unsigned int actual_addr;
+  hardfault_occurred = 0;
+  hardfault_expected = 0;
+    // Call Function for the testbench Specific Initialization
+    // Note: Change to the system specific function for initialization
+    SystemInitialization();
+
+  printf("<--- DMA START --->\n");
+
+  // Define structures for the tests
+  // Note: Command and channel parameters can be modified to the desired settings
+
+  // Set the DMA channel related parameters
+  // Channel Priority is '0' - Lowest Priority
+  // Cleaning DMA Channel registers at the end of the command is enabled
+  // Reloading initial register values at the end of the command is disabled
+  // STATUS_DONE status flag is asserted at the end of the command.
+  // Automatic pause request at the end of the command is disabled
+  // Maximum source and destination burst lengths sent by the DMA are 15+1=16 (Can be limited by FIFO size)
+  AdaChannelSettingsType ch_settings = {
+    .CHPRIO         = 0,
+    .CLEARCMD       = 1,
+    .REGRELOADTYPE  = RELOAD_DISABLED,
+    .DONETYPE       = DONETYPE_EOF_CMD,
+    .DONEPAUSEEN    = 0,
+    .SRCMAXBURSTLEN = 15,
+    .DESMAXBURSTLEN = 15
+  };
+  AdaChannelSettingsType ch_settings_no_burst = {
+    .CHPRIO         = 0,
+    .CLEARCMD       = 1,
+    .REGRELOADTYPE  = RELOAD_DISABLED,
+    .DONETYPE       = DONETYPE_EOF_CMD,
+    .DONEPAUSEEN    = 0,
+    .SRCMAXBURSTLEN = 0,
+    .DESMAXBURSTLEN = 0
+  };
+
+  // Set the attributes of the read AXI transactions sent by the DMA
+  // These settings affects the ARINNER[3:0], AWINNER[3:0], ARCACHE[3:0], AWCACHE[3:0] and AxDOMAIN[1:0] attributes
+  // of the AXI transactions
+  // This command uses Normal memory, Non-Cacheable, Bufferable, System-shareable AXI attributes
+  // ARINNER[3:0] = 4'b0011, AWINNER[3:0] = 4'b0011, ARCACHE[3:0] = 4'b0011, AWCACHE[3:0] = 4'b0011, AxDOMAIN[1:0] = 2'b11
+  // More information about the AXI attribute settings can be found in the TRM
+  // The command uses non-secure, non-privileged AXI read transactions
+  AdaChannelSrcAttrType ch_srcattr = {
+    .SRCMEMATTRLO  = 4,
+    .SRCMEMATTRHI  = 4,
+    .SRCSHAREATTR  = 0,
+    .SRCNONSECATTR = 1,
+    .SRCPRIVATTR   = 0
+  };
+
+  // Set the attributes of the write AXI transactions sent by the DMA
+  // These settings affects the ARINNER[3:0], AWINNER[3:0], ARCACHE[3:0], AWCACHE[3:0] and AxDOMAIN[1:0] attributes
+  // of the AXI transactions
+  // This command uses Normal memory, Non-Cacheable, Bufferable, System-shareable AXI attributes
+  // ARINNER[3:0] = 4'b0011, AWINNER[3:0] = 4'b0011, ARCACHE[3:0] = 4'b0011, AWCACHE[3:0] = 4'b0011, AxDOMAIN[1:0] = 2'b11
+  // More information about the AXI attribute settings can be found in the TRM
+  // The command uses non-secure, non-privileged AXI write transactions
+  AdaChannelDesAttrType ch_desattr = {
+    .DESMEMATTRLO  = 4,
+    .DESMEMATTRHI  = 4,
+    .DESSHAREATTR  = 0,
+    .DESNONSECATTR = 1,
+    .DESPRIVATTR   = 0
+  };
+
+  // Set the attributes of the read AXI transactions used for the command link related transfers
+  AdaChannelLinkAttrType ch_linkattr = {
+    .LINKMEMATTRLO = 4,
+    .LINKMEMATTRHI = 4,
+    .LINKSHAREATTR = 0
+  };
+
+
+  AdaBaseCommandType str_command_base_0 = {
+    .SRCADDR  = COPY_ADDR_SRC_0, // Read from M0 interface
+    .DESADDR  = COPY_ADDR_DST_0, // Write to M1 interface
+    .SRCXSIZE = DATA_SIZE,
+    .DESXSIZE = DATA_SIZE,
+    .TRANSIZE = BITS_32
+  };
+  AdaBaseCommandType str_command_base_1 = {
+    .SRCADDR  = COPY_ADDR_SRC_1, // Read from M0 interface
+    .DESADDR  = COPY_ADDR_DST_1, // Write to M1 interface
+    .SRCXSIZE = DATA_SIZE,
+    .DESXSIZE = DATA_SIZE,
+    .TRANSIZE = BITS_32
+  };  
+  AdaBaseCommandType str_command_base_2 = {
+    .SRCADDR  = COPY_ADDR_SRC_2, // Read from M0 interface
+    .DESADDR  = COPY_ADDR_DST_2, // Write to M1 interface
+    .SRCXSIZE = DATA_SIZE,
+    .DESXSIZE = DATA_SIZE,
+    .TRANSIZE = BITS_32
+  };
+  // Set the increment of source and destination addresses
+  // The source and destination address increments are 1
+  Ada1DIncrCommandType command_1d_incr = {
+    .SRCXADDRINC = 1,           // Autoincrement by transaction size
+    .DESXADDRINC = 1            // Autoincrement by transaction size
+  };
+
+  // Set the transfer types (2D and wrapping support)
+  // The transaction type is 1D basic transfer
+  AdaWrapCommandType command_1d_wrap = {
+    .FILLVAL  = 0,
+    .XTYPE    = OPTYPE_CONTINUE,
+    .YTYPE    = OPTYPE_DISABLE
+  };
+
+  // Enable/disable the interupts of the channel
+  // Error and done interrupts are enabled
+  AdaIrqEnType ch_irqs = {
+    .INTREN_DONE     = 1,
+    .INTREN_ERR      = 1,
+    .INTREN_DISABLED = 0,
+    .INTREN_STOPPED  = 0
+  };
+
+  // Set stream type
+  // Both stream in and out interfaces are used
+  AdaStreamType command_stream = {
+    .STREAMTYPE = IN_AND_OUT
+  } ;
+
+
+  if(dma350_detect()!=0){
+    return 0;
+  }
+
+  //Initialize TCM
+  printf("Initialize SRAM... ");
+  actual_addr = str_command_base_0.SRCADDR;
+  unsigned int test_data[str_command_base_0.SRCXSIZE];
+  int j;
+  for(j = 0; j < 64; j++){
+    test_data[j] = j;
+    address_test_write(actual_addr,test_data[j]);
+    //printf("Written data: 0x%x to address 0x%x \n", test_data[j], actual_addr);
+    actual_addr = actual_addr+4;
+  }
+  actual_addr = str_command_base_1.SRCADDR;
+  for(j = 0; j < 64; j++){
+    address_test_write(actual_addr,test_data[j]);
+    //printf("Written data: 0x%x to address 0x%x \n", test_data[j], actual_addr);
+    actual_addr = actual_addr+4;
+  }
+  actual_addr = str_command_base_2.SRCADDR;
+  for(j = 0; j < 64; j++){
+    address_test_write(actual_addr,test_data[j]);
+    //printf("Written data: 0x%x to address 0x%x \n", test_data[j], actual_addr);
+    actual_addr = actual_addr+4;
+  }
+  printf("done\n");
+
+
+  //Get the configuration information
+  ch_num = AdaGetChNum(SECURE);
+  trig_in_num = AdaGetTrigInNum(SECURE);
+  trig_out_num = AdaGetTrigOutNum(SECURE);
+
+  //Display the config parameters read
+  printf("Number of DMA channels: %d \n", ch_num);
+  printf("Number of DMA trigger inputs: %d \n", trig_in_num);
+  printf("Number of DMA trigger outputs: %d \n", trig_out_num);
+
+
+  printf("---STARTING Stream interface tests---\n");
+  __enable_irq();
+  for (uint32_t ch=0; ch < ch_num; ch++) {
+    current_channel=ch;
+    //
+    // Write all settings to the DMA registers
+    AdaChannelInit(ch_settings, ch_srcattr, ch_desattr, ch, SECURE);
+    Ada1DIncrCommand(str_command_base_0, command_1d_incr, ch, SECURE);
+    AdaStreamInit(command_stream, ch, SECURE);
+    AdaStreamEnable(1 ,ch, SECURE);
+    AdaSetIntEn(ch_irqs, ch, SECURE);
+
+    
+    dma_done_irq_expected = 1;
+    dma_done_irq_occurred = 0;
+    NVIC_ClearPendingIRQ(DMA_IRQn);
+    NVIC_EnableIRQ(DMA_IRQn);
+
+
+    printf("DMA %d configured. Starting the transfer.\n", ch);
+
+
+    // Start DMA operation and wait for done IRQ
+    AdaEnable(ch, SECURE);
+    __WFI();
+    printf("Return from interrupt\n");
+    
+    //AdaClearChDone(ch, SECURE);
+    printf("DMA transfer finished\n");
+
+    if (check_destination(str_command_base_0.DESADDR)!=0){
+      errors++;
+    }
+    else{
+      printf("Passed\n");
+    }
+
+    initialise_destination(str_command_base_0.DESADDR);
+    // Disable channel and stream
+    AdaDisable(ch, SECURE);
+    AdaStreamEnable(0 ,ch, SECURE);
+  }
+
+
+
+
+  NVIC_DisableIRQ(DMA_IRQn);
+  __disable_irq();
+  
+  if(errors!=0){
+    printf("\n** TEST FAILED **, Error code = (0x%x)\n",errors);
+  } else {
+    printf ("\n** TEST PASSED **\n");
+  }
+
+  UartEndSimulation();
+  return 0;
+}
+
+// Setup all components in the system
+void SystemInitialization(void){
+  // Initialize the system. For example clock gating, PPU, SAU, security components, peripherals etc.
+  // Note: This function should setup all system components
+    // UART init
+  UartStdOutInit();
+
+  // Test banner message and revision number
+  puts("\nCortex Microcontroller System Design Kit - DMA Test - revision $Revision: 371321 $\n");
+}
+
+uint8_t dma350_detect(void)
+{
+  uint8_t result;
+  int volatile rdata;
+  unsigned const int dma350_iidr = 0x3a00043b;
+  puts("Detect if DMA350 controller is present...");
+  hardfault_occurred = 0;
+  hardfault_expected = 1;
+  rdata = address_test_read(ADA_DMA_S_BASE+0xFC8);
+  hardfault_expected = 0;
+  result = hardfault_occurred ? 1 : (rdata!=dma350_iidr);
+  if (result!=0) {
+    puts("** TEST SKIPPED ** DMA controller is not present.\n");
+    UartEndSimulation();
+  }
+  return(result);
+}
+
+void initialise_destination(unsigned int actual_addr)
+{
+  int j;
+  for(j = 0; j < 64; j++){
+    address_test_write(actual_addr,0);
+    //printf("Written data: 0x%x to address 0x%x \n", test_data[j], actual_addr);
+    actual_addr = actual_addr+4;
+  }
+}
+
+uint8_t check_destination(unsigned int actual_addr)
+{
+  uint32_t mismatches=0;
+  uint32_t value;
+  int j;
+  for(j = 0; j < 64; j++){
+    if (address_test_read(actual_addr)!=j)
+    {
+      mismatches++;
+    }
+    //printf("Written data: 0x%x to address 0x%x \n", test_data[j], actual_addr);
+    actual_addr = actual_addr+4;
+  }
+  return mismatches;
+}
+
+#if defined ( __CC_ARM   )
+/* Test function for write - for ARM / Keil */
+__asm void address_test_write(unsigned int addr, unsigned int wdata)
+{
+  STR    R1,[R0]
+  DSB    ; Ensure bus fault occurred before leaving this subroutine
+  BX     LR
+}
+
+#else
+/* Test function for write - for gcc */
+void address_test_write(unsigned int addr, unsigned int wdata) __attribute__((naked));
+void address_test_write(unsigned int addr, unsigned int wdata)
+{
+  __asm("  str   r1,[r0]\n"
+        "  dsb          \n"
+        "  bx    lr     \n"
+  );
+}
+#endif
+
+/* Test function for read */
+#if defined ( __CC_ARM   )
+/* Test function for read - for ARM / Keil */
+__asm unsigned int address_test_read(unsigned int addr)
+{
+  LDR    R1,[R0]
+  DSB    ; Ensure bus fault occurred before leaving this subroutine
+  MOVS   R0, R1
+  BX     LR
+}
+#else
+/* Test function for read - for gcc */
+unsigned int  address_test_read(unsigned int addr) __attribute__((naked));
+unsigned int  address_test_read(unsigned int addr)
+{
+  __asm("  ldr   r1,[r0]\n"
+        "  dsb          \n"
+        "  movs  r0, r1 \n"
+        "  bx    lr     \n"
+  );
+}
+#endif
+
+// Function for the Channel interrupt handlers
+void DMAClearChIrq(uint32_t ch) {
+  // Check the source of the interrupt and clear interrupts
+  AdaStatType ST = AdaReadStatus(ch, SECURE);
+  if (ST.STAT_DONE == 1) {
+    AdaClearChDone(ch, SECURE);
+  } else if (ST.STAT_ERR == 1) {
+    AdaClearChError(ch, SECURE);
+  } else if (ST.STAT_DISABLED == 1) {
+    AdaClearChDisabled(ch, SECURE);
+  } else if (ST.STAT_STOPPED == 1) {
+    AdaClearChStopped(ch, SECURE);
+  } else {
+    printf("Unknown IRQ on CH%d!\n", ch);
+  }
+}
+
+void DMA_Handler(void){ 
+  __disable_irq();
+  DMAClearChIrq(current_channel);
+  dma_done_irq_occurred++;
+  __enable_irq();
+  return;
+}
+
+#if defined ( __CC_ARM   )
+/* ARM or Keil toolchain */
+__asm void HardFault_Handler(void)
+{
+  MOVS   r0, #4
+  MOV    r1, LR
+  TST    r0, r1
+  BEQ    stacking_used_MSP
+  MRS    R0, PSP ; // first parameter - stacking was using PSP
+  B      get_LR_and_branch
+stacking_used_MSP
+  MRS    R0, MSP ; // first parameter - stacking was using MSP
+get_LR_and_branch
+  MOV    R1, LR  ; // second parameter is LR current value
+  LDR    R2,=__cpp(HardFault_Handler_c)
+  BX     R2
+  ALIGN
+}
+#else
+/* gcc toolchain */
+void HardFault_Handler(void) __attribute__((naked));
+void HardFault_Handler(void)
+{
+  __asm("  movs   r0,#4\n"
+        "  mov    r1,lr\n"
+        "  tst    r0,r1\n"
+        "  beq    stacking_used_MSP\n"
+        "  mrs    r0,psp\n" /*  first parameter - stacking was using PSP */
+        "  ldr    r1,=HardFault_Handler_c  \n"
+        "  bx     r1\n"
+        "stacking_used_MSP:\n"
+        "  mrs    r0,msp\n" /*  first parameter - stacking was using PSP */
+        "  ldr    r1,=HardFault_Handler_c  \n"
+        "  bx     r1\n"
+        ".pool\n" );
+}
+
+#endif
+/* C part of the fault handler - common between ARM / Keil /gcc */
+void HardFault_Handler_c(unsigned int * hardfault_args, unsigned lr_value)
+{
+  unsigned int stacked_pc;
+  unsigned int stacked_r0;
+  hardfault_occurred++;
+  puts ("[Hard Fault Handler]");
+  if (hardfault_expected==0) {
+    puts ("ERROR : Unexpected HardFault interrupt occurred.\n");
+    UartEndSimulation();
+    while (1);
+    }
+  stacked_r0  = ((unsigned long) hardfault_args[0]);
+  stacked_pc  = ((unsigned long) hardfault_args[6]);
+  printf(" - Stacked R0 : 0x%x\n", stacked_r0);
+  printf(" - Stacked PC : 0x%x\n", stacked_pc);
+  /* Modify R0 to a valid address */
+  hardfault_args[0] = (unsigned long) &temp_data;
+
+  return;
+}
+
+void delay(uint32_t t)
+{
+  int i;
+  for (i=0;i<t;i++){
+    __ISB();
+    }
+  return;
+}
diff --git a/testcodes/dma350_stream_tests/dma350_stream_tests.hex b/testcodes/dma350_stream_tests/dma350_stream_tests.hex
new file mode 100644
index 0000000..699138f
--- /dev/null
+++ b/testcodes/dma350_stream_tests/dma350_stream_tests.hex
@@ -0,0 +1,10784 @@
+90
+04
+00
+30
+ED
+07
+00
+00
+F5
+07
+00
+00
+97
+01
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+F9
+07
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+FB
+07
+00
+00
+FD
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+AD
+04
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+FF
+07
+00
+00
+00
+F0
+02
+F8
+00
+F0
+4F
+F8
+0C
+A0
+30
+C8
+08
+38
+24
+18
+2D
+18
+A2
+46
+67
+1E
+AB
+46
+54
+46
+5D
+46
+AC
+42
+01
+D1
+00
+F0
+41
+F8
+7E
+46
+0F
+3E
+0F
+CC
+B6
+46
+01
+26
+33
+42
+00
+D0
+FB
+1A
+A2
+46
+AB
+46
+33
+43
+18
+47
+D4
+28
+00
+00
+F4
+28
+00
+00
+10
+3A
+02
+D3
+78
+C8
+78
+C1
+FA
+D8
+52
+07
+01
+D3
+30
+C8
+30
+C1
+01
+D5
+04
+68
+0C
+60
+70
+47
+00
+00
+00
+23
+00
+24
+00
+25
+00
+26
+10
+3A
+01
+D3
+78
+C1
+FB
+D8
+52
+07
+00
+D3
+30
+C1
+00
+D5
+0B
+60
+70
+47
+10
+B5
+64
+29
+02
+D1
+02
+F0
+C7
+F9
+10
+BD
+78
+29
+02
+D1
+02
+F0
+F8
+F9
+10
+BD
+00
+20
+10
+BD
+1F
+B5
+00
+98
+01
+99
+02
+F0
+53
+FA
+1F
+BD
+10
+B5
+10
+BD
+02
+F0
+3F
+FB
+11
+46
+FF
+F7
+F3
+FF
+00
+F0
+62
+F8
+02
+F0
+57
+FB
+03
+B4
+FF
+F7
+F2
+FF
+03
+BC
+00
+F0
+63
+FB
+01
+60
+BF
+F3
+4F
+8F
+70
+47
+01
+68
+BF
+F3
+4F
+8F
+08
+00
+70
+47
+04
+20
+71
+46
+08
+42
+02
+D0
+EF
+F3
+09
+80
+01
+E0
+EF
+F3
+08
+80
+71
+46
+01
+4A
+10
+47
+00
+00
+07
+05
+00
+00
+70
+B5
+05
+46
+00
+24
+00
+21
+28
+46
+FF
+F7
+E1
+FF
+64
+1C
+2D
+1D
+40
+2C
+F7
+DB
+70
+BD
+70
+B5
+00
+25
+06
+46
+2C
+46
+30
+46
+FF
+F7
+D9
+FF
+A0
+42
+00
+D0
+6D
+1C
+64
+1C
+36
+1D
+40
+2C
+F5
+DB
+E8
+B2
+70
+BD
+F8
+B5
+D9
+4E
+D9
+A0
+02
+F0
+D1
+F9
+E3
+4C
+00
+25
+A5
+60
+01
+20
+E0
+60
+E1
+48
+FF
+F7
+C3
+FF
+00
+90
+E5
+60
+A0
+68
+00
+28
+02
+D1
+00
+98
+B0
+42
+06
+D0
+01
+24
+DC
+A0
+02
+F0
+BD
+F9
+00
+F0
+30
+FB
+00
+E0
+00
+24
+20
+46
+F8
+BD
+10
+B5
+00
+F0
+0E
+FB
+E3
+48
+02
+F0
+B1
+F9
+10
+BD
+F0
+B5
+00
+20
+99
+B0
+D1
+4E
+16
+90
+07
+46
+B0
+60
+F0
+60
+00
+F0
+00
+FB
+DC
+48
+02
+F0
+A3
+F9
+DC
+A0
+02
+F0
+FA
+F8
+E0
+48
+08
+AD
+01
+68
+12
+91
+81
+68
+11
+91
+C1
+68
+10
+91
+01
+46
+28
+31
+1E
+C9
+1E
+C5
+01
+46
+38
+31
+1E
+C9
+1E
+C5
+81
+6C
+06
+91
+01
+46
+8D
+6E
+41
+69
+18
+91
+80
+69
+14
+90
+B2
+4C
+15
+97
+B2
+A0
+02
+F0
+83
+F9
+B7
+60
+01
+20
+F0
+60
+BB
+48
+FF
+F7
+77
+FF
+00
+90
+F7
+60
+B0
+68
+00
+28
+02
+D1
+00
+98
+A0
+42
+07
+D0
+B7
+A0
+02
+F0
+72
+F9
+00
+F0
+E5
+FA
+00
+20
+19
+B0
+F0
+BD
+C8
+A0
+02
+F0
+C4
+F8
+0C
+98
+08
+9F
+80
+00
+02
+F0
+68
+F8
+00
+24
+17
+90
+17
+98
+A1
+00
+44
+50
+21
+46
+38
+46
+FF
+F7
+52
+FF
+64
+1C
+3F
+1D
+40
+2C
+F4
+DB
+06
+9F
+00
+24
+17
+98
+A1
+00
+41
+58
+38
+46
+FF
+F7
+46
+FF
+64
+1C
+3F
+1D
+40
+2C
+F5
+DB
+00
+24
+17
+98
+A1
+00
+41
+58
+28
+46
+FF
+F7
+3B
+FF
+64
+1C
+2D
+1D
+40
+2C
+F5
+DB
+B7
+A0
+02
+F0
+98
+F8
+00
+20
+02
+F0
+15
+F8
+13
+90
+00
+20
+02
+F0
+1B
+F8
+04
+46
+00
+20
+02
+F0
+20
+F8
+05
+46
+B1
+A0
+13
+99
+02
+F0
+88
+F8
+21
+46
+B7
+A0
+02
+F0
+84
+F8
+29
+46
+BE
+A0
+02
+F0
+80
+F8
+C5
+A0
+02
+F0
+7D
+F8
+62
+B6
+00
+25
+13
+98
+00
+28
+69
+D9
+89
+4C
+65
+61
+00
+26
+2B
+46
+00
+96
+10
+9A
+11
+99
+12
+98
+00
+F0
+30
+FC
+18
+98
+06
+96
+05
+95
+0C
+AF
+04
+90
+0F
+CF
+6F
+46
+0F
+C7
+08
+AF
+0F
+CF
+00
+F0
+D6
+FC
+00
+22
+29
+46
+15
+98
+01
+F0
+8D
+FA
+00
+22
+29
+46
+01
+20
+01
+F0
+A2
+FA
+00
+22
+29
+46
+14
+98
+00
+F0
+D3
+FF
+01
+20
+60
+60
+26
+60
+B7
+49
+C0
+03
+08
+60
+B7
+49
+08
+60
+29
+46
+B6
+A0
+02
+F0
+47
+F8
+00
+21
+28
+46
+00
+F0
+84
+FA
+30
+BF
+BD
+A0
+02
+F0
+3F
+F8
+C2
+A0
+02
+F0
+3C
+F8
+00
+27
+0A
+9E
+3C
+46
+30
+46
+FF
+F7
+D6
+FE
+A0
+42
+00
+D0
+7F
+1C
+64
+1C
+36
+1D
+40
+2C
+F5
+DB
+38
+06
+00
+0E
+03
+D0
+16
+98
+40
+1C
+16
+90
+02
+E0
+BC
+A0
+02
+F0
+25
+F8
+0A
+9C
+00
+26
+00
+21
+20
+46
+FF
+F7
+BB
+FE
+24
+1D
+76
+1C
+40
+2E
+F7
+DB
+00
+21
+28
+46
+00
+F0
+71
+FA
+00
+22
+29
+46
+10
+46
+01
+F0
+5C
+FA
+13
+98
+6D
+1C
+85
+42
+95
+D3
+01
+20
+B1
+49
+C0
+03
+08
+60
+72
+B6
+16
+98
+00
+28
+04
+D0
+01
+46
+AE
+A0
+02
+F0
+02
+F8
+02
+E0
+B7
+A0
+01
+F0
+FE
+FF
+00
+F0
+17
+FA
+17
+98
+01
+F0
+D3
+FF
+00
+20
+19
+B0
+F0
+BD
+10
+B5
+04
+46
+00
+21
+00
+F0
+24
+FE
+C1
+07
+04
+D0
+00
+21
+20
+46
+00
+F0
+83
+FE
+10
+BD
+81
+07
+04
+D5
+00
+21
+20
+46
+00
+F0
+95
+FE
+10
+BD
+41
+07
+04
+D5
+00
+21
+20
+46
+00
+F0
+A7
+FE
+10
+BD
+00
+07
+04
+D5
+00
+21
+20
+46
+00
+F0
+B9
+FE
+10
+BD
+21
+46
+A5
+A0
+01
+F0
+D1
+FF
+10
+BD
+70
+B5
+72
+B6
+34
+4C
+65
+69
+00
+21
+28
+46
+00
+F0
+FB
+FD
+C1
+07
+04
+D0
+00
+21
+28
+46
+00
+F0
+5A
+FE
+18
+E0
+81
+07
+04
+D5
+00
+21
+28
+46
+00
+F0
+6C
+FE
+11
+E0
+41
+07
+04
+D5
+00
+21
+28
+46
+00
+F0
+7E
+FE
+0A
+E0
+00
+07
+04
+D5
+00
+21
+28
+46
+00
+F0
+90
+FE
+03
+E0
+29
+46
+91
+A0
+01
+F0
+A8
+FF
+20
+68
+40
+1C
+20
+60
+62
+B6
+70
+BD
+70
+B5
+1E
+4D
+04
+46
+A8
+68
+40
+1C
+A8
+60
+90
+A0
+02
+F0
+40
+F8
+E8
+68
+00
+28
+0B
+D0
+93
+A0
+A5
+69
+21
+68
+01
+F0
+92
+FF
+29
+46
+96
+A0
+01
+F0
+8E
+FF
+9A
+48
+20
+60
+70
+BD
+9A
+A0
+02
+F0
+2E
+F8
+00
+F0
+A1
+F9
+FE
+E7
+00
+21
+00
+28
+04
+D9
+BF
+F3
+6F
+8F
+49
+1C
+81
+42
+FA
+D3
+70
+47
+3B
+04
+00
+3A
+44
+65
+74
+65
+63
+74
+20
+69
+66
+20
+44
+4D
+41
+33
+35
+30
+20
+63
+6F
+6E
+74
+72
+6F
+6C
+6C
+65
+72
+20
+69
+73
+20
+70
+72
+65
+73
+65
+6E
+74
+2E
+2E
+2E
+00
+00
+00
+00
+00
+00
+30
+C8
+CF
+00
+40
+2A
+2A
+20
+54
+45
+53
+54
+20
+53
+4B
+49
+50
+50
+45
+44
+20
+2A
+2A
+20
+44
+4D
+41
+20
+63
+6F
+6E
+74
+72
+6F
+6C
+6C
+65
+72
+20
+69
+73
+20
+6E
+6F
+74
+20
+70
+72
+65
+73
+65
+6E
+74
+2E
+0A
+00
+00
+78
+29
+00
+00
+3C
+2D
+2D
+2D
+20
+44
+4D
+41
+20
+53
+54
+41
+52
+54
+20
+2D
+2D
+2D
+3E
+0A
+00
+00
+00
+00
+C8
+28
+00
+00
+49
+6E
+69
+74
+69
+61
+6C
+69
+7A
+65
+20
+53
+52
+41
+4D
+2E
+2E
+2E
+20
+00
+64
+6F
+6E
+65
+0A
+00
+00
+00
+4E
+75
+6D
+62
+65
+72
+20
+6F
+66
+20
+44
+4D
+41
+20
+63
+68
+61
+6E
+6E
+65
+6C
+73
+3A
+20
+25
+64
+20
+0A
+00
+00
+00
+00
+4E
+75
+6D
+62
+65
+72
+20
+6F
+66
+20
+44
+4D
+41
+20
+74
+72
+69
+67
+67
+65
+72
+20
+69
+6E
+70
+75
+74
+73
+3A
+20
+25
+64
+20
+0A
+00
+00
+4E
+75
+6D
+62
+65
+72
+20
+6F
+66
+20
+44
+4D
+41
+20
+74
+72
+69
+67
+67
+65
+72
+20
+6F
+75
+74
+70
+75
+74
+73
+3A
+20
+25
+64
+20
+0A
+00
+2D
+2D
+2D
+53
+54
+41
+52
+54
+49
+4E
+47
+20
+53
+74
+72
+65
+61
+6D
+20
+69
+6E
+74
+65
+72
+66
+61
+63
+65
+20
+74
+65
+73
+74
+73
+2D
+2D
+2D
+0A
+00
+00
+80
+E2
+00
+E0
+00
+E1
+00
+E0
+44
+4D
+41
+20
+25
+64
+20
+63
+6F
+6E
+66
+69
+67
+75
+72
+65
+64
+2E
+20
+53
+74
+61
+72
+74
+69
+6E
+67
+20
+74
+68
+65
+20
+74
+72
+61
+6E
+73
+66
+65
+72
+2E
+0A
+00
+00
+52
+65
+74
+75
+72
+6E
+20
+66
+72
+6F
+6D
+20
+69
+6E
+74
+65
+72
+72
+75
+70
+74
+0A
+00
+00
+44
+4D
+41
+20
+74
+72
+61
+6E
+73
+66
+65
+72
+20
+66
+69
+6E
+69
+73
+68
+65
+64
+0A
+00
+00
+50
+61
+73
+73
+65
+64
+0A
+00
+80
+E1
+00
+E0
+0A
+2A
+2A
+20
+54
+45
+53
+54
+20
+46
+41
+49
+4C
+45
+44
+20
+2A
+2A
+2C
+20
+45
+72
+72
+6F
+72
+20
+63
+6F
+64
+65
+20
+3D
+20
+28
+30
+78
+25
+78
+29
+0A
+00
+00
+00
+00
+0A
+2A
+2A
+20
+54
+45
+53
+54
+20
+50
+41
+53
+53
+45
+44
+20
+2A
+2A
+0A
+00
+55
+6E
+6B
+6E
+6F
+77
+6E
+20
+49
+52
+51
+20
+6F
+6E
+20
+43
+48
+25
+64
+21
+0A
+00
+00
+00
+5B
+48
+61
+72
+64
+20
+46
+61
+75
+6C
+74
+20
+48
+61
+6E
+64
+6C
+65
+72
+5D
+00
+00
+00
+00
+20
+2D
+20
+53
+74
+61
+63
+6B
+65
+64
+20
+52
+30
+20
+3A
+20
+30
+78
+25
+78
+0A
+00
+00
+00
+20
+2D
+20
+53
+74
+61
+63
+6B
+65
+64
+20
+50
+43
+20
+3A
+20
+30
+78
+25
+78
+0A
+00
+00
+00
+10
+00
+00
+30
+45
+52
+52
+4F
+52
+20
+3A
+20
+55
+6E
+65
+78
+70
+65
+63
+74
+65
+64
+20
+48
+61
+72
+64
+46
+61
+75
+6C
+74
+20
+69
+6E
+74
+65
+72
+72
+75
+70
+74
+20
+6F
+63
+63
+75
+72
+72
+65
+64
+2E
+0A
+00
+00
+00
+04
+49
+03
+48
+08
+60
+70
+47
+02
+49
+01
+48
+08
+60
+70
+47
+00
+E1
+F5
+05
+18
+00
+00
+30
+07
+48
+80
+47
+07
+48
+00
+47
+FE
+E7
+FE
+E7
+FE
+E7
+FE
+E7
+FE
+E7
+FE
+E7
+04
+48
+05
+49
+05
+4A
+06
+4B
+70
+47
+00
+00
+DD
+07
+00
+00
+C1
+00
+00
+00
+90
+00
+00
+30
+90
+04
+00
+30
+90
+02
+00
+30
+90
+02
+00
+30
+10
+B5
+C0
+B2
+00
+F0
+1E
+F8
+10
+BD
+10
+B5
+00
+F0
+20
+F8
+00
+F0
+18
+F8
+10
+BD
+00
+20
+C0
+43
+70
+47
+10
+B5
+C0
+B2
+00
+F0
+10
+F8
+10
+BD
+FE
+E7
+41
+20
+10
+49
+40
+01
+08
+61
+01
+22
+8A
+60
+0E
+49
+08
+61
+03
+20
+88
+60
+0D
+49
+20
+20
+88
+61
+70
+47
+0A
+49
+4A
+68
+D2
+07
+FC
+D1
+08
+60
+70
+47
+07
+48
+41
+68
+89
+07
+FC
+D5
+00
+68
+C0
+B2
+70
+47
+04
+48
+04
+22
+41
+68
+C9
+07
+FC
+D1
+02
+60
+FE
+E7
+00
+60
+00
+40
+00
+E0
+00
+40
+00
+10
+01
+40
+70
+B5
+FD
+4D
+08
+28
+0E
+D2
+84
+00
+00
+29
+06
+D0
+01
+29
+06
+D0
+FA
+A0
+01
+F0
+CC
+FD
+28
+59
+70
+BD
+28
+59
+70
+BD
+FE
+48
+00
+59
+70
+BD
+01
+46
+FD
+A0
+01
+F0
+C1
+FD
+28
+68
+70
+BD
+10
+B5
+FF
+F7
+E4
+FF
+01
+68
+01
+22
+11
+43
+01
+60
+10
+BD
+08
+B5
+FF
+F7
+DC
+FF
+00
+68
+00
+90
+00
+98
+C0
+07
+C0
+0F
+08
+BD
+10
+B5
+FF
+F7
+D3
+FF
+01
+68
+08
+22
+11
+43
+01
+60
+10
+BD
+10
+B5
+FF
+F7
+CB
+FF
+01
+68
+04
+22
+11
+43
+01
+60
+10
+BD
+10
+B5
+FF
+F7
+C3
+FF
+01
+68
+02
+22
+11
+43
+01
+60
+10
+BD
+10
+B5
+FF
+F7
+BB
+FF
+01
+68
+10
+22
+11
+43
+01
+60
+10
+BD
+10
+B5
+FF
+F7
+B3
+FF
+01
+68
+20
+22
+11
+43
+01
+60
+10
+BD
+0F
+B4
+F0
+B5
+83
+B0
+04
+46
+0E
+9F
+0D
+9E
+0C
+9D
+11
+99
+10
+98
+FF
+F7
+A3
+FF
+04
+61
+0A
+99
+81
+61
+C1
+68
+01
+91
+01
+6A
+00
+91
+01
+99
+7A
+07
+C9
+08
+C9
+00
+52
+0F
+11
+43
+01
+91
+00
+99
+AA
+B2
+09
+0C
+09
+04
+11
+43
+00
+91
+00
+99
+32
+04
+89
+B2
+11
+43
+00
+91
+00
+99
+01
+62
+01
+99
+C1
+60
+03
+B0
+F0
+BC
+08
+BC
+04
+B0
+18
+47
+08
+B5
+FF
+F7
+7E
+FF
+00
+6A
+00
+90
+00
+98
+80
+B2
+08
+BD
+08
+B5
+FF
+F7
+76
+FF
+00
+6A
+00
+90
+00
+98
+00
+0C
+08
+BD
+F8
+B5
+0C
+46
+1D
+46
+06
+9E
+0B
+99
+0A
+98
+FF
+F7
+69
+FF
+44
+61
+C5
+61
+41
+6A
+00
+91
+00
+99
+0A
+0C
+12
+04
+31
+0C
+0A
+43
+00
+92
+00
+9A
+12
+0C
+12
+04
+0A
+43
+00
+92
+00
+99
+41
+62
+F8
+BD
+0F
+B4
+F0
+B5
+87
+B0
+84
+46
+0F
+46
+11
+A8
+2B
+C8
+10
+9E
+15
+9C
+00
+96
+05
+94
+03
+93
+02
+91
+01
+90
+04
+95
+39
+46
+60
+46
+0F
+9B
+FF
+F7
+95
+FF
+0F
+99
+00
+91
+28
+46
+21
+46
+FF
+F7
+3D
+FF
+47
+61
+00
+99
+C1
+61
+41
+6A
+00
+91
+00
+99
+0A
+0C
+12
+04
+31
+0C
+0A
+43
+00
+92
+00
+9A
+12
+0C
+12
+04
+0A
+43
+00
+92
+00
+99
+41
+62
+07
+B0
+F0
+BC
+08
+BC
+04
+B0
+18
+47
+38
+B5
+0B
+46
+04
+46
+11
+46
+18
+46
+FF
+F7
+1F
+FF
+81
+6A
+00
+91
+00
+99
+22
+07
+09
+09
+09
+01
+12
+0F
+11
+43
+00
+91
+00
+99
+F0
+22
+91
+43
+22
+06
+12
+0F
+12
+01
+11
+43
+00
+91
+00
+99
+03
+22
+12
+02
+91
+43
+A2
+05
+92
+0F
+12
+02
+11
+43
+00
+91
+00
+99
+01
+22
+92
+02
+91
+43
+62
+05
+D2
+0F
+92
+02
+11
+43
+00
+91
+00
+99
+01
+22
+D2
+02
+91
+43
+22
+05
+D2
+0F
+D2
+02
+11
+43
+00
+91
+00
+99
+81
+62
+38
+BD
+38
+B5
+0B
+46
+04
+46
+11
+46
+18
+46
+FF
+F7
+E9
+FE
+C1
+6A
+00
+91
+00
+99
+22
+07
+09
+09
+09
+01
+12
+0F
+11
+43
+00
+91
+00
+99
+F0
+22
+91
+43
+22
+06
+12
+0F
+12
+01
+11
+43
+00
+91
+00
+99
+03
+22
+12
+02
+91
+43
+A2
+05
+92
+0F
+12
+02
+11
+43
+00
+91
+00
+99
+01
+22
+92
+02
+91
+43
+62
+05
+D2
+0F
+92
+02
+11
+43
+00
+91
+00
+99
+01
+22
+D2
+02
+91
+43
+22
+05
+D2
+0F
+D2
+02
+11
+43
+00
+91
+00
+99
+C1
+62
+38
+BD
+10
+B5
+0B
+46
+04
+46
+84
+B0
+11
+46
+18
+46
+FF
+F7
+B2
+FE
+C1
+68
+00
+91
+01
+68
+01
+91
+81
+6A
+02
+91
+C1
+6A
+03
+91
+00
+99
+F0
+22
+91
+43
+22
+07
+12
+0E
+11
+43
+00
+91
+00
+99
+07
+22
+92
+04
+91
+43
+22
+06
+52
+0F
+92
+04
+11
+43
+00
+91
+00
+99
+07
+22
+52
+05
+91
+43
+62
+05
+52
+0F
+52
+05
+11
+43
+00
+91
+00
+99
+01
+22
+12
+06
+91
+43
+22
+05
+D2
+0F
+12
+06
+11
+43
+00
+91
+01
+99
+02
+22
+91
+43
+E2
+06
+D2
+0F
+52
+00
+11
+43
+01
+91
+02
+9A
+0F
+21
+09
+04
+23
+04
+1B
+0F
+8A
+43
+1B
+04
+1A
+43
+02
+92
+03
+9A
+8A
+43
+21
+03
+09
+0F
+09
+04
+0A
+43
+03
+92
+00
+99
+C1
+60
+01
+99
+01
+60
+02
+99
+81
+62
+03
+99
+C1
+62
+04
+B0
+10
+BD
+FF
+B5
+81
+B0
+0A
+9E
+0C
+46
+1D
+46
+32
+46
+19
+46
+FF
+F7
+A3
+FF
+28
+46
+31
+46
+FF
+F7
+59
+FE
+81
+6A
+00
+91
+00
+99
+22
+07
+09
+09
+09
+01
+12
+0F
+11
+43
+00
+91
+00
+99
+F0
+22
+91
+43
+22
+06
+12
+0F
+12
+01
+11
+43
+00
+91
+00
+99
+03
+22
+12
+02
+91
+43
+A2
+05
+92
+0F
+12
+02
+11
+43
+00
+91
+00
+99
+01
+22
+92
+02
+91
+43
+62
+05
+D2
+0F
+92
+02
+11
+43
+00
+91
+00
+99
+01
+27
+FF
+02
+22
+05
+D2
+0F
+B9
+43
+D2
+02
+11
+43
+00
+91
+00
+99
+81
+62
+28
+46
+31
+46
+03
+9C
+FF
+F7
+26
+FE
+C1
+6A
+00
+91
+00
+99
+22
+07
+09
+09
+09
+01
+12
+0F
+11
+43
+00
+91
+00
+99
+F0
+22
+91
+43
+22
+06
+12
+0F
+12
+01
+11
+43
+00
+91
+00
+99
+03
+22
+12
+02
+91
+43
+A2
+05
+92
+0F
+12
+02
+11
+43
+00
+91
+00
+99
+7A
+10
+91
+43
+62
+05
+D2
+0F
+92
+02
+11
+43
+2B
+E0
+20
+00
+00
+30
+45
+72
+72
+6F
+72
+20
+2D
+20
+53
+65
+63
+75
+72
+69
+74
+79
+20
+6D
+75
+73
+74
+20
+62
+65
+20
+30
+20
+6F
+72
+20
+31
+00
+28
+00
+00
+30
+45
+72
+72
+6F
+72
+20
+2D
+20
+50
+6F
+69
+6E
+74
+65
+72
+20
+66
+6F
+72
+20
+43
+68
+61
+6E
+6E
+65
+6C
+20
+25
+64
+20
+69
+73
+20
+6E
+6F
+74
+20
+64
+65
+66
+69
+6E
+65
+64
+00
+00
+00
+00
+91
+00
+99
+22
+05
+D2
+0F
+B9
+43
+D2
+02
+11
+43
+00
+91
+00
+99
+C1
+62
+05
+B0
+F0
+BD
+38
+B5
+0B
+46
+04
+46
+11
+46
+18
+46
+FF
+F7
+C5
+FD
+01
+6B
+00
+91
+00
+99
+A2
+B2
+09
+0C
+09
+04
+11
+43
+00
+91
+00
+99
+22
+0C
+89
+B2
+12
+04
+11
+43
+00
+91
+00
+99
+01
+63
+38
+BD
+0F
+B4
+F0
+B5
+87
+B0
+8E
+46
+94
+46
+12
+9F
+16
+9D
+11
+99
+10
+98
+15
+9E
+14
+9C
+13
+9A
+05
+95
+02
+97
+03
+92
+01
+91
+00
+90
+04
+96
+62
+46
+71
+46
+0C
+98
+FF
+F7
+EF
+FD
+30
+46
+29
+46
+FF
+F7
+99
+FD
+01
+6B
+00
+91
+00
+99
+A2
+B2
+09
+0C
+09
+04
+11
+43
+00
+91
+00
+99
+22
+0C
+89
+B2
+12
+04
+11
+43
+00
+91
+00
+99
+01
+63
+07
+B0
+F0
+BC
+08
+BC
+04
+B0
+18
+47
+30
+B5
+04
+46
+0D
+46
+83
+B0
+19
+46
+10
+46
+FF
+F7
+7C
+FD
+C1
+6B
+00
+91
+41
+6B
+01
+91
+00
+99
+A2
+B2
+09
+0C
+09
+04
+11
+43
+00
+91
+00
+99
+22
+0C
+89
+B2
+12
+04
+11
+43
+00
+91
+01
+99
+AA
+B2
+09
+0C
+09
+04
+11
+43
+01
+91
+01
+99
+2A
+0C
+89
+B2
+12
+04
+11
+43
+01
+91
+00
+99
+C1
+63
+01
+99
+41
+63
+03
+B0
+30
+BD
+0F
+B4
+F0
+B5
+87
+B0
+96
+46
+9C
+46
+10
+A8
+CF
+C8
+17
+9C
+16
+9D
+05
+94
+03
+93
+02
+92
+01
+91
+00
+90
+04
+95
+63
+46
+72
+46
+0D
+99
+0C
+98
+FF
+F7
+97
+FD
+28
+46
+21
+46
+FF
+F7
+41
+FD
+C1
+6B
+00
+91
+41
+6B
+01
+91
+00
+99
+B2
+B2
+09
+0C
+09
+04
+11
+43
+00
+91
+00
+99
+32
+0C
+89
+B2
+12
+04
+11
+43
+00
+91
+01
+99
+BA
+B2
+09
+0C
+09
+04
+11
+43
+01
+91
+01
+99
+3A
+0C
+89
+B2
+12
+04
+11
+43
+01
+91
+00
+99
+C1
+63
+01
+99
+41
+63
+07
+B0
+F0
+BC
+08
+BC
+04
+B0
+18
+47
+38
+B5
+05
+46
+0C
+46
+19
+46
+10
+46
+FF
+F7
+15
+FD
+C1
+68
+00
+91
+00
+99
+07
+22
+52
+02
+91
+43
+62
+07
+12
+0D
+11
+43
+00
+91
+00
+99
+07
+22
+12
+03
+91
+43
+A2
+06
+52
+0F
+12
+03
+11
+43
+00
+91
+00
+99
+C1
+60
+85
+63
+38
+BD
+0F
+B4
+F0
+B5
+87
+B0
+96
+46
+9C
+46
+10
+A8
+8F
+C8
+17
+9C
+16
+9D
+15
+9E
+05
+94
+03
+93
+02
+92
+01
+91
+00
+90
+04
+95
+63
+46
+72
+46
+0D
+99
+0C
+98
+FF
+F7
+3A
+FD
+28
+46
+21
+46
+FF
+F7
+E4
+FC
+C1
+68
+00
+91
+00
+99
+07
+22
+52
+02
+91
+43
+72
+07
+12
+0D
+11
+43
+00
+91
+00
+99
+07
+22
+12
+03
+91
+43
+B2
+06
+52
+0F
+12
+03
+11
+43
+00
+91
+00
+99
+C1
+60
+87
+63
+07
+B0
+F0
+BC
+08
+BC
+04
+B0
+18
+47
+0F
+B4
+F0
+B5
+87
+B0
+96
+46
+9C
+46
+10
+A8
+CF
+C8
+19
+9C
+05
+94
+03
+93
+02
+92
+18
+9D
+01
+91
+00
+90
+04
+95
+63
+46
+72
+46
+0D
+99
+0C
+98
+FF
+F7
+06
+FD
+28
+46
+21
+46
+FF
+F7
+B0
+FC
+C1
+6B
+00
+91
+41
+6B
+01
+91
+00
+99
+B2
+B2
+09
+0C
+09
+04
+11
+43
+00
+91
+00
+99
+32
+0C
+89
+B2
+12
+04
+11
+43
+00
+91
+01
+99
+BA
+B2
+09
+0C
+09
+04
+11
+43
+01
+91
+01
+99
+3A
+0C
+89
+B2
+12
+04
+11
+43
+01
+91
+00
+99
+C1
+63
+01
+99
+41
+63
+28
+46
+21
+46
+16
+9F
+17
+9E
+FF
+F7
+8A
+FC
+C1
+68
+00
+91
+00
+99
+07
+22
+52
+02
+91
+43
+72
+07
+12
+0D
+11
+43
+00
+91
+00
+99
+07
+22
+12
+03
+91
+43
+B2
+06
+52
+0F
+12
+03
+11
+43
+00
+91
+00
+99
+C1
+60
+87
+63
+07
+B0
+F0
+BC
+08
+BC
+04
+B0
+18
+47
+70
+B5
+84
+B0
+04
+46
+0D
+46
+16
+46
+18
+46
+08
+99
+FF
+F7
+66
+FC
+01
+6C
+00
+91
+00
+99
+1F
+22
+12
+02
+91
+43
+E2
+06
+D2
+0C
+11
+43
+00
+91
+00
+99
+1F
+22
+12
+04
+91
+43
+A2
+05
+D2
+0E
+12
+04
+11
+43
+00
+91
+01
+99
+6A
+08
+C9
+07
+C9
+0F
+52
+00
+11
+43
+01
+91
+02
+99
+72
+08
+C9
+07
+C9
+0F
+52
+00
+11
+43
+02
+91
+00
+99
+01
+64
+01
+99
+41
+64
+02
+99
+81
+64
+04
+B0
+70
+BD
+0F
+B4
+F0
+B5
+87
+B0
+96
+46
+9C
+46
+10
+A8
+CF
+C8
+17
+9D
+18
+9C
+05
+94
+03
+93
+02
+92
+01
+91
+00
+90
+04
+95
+63
+46
+72
+46
+0D
+99
+0C
+98
+FF
+F7
+7A
+FC
+16
+99
+03
+91
+28
+46
+21
+46
+FF
+F7
+22
+FC
+01
+6C
+00
+91
+00
+99
+1F
+22
+12
+02
+91
+43
+F2
+06
+D2
+0C
+11
+43
+00
+91
+00
+99
+1F
+22
+12
+04
+91
+43
+B2
+05
+D2
+0E
+12
+04
+11
+43
+00
+91
+01
+99
+7A
+08
+C9
+07
+C9
+0F
+52
+00
+11
+43
+01
+91
+02
+99
+CA
+07
+03
+99
+D2
+0F
+49
+08
+49
+00
+0A
+43
+02
+92
+00
+99
+01
+64
+01
+99
+41
+64
+02
+99
+81
+64
+07
+B0
+F0
+BC
+08
+BC
+04
+B0
+18
+47
+08
+B5
+FF
+F7
+F2
+FB
+40
+68
+00
+90
+00
+98
+C0
+03
+C1
+0F
+60
+08
+40
+00
+08
+43
+00
+99
+02
+22
+89
+03
+C9
+0F
+49
+00
+90
+43
+08
+43
+00
+99
+04
+22
+49
+03
+C9
+0F
+89
+00
+90
+43
+08
+43
+00
+99
+08
+22
+09
+03
+C9
+0F
+C9
+00
+90
+43
+08
+43
+00
+99
+10
+22
+C9
+02
+C9
+0F
+09
+01
+90
+43
+08
+43
+00
+99
+20
+22
+89
+02
+C9
+0F
+49
+01
+90
+43
+08
+43
+08
+BD
+08
+B5
+FF
+F7
+C3
+FB
+40
+68
+00
+90
+00
+98
+C0
+03
+C0
+0F
+08
+BD
+08
+B5
+FF
+F7
+BA
+FB
+40
+68
+00
+90
+00
+98
+80
+03
+C0
+0F
+08
+BD
+08
+B5
+FF
+F7
+B1
+FB
+40
+68
+00
+90
+00
+98
+40
+03
+C0
+0F
+08
+BD
+08
+B5
+FF
+F7
+A8
+FB
+40
+68
+00
+90
+00
+98
+00
+03
+C0
+0F
+08
+BD
+08
+B5
+FF
+F7
+9F
+FB
+40
+68
+00
+90
+00
+98
+C0
+02
+C0
+0F
+08
+BD
+08
+B5
+FF
+F7
+96
+FB
+40
+68
+00
+90
+00
+98
+80
+02
+C0
+0F
+08
+BD
+08
+B5
+FF
+F7
+8D
+FB
+41
+68
+00
+91
+00
+99
+01
+22
+12
+04
+11
+43
+00
+91
+00
+99
+52
+00
+91
+43
+00
+91
+00
+99
+52
+00
+91
+43
+00
+91
+00
+99
+52
+00
+91
+43
+00
+91
+00
+99
+41
+60
+08
+BD
+08
+B5
+FF
+F7
+74
+FB
+41
+68
+00
+91
+00
+99
+01
+22
+52
+04
+11
+43
+00
+91
+00
+99
+52
+10
+91
+43
+00
+91
+00
+99
+92
+00
+91
+43
+00
+91
+00
+99
+52
+00
+91
+43
+00
+91
+00
+99
+41
+60
+08
+BD
+08
+B5
+FF
+F7
+5B
+FB
+41
+68
+00
+91
+00
+99
+01
+22
+92
+04
+11
+43
+00
+91
+00
+99
+92
+10
+91
+43
+00
+91
+00
+99
+52
+00
+91
+43
+00
+91
+00
+99
+92
+00
+91
+43
+00
+91
+00
+99
+41
+60
+08
+BD
+08
+B5
+FF
+F7
+42
+FB
+41
+68
+00
+91
+00
+99
+01
+22
+D2
+04
+11
+43
+00
+91
+00
+99
+D2
+10
+91
+43
+00
+91
+00
+99
+52
+00
+91
+43
+00
+91
+00
+99
+52
+00
+91
+43
+00
+91
+00
+99
+41
+60
+08
+BD
+08
+B5
+FF
+F7
+29
+FB
+41
+68
+00
+91
+00
+99
+01
+22
+D2
+04
+11
+43
+00
+91
+00
+99
+D2
+10
+11
+43
+00
+91
+00
+99
+52
+00
+11
+43
+00
+91
+00
+99
+52
+00
+11
+43
+00
+91
+00
+99
+41
+60
+08
+BD
+08
+B5
+FF
+F7
+10
+FB
+40
+68
+00
+90
+00
+98
+C0
+01
+C1
+0F
+60
+08
+40
+00
+08
+43
+00
+99
+02
+22
+89
+01
+C9
+0F
+49
+00
+90
+43
+08
+43
+00
+99
+04
+22
+49
+01
+C9
+0F
+89
+00
+90
+43
+08
+43
+08
+BD
+08
+B5
+FF
+F7
+F6
+FA
+40
+68
+00
+90
+00
+98
+C0
+01
+C0
+0F
+08
+BD
+08
+B5
+FF
+F7
+ED
+FA
+40
+68
+00
+90
+00
+98
+80
+01
+C0
+0F
+08
+BD
+08
+B5
+FF
+F7
+E4
+FA
+40
+68
+00
+90
+00
+98
+40
+01
+C0
+0F
+08
+BD
+08
+B5
+FF
+F7
+DB
+FA
+40
+68
+00
+90
+00
+98
+C1
+07
+C9
+0F
+60
+08
+40
+00
+08
+43
+00
+99
+02
+22
+89
+07
+C9
+0F
+49
+00
+90
+43
+08
+43
+00
+99
+04
+22
+49
+07
+C9
+0F
+89
+00
+90
+43
+08
+43
+00
+99
+08
+22
+09
+07
+C9
+0F
+C9
+00
+90
+43
+08
+43
+00
+99
+10
+22
+C9
+05
+C9
+0F
+09
+01
+90
+43
+08
+43
+00
+99
+20
+22
+89
+05
+C9
+0F
+49
+01
+90
+43
+08
+43
+00
+99
+40
+22
+49
+05
+C9
+0F
+89
+01
+90
+43
+08
+43
+08
+BD
+38
+B5
+0B
+46
+04
+46
+11
+46
+18
+46
+FF
+F7
+A1
+FA
+81
+68
+00
+91
+00
+99
+E2
+07
+49
+08
+49
+00
+D2
+0F
+11
+43
+00
+91
+00
+99
+02
+22
+91
+43
+A2
+07
+D2
+0F
+52
+00
+11
+43
+00
+91
+00
+99
+04
+22
+91
+43
+62
+07
+D2
+0F
+92
+00
+11
+43
+00
+91
+00
+99
+08
+22
+91
+43
+22
+07
+D2
+0F
+D2
+00
+11
+43
+00
+91
+00
+99
+81
+60
+38
+BD
+38
+B5
+0B
+46
+04
+46
+11
+46
+18
+46
+FF
+F7
+76
+FA
+81
+68
+00
+91
+00
+99
+E2
+07
+49
+08
+49
+00
+D2
+0F
+11
+43
+00
+91
+00
+99
+81
+60
+38
+BD
+38
+B5
+0B
+46
+04
+46
+11
+46
+18
+46
+FF
+F7
+63
+FA
+81
+68
+00
+91
+00
+99
+02
+22
+91
+43
+E2
+07
+92
+0F
+11
+43
+00
+91
+00
+99
+81
+60
+38
+BD
+38
+B5
+0B
+46
+04
+46
+11
+46
+18
+46
+FF
+F7
+50
+FA
+81
+68
+00
+91
+00
+99
+04
+22
+91
+43
+E2
+07
+52
+0F
+11
+43
+00
+91
+00
+99
+81
+60
+38
+BD
+38
+B5
+0B
+46
+04
+46
+11
+46
+18
+46
+FF
+F7
+3D
+FA
+81
+68
+00
+91
+00
+99
+08
+22
+91
+43
+E2
+07
+12
+0F
+11
+43
+00
+91
+00
+99
+81
+60
+38
+BD
+38
+B5
+0B
+46
+04
+46
+11
+46
+18
+46
+FF
+F7
+2A
+FA
+81
+68
+00
+91
+00
+99
+FF
+22
+01
+32
+91
+43
+E2
+07
+D2
+0D
+11
+43
+00
+91
+00
+99
+01
+22
+52
+02
+91
+43
+A2
+07
+D2
+0F
+52
+02
+11
+43
+00
+91
+00
+99
+01
+22
+92
+02
+91
+43
+62
+07
+D2
+0F
+92
+02
+11
+43
+00
+91
+00
+99
+81
+60
+38
+BD
+38
+B5
+0B
+46
+04
+46
+11
+46
+18
+46
+FF
+F7
+04
+FA
+81
+68
+00
+91
+00
+99
+FF
+22
+01
+32
+91
+43
+E2
+07
+D2
+0D
+11
+43
+00
+91
+00
+99
+81
+60
+38
+BD
+38
+B5
+0B
+46
+04
+46
+11
+46
+18
+46
+FF
+F7
+F0
+F9
+81
+68
+00
+91
+00
+99
+01
+22
+52
+02
+91
+43
+E2
+07
+92
+0D
+11
+43
+00
+91
+00
+99
+81
+60
+38
+BD
+38
+B5
+0B
+46
+04
+46
+11
+46
+18
+46
+FF
+F7
+DC
+F9
+81
+68
+00
+91
+00
+99
+01
+22
+92
+02
+91
+43
+E2
+07
+52
+0D
+11
+43
+00
+91
+00
+99
+81
+60
+38
+BD
+08
+B5
+FF
+F7
+CC
+F9
+80
+30
+00
+69
+00
+90
+00
+98
+C1
+07
+C9
+0F
+60
+08
+40
+00
+08
+43
+00
+99
+02
+22
+89
+07
+C9
+0F
+49
+00
+90
+43
+08
+43
+00
+99
+04
+22
+49
+07
+C9
+0F
+89
+00
+90
+43
+08
+43
+00
+99
+08
+22
+09
+07
+C9
+0F
+C9
+00
+90
+43
+08
+43
+00
+99
+10
+22
+C9
+06
+C9
+0F
+09
+01
+90
+43
+08
+43
+00
+99
+20
+22
+09
+06
+C9
+0F
+49
+01
+90
+43
+08
+43
+00
+99
+FC
+4A
+09
+0C
+89
+01
+10
+40
+08
+43
+08
+BD
+08
+B5
+FF
+F7
+96
+F9
+00
+68
+00
+90
+00
+98
+C0
+03
+C1
+0F
+60
+08
+40
+00
+08
+43
+00
+99
+06
+22
+49
+03
+89
+0F
+49
+00
+90
+43
+08
+43
+08
+BD
+08
+B5
+FF
+F7
+83
+F9
+00
+68
+00
+90
+00
+98
+C0
+02
+C1
+0F
+60
+08
+40
+00
+08
+43
+00
+99
+06
+22
+49
+02
+89
+0F
+49
+00
+90
+43
+08
+43
+08
+BD
+08
+B5
+FF
+F7
+70
+F9
+00
+68
+00
+90
+00
+98
+C0
+01
+C0
+0F
+08
+BD
+38
+B5
+0B
+46
+04
+46
+11
+46
+18
+46
+FF
+F7
+63
+F9
+01
+68
+00
+91
+00
+99
+01
+22
+12
+05
+11
+43
+00
+91
+00
+99
+03
+22
+52
+05
+91
+43
+A2
+07
+52
+0A
+11
+43
+00
+91
+00
+99
+49
+08
+49
+00
+00
+91
+00
+99
+02
+22
+91
+43
+00
+91
+00
+99
+04
+22
+91
+43
+00
+91
+00
+99
+08
+22
+91
+43
+00
+91
+00
+99
+10
+22
+91
+43
+00
+91
+00
+99
+20
+22
+91
+43
+00
+91
+00
+99
+D2
+02
+91
+43
+00
+91
+00
+99
+12
+02
+91
+43
+00
+91
+00
+99
+01
+60
+38
+BD
+38
+B5
+0B
+46
+04
+46
+11
+46
+18
+46
+FF
+F7
+2A
+F9
+01
+68
+00
+91
+00
+99
+01
+22
+12
+04
+11
+43
+00
+91
+00
+99
+03
+22
+52
+04
+91
+43
+A2
+07
+52
+0B
+11
+43
+00
+91
+00
+99
+49
+08
+49
+00
+00
+91
+00
+99
+02
+22
+91
+43
+00
+91
+00
+99
+04
+22
+91
+43
+00
+91
+00
+99
+08
+22
+91
+43
+00
+91
+00
+99
+10
+22
+91
+43
+00
+91
+00
+99
+20
+22
+91
+43
+00
+91
+00
+99
+D2
+03
+91
+43
+00
+91
+00
+99
+12
+01
+91
+43
+00
+91
+00
+99
+01
+60
+38
+BD
+08
+B5
+FF
+F7
+F5
+F8
+01
+68
+00
+91
+00
+99
+01
+22
+12
+06
+11
+43
+00
+91
+00
+99
+49
+08
+49
+00
+00
+91
+00
+99
+02
+22
+91
+43
+00
+91
+00
+99
+04
+22
+91
+43
+00
+91
+00
+99
+08
+22
+91
+43
+00
+91
+00
+99
+10
+22
+91
+43
+00
+91
+00
+99
+20
+22
+91
+43
+00
+91
+00
+99
+D2
+03
+91
+43
+00
+91
+00
+99
+12
+11
+91
+43
+00
+91
+00
+99
+01
+60
+08
+BD
+38
+B5
+0B
+46
+04
+46
+11
+46
+18
+46
+FF
+F7
+C4
+F8
+C1
+68
+00
+91
+C2
+6C
+00
+99
+01
+23
+5B
+06
+99
+43
+E3
+07
+9B
+09
+19
+43
+00
+91
+E1
+05
+0B
+0E
+11
+0A
+09
+02
+19
+43
+03
+22
+12
+02
+91
+43
+62
+05
+92
+0F
+12
+02
+11
+43
+03
+22
+92
+02
+91
+43
+E2
+04
+92
+0F
+92
+02
+11
+43
+FF
+23
+E2
+02
+1B
+04
+12
+0E
+12
+04
+99
+43
+1A
+40
+11
+43
+C1
+64
+00
+99
+C1
+60
+38
+BD
+38
+B5
+0B
+46
+04
+46
+11
+46
+18
+46
+FF
+F7
+93
+F8
+C1
+68
+00
+91
+00
+99
+01
+22
+52
+06
+91
+43
+E2
+07
+92
+09
+11
+43
+00
+91
+00
+99
+C1
+60
+38
+BD
+10
+B5
+0B
+46
+04
+46
+82
+B0
+11
+46
+18
+46
+FF
+F7
+7E
+F8
+C1
+68
+01
+91
+01
+6D
+00
+91
+01
+99
+01
+22
+92
+06
+91
+43
+E2
+07
+52
+09
+11
+43
+01
+91
+00
+99
+E2
+05
+09
+0A
+09
+02
+12
+0E
+11
+43
+00
+91
+00
+99
+03
+22
+12
+02
+91
+43
+62
+05
+92
+0F
+12
+02
+11
+43
+00
+91
+00
+99
+03
+22
+92
+02
+91
+43
+E2
+04
+92
+0F
+92
+02
+11
+43
+00
+91
+00
+99
+FF
+22
+12
+04
+91
+43
+E2
+02
+12
+0E
+12
+04
+11
+43
+00
+91
+00
+99
+01
+65
+01
+99
+C1
+60
+02
+B0
+10
+BD
+38
+B5
+0B
+46
+04
+46
+11
+46
+18
+46
+FF
+F7
+43
+F8
+C1
+68
+00
+91
+00
+99
+01
+22
+92
+06
+91
+43
+E2
+07
+52
+09
+11
+43
+00
+91
+00
+99
+C1
+60
+38
+BD
+10
+B5
+0B
+46
+04
+46
+82
+B0
+11
+46
+18
+46
+FF
+F7
+2E
+F8
+C1
+68
+01
+91
+41
+6D
+00
+91
+01
+99
+01
+22
+D2
+06
+91
+43
+E2
+07
+12
+09
+11
+43
+01
+91
+00
+99
+62
+06
+89
+09
+89
+01
+92
+0E
+11
+43
+00
+91
+00
+99
+03
+22
+12
+02
+91
+43
+E2
+05
+92
+0F
+12
+02
+11
+43
+00
+91
+00
+99
+41
+65
+01
+99
+C1
+60
+02
+B0
+10
+BD
+38
+B5
+0B
+46
+04
+46
+11
+46
+18
+46
+FF
+F7
+05
+F8
+C1
+68
+00
+91
+00
+99
+01
+22
+D2
+06
+91
+43
+E2
+07
+12
+09
+11
+43
+00
+91
+00
+99
+C1
+60
+38
+BD
+10
+B5
+0B
+46
+04
+46
+82
+B0
+11
+46
+18
+46
+FE
+F7
+F0
+FF
+C1
+68
+01
+91
+81
+6E
+00
+91
+00
+99
+03
+22
+52
+02
+91
+43
+A2
+07
+52
+0D
+11
+43
+00
+91
+00
+99
+81
+66
+01
+99
+C1
+60
+02
+B0
+10
+BD
+38
+B5
+0B
+46
+04
+46
+11
+46
+18
+46
+FE
+F7
+D7
+FF
+C1
+68
+00
+91
+00
+99
+01
+22
+52
+07
+91
+43
+E2
+07
+92
+08
+11
+43
+00
+91
+00
+99
+C1
+60
+38
+BD
+38
+B5
+0B
+46
+04
+46
+11
+46
+18
+46
+FE
+F7
+C3
+FF
+01
+6F
+00
+91
+00
+99
+22
+07
+09
+09
+09
+01
+12
+0F
+11
+43
+00
+91
+00
+99
+F0
+22
+91
+43
+22
+06
+12
+0F
+12
+01
+11
+43
+00
+91
+00
+99
+03
+22
+12
+02
+91
+43
+A2
+05
+92
+0F
+12
+02
+11
+43
+00
+91
+00
+99
+01
+67
+38
+BD
+3F
+00
+C0
+FF
+38
+B5
+05
+46
+0C
+46
+19
+46
+10
+46
+FE
+F7
+9D
+FF
+81
+6F
+00
+91
+00
+99
+EA
+07
+49
+08
+49
+00
+D2
+0F
+11
+43
+00
+91
+00
+99
+8A
+07
+92
+0F
+69
+19
+64
+41
+23
+07
+09
+09
+19
+43
+89
+00
+0A
+43
+00
+92
+00
+99
+81
+67
+A1
+08
+C1
+67
+38
+BD
+08
+B5
+FE
+F7
+81
+FF
+00
+6F
+00
+90
+00
+98
+00
+98
+00
+20
+08
+BD
+08
+B5
+FE
+F7
+78
+FF
+00
+6F
+00
+90
+00
+98
+80
+05
+80
+0F
+08
+BD
+00
+B5
+83
+B0
+FE
+F7
+6E
+FF
+81
+6F
+01
+91
+C0
+6F
+00
+90
+00
+9A
+01
+98
+03
+B0
+80
+08
+80
+00
+C1
+17
+11
+43
+00
+BD
+38
+B5
+0B
+46
+04
+46
+11
+46
+18
+46
+FE
+F7
+5B
+FF
+41
+6F
+00
+91
+00
+99
+A2
+B2
+09
+0C
+09
+04
+11
+43
+00
+91
+00
+99
+01
+22
+12
+04
+91
+43
+E2
+03
+D2
+0F
+12
+04
+11
+43
+00
+91
+00
+99
+41
+67
+38
+BD
+38
+B5
+0B
+46
+04
+46
+11
+46
+18
+46
+FE
+F7
+40
+FF
+41
+6F
+00
+91
+00
+99
+09
+0C
+09
+04
+21
+43
+00
+91
+00
+99
+41
+67
+38
+BD
+38
+B5
+0B
+46
+04
+46
+11
+46
+18
+46
+FE
+F7
+2F
+FF
+41
+6F
+00
+91
+00
+99
+01
+22
+12
+04
+91
+43
+E2
+07
+D2
+0B
+11
+43
+00
+91
+00
+99
+41
+67
+38
+BD
+70
+B5
+84
+B0
+05
+46
+16
+46
+00
+24
+18
+46
+08
+99
+FE
+F7
+19
+FF
+C1
+68
+02
+91
+81
+6D
+00
+91
+01
+6E
+01
+91
+20
+2E
+10
+D2
+00
+2E
+0B
+D0
+F1
+07
+00
+D0
+01
+24
+71
+08
+06
+D0
+62
+00
+52
+1C
+54
+00
+49
+1E
+64
+1C
+00
+29
+F8
+D1
+00
+99
+00
+94
+03
+E0
+00
+99
+00
+21
+C9
+43
+00
+91
+01
+99
+01
+95
+02
+99
+01
+22
+12
+07
+11
+43
+02
+91
+00
+99
+81
+65
+01
+99
+01
+66
+02
+99
+C1
+60
+04
+B0
+70
+BD
+F9
+48
+00
+68
+70
+47
+F8
+48
+00
+68
+70
+47
+F6
+49
+81
+B0
+89
+68
+00
+91
+00
+99
+40
+08
+C9
+07
+C9
+0F
+40
+00
+08
+43
+00
+99
+02
+22
+89
+07
+C9
+0F
+49
+00
+90
+43
+08
+43
+00
+99
+04
+22
+49
+07
+C9
+0F
+89
+00
+90
+43
+08
+43
+00
+99
+08
+22
+09
+07
+C9
+0F
+C9
+00
+90
+43
+08
+43
+01
+B0
+70
+47
+E6
+49
+81
+B0
+89
+68
+00
+91
+00
+99
+40
+08
+C9
+07
+C9
+0F
+40
+00
+08
+43
+00
+99
+02
+22
+89
+07
+C9
+0F
+49
+00
+90
+43
+08
+43
+00
+99
+04
+22
+49
+07
+C9
+0F
+89
+00
+90
+43
+08
+43
+00
+99
+08
+22
+09
+07
+C9
+0F
+C9
+00
+90
+43
+08
+43
+01
+B0
+70
+47
+D5
+48
+81
+B0
+80
+68
+00
+90
+00
+98
+01
+B0
+C0
+07
+C0
+0F
+70
+47
+D1
+48
+81
+B0
+80
+68
+00
+90
+00
+98
+01
+B0
+C0
+07
+C0
+0F
+70
+47
+CC
+48
+81
+B0
+80
+68
+00
+90
+00
+98
+01
+B0
+80
+07
+C0
+0F
+70
+47
+C8
+48
+81
+B0
+80
+68
+00
+90
+00
+98
+01
+B0
+80
+07
+C0
+0F
+70
+47
+C3
+48
+81
+B0
+80
+68
+00
+90
+00
+98
+01
+B0
+40
+07
+C0
+0F
+70
+47
+BF
+48
+81
+B0
+80
+68
+00
+90
+00
+98
+01
+B0
+40
+07
+C0
+0F
+70
+47
+BA
+48
+81
+B0
+80
+68
+00
+90
+00
+98
+01
+B0
+00
+07
+C0
+0F
+70
+47
+B6
+48
+81
+B0
+80
+68
+00
+90
+00
+98
+01
+B0
+00
+07
+C0
+0F
+70
+47
+B2
+49
+81
+B0
+89
+68
+00
+91
+00
+99
+40
+08
+89
+03
+C9
+0F
+40
+00
+08
+43
+00
+99
+02
+22
+49
+03
+C9
+0F
+49
+00
+90
+43
+08
+43
+00
+99
+04
+22
+09
+03
+C9
+0F
+89
+00
+90
+43
+08
+43
+01
+B0
+70
+47
+A4
+49
+81
+B0
+89
+68
+00
+91
+00
+99
+40
+08
+89
+03
+C9
+0F
+40
+00
+08
+43
+00
+99
+02
+22
+49
+03
+C9
+0F
+49
+00
+90
+43
+08
+43
+00
+99
+04
+22
+09
+03
+C9
+0F
+89
+00
+90
+43
+08
+43
+01
+B0
+70
+47
+98
+49
+81
+B0
+8A
+68
+00
+92
+00
+9A
+01
+23
+5B
+04
+9A
+43
+C3
+07
+9B
+0B
+1A
+43
+00
+92
+00
+9A
+01
+23
+9B
+04
+9A
+43
+83
+07
+DB
+0F
+9B
+04
+1A
+43
+00
+92
+00
+9A
+01
+23
+DB
+04
+40
+07
+C0
+0F
+9A
+43
+C0
+04
+02
+43
+00
+92
+00
+98
+88
+60
+01
+B0
+70
+47
+86
+49
+81
+B0
+8A
+68
+00
+92
+00
+9A
+01
+23
+5B
+04
+9A
+43
+C3
+07
+9B
+0B
+1A
+43
+00
+92
+00
+9A
+01
+23
+9B
+04
+9A
+43
+83
+07
+DB
+0F
+9B
+04
+1A
+43
+00
+92
+00
+9A
+01
+23
+DB
+04
+40
+07
+C0
+0F
+9A
+43
+C0
+04
+02
+43
+00
+92
+00
+98
+88
+60
+01
+B0
+70
+47
+76
+48
+81
+B0
+81
+68
+00
+91
+00
+99
+01
+22
+52
+04
+11
+43
+00
+91
+00
+99
+52
+00
+91
+43
+00
+91
+00
+99
+52
+00
+91
+43
+00
+91
+00
+99
+81
+60
+01
+B0
+70
+47
+6A
+48
+81
+B0
+81
+68
+00
+91
+00
+99
+01
+22
+52
+04
+11
+43
+00
+91
+00
+99
+52
+00
+91
+43
+00
+91
+00
+99
+52
+00
+91
+43
+00
+91
+00
+99
+81
+60
+01
+B0
+70
+47
+61
+48
+81
+B0
+81
+68
+00
+91
+00
+99
+01
+22
+52
+04
+91
+43
+00
+91
+00
+99
+52
+00
+11
+43
+00
+91
+00
+99
+52
+00
+91
+43
+00
+91
+00
+99
+81
+60
+01
+B0
+70
+47
+55
+48
+81
+B0
+81
+68
+00
+91
+00
+99
+01
+22
+52
+04
+91
+43
+00
+91
+00
+99
+52
+00
+11
+43
+00
+91
+00
+99
+52
+00
+91
+43
+00
+91
+00
+99
+81
+60
+01
+B0
+70
+47
+4C
+48
+81
+B0
+81
+68
+00
+91
+00
+99
+01
+22
+52
+04
+91
+43
+00
+91
+00
+99
+52
+00
+91
+43
+00
+91
+00
+99
+52
+00
+11
+43
+00
+91
+00
+99
+81
+60
+01
+B0
+70
+47
+40
+48
+81
+B0
+81
+68
+00
+91
+00
+99
+01
+22
+52
+04
+91
+43
+00
+91
+00
+99
+52
+00
+91
+43
+00
+91
+00
+99
+52
+00
+11
+43
+00
+91
+00
+99
+81
+60
+01
+B0
+70
+47
+37
+49
+81
+B0
+CA
+68
+00
+92
+00
+9A
+C3
+07
+52
+08
+52
+00
+DB
+0F
+1A
+43
+00
+92
+00
+9A
+02
+23
+9A
+43
+83
+07
+DB
+0F
+5B
+00
+1A
+43
+00
+92
+00
+9A
+04
+23
+9A
+43
+43
+07
+DB
+0F
+9B
+00
+1A
+43
+00
+92
+00
+9A
+00
+07
+08
+23
+C0
+0F
+9A
+43
+C0
+00
+02
+43
+00
+92
+00
+98
+C8
+60
+01
+B0
+70
+47
+22
+49
+81
+B0
+CA
+68
+00
+92
+00
+9A
+C3
+07
+52
+08
+52
+00
+DB
+0F
+1A
+43
+00
+92
+00
+9A
+02
+23
+9A
+43
+83
+07
+DB
+0F
+5B
+00
+1A
+43
+00
+92
+00
+9A
+04
+23
+9A
+43
+43
+07
+DB
+0F
+9B
+00
+1A
+43
+00
+92
+00
+9A
+00
+07
+08
+23
+C0
+0F
+9A
+43
+C0
+00
+02
+43
+00
+92
+00
+98
+C8
+60
+01
+B0
+70
+47
+10
+49
+81
+B0
+CA
+68
+00
+92
+00
+9A
+C0
+07
+52
+08
+52
+00
+C0
+0F
+02
+43
+00
+92
+00
+98
+C8
+60
+01
+B0
+70
+47
+07
+49
+81
+B0
+CA
+68
+00
+92
+00
+9A
+C0
+07
+52
+08
+52
+00
+C0
+0F
+02
+43
+00
+92
+00
+98
+C8
+60
+01
+B0
+70
+47
+00
+00
+00
+C2
+00
+40
+00
+C1
+00
+40
+FA
+49
+81
+B0
+CA
+68
+00
+92
+00
+9A
+02
+23
+C0
+07
+9A
+43
+80
+0F
+02
+43
+00
+92
+00
+98
+C8
+60
+01
+B0
+70
+47
+F4
+49
+81
+B0
+CA
+68
+00
+92
+00
+9A
+02
+23
+C0
+07
+9A
+43
+80
+0F
+02
+43
+00
+92
+00
+98
+C8
+60
+01
+B0
+70
+47
+EB
+49
+81
+B0
+CA
+68
+00
+92
+00
+9A
+04
+23
+C0
+07
+9A
+43
+40
+0F
+02
+43
+00
+92
+00
+98
+C8
+60
+01
+B0
+70
+47
+E5
+49
+81
+B0
+CA
+68
+00
+92
+00
+9A
+04
+23
+C0
+07
+9A
+43
+40
+0F
+02
+43
+00
+92
+00
+98
+C8
+60
+01
+B0
+70
+47
+DC
+49
+81
+B0
+CA
+68
+00
+92
+00
+9A
+08
+23
+C0
+07
+9A
+43
+00
+0F
+02
+43
+00
+92
+00
+98
+C8
+60
+01
+B0
+70
+47
+D6
+49
+81
+B0
+CA
+68
+00
+92
+00
+9A
+08
+23
+C0
+07
+9A
+43
+00
+0F
+02
+43
+00
+92
+00
+98
+C8
+60
+01
+B0
+70
+47
+CD
+49
+81
+B0
+CA
+68
+00
+92
+00
+9A
+C0
+07
+52
+08
+52
+00
+C0
+0F
+02
+43
+00
+92
+00
+98
+C8
+60
+01
+B0
+70
+47
+C7
+49
+81
+B0
+CA
+68
+00
+92
+00
+9A
+C0
+07
+52
+08
+52
+00
+C0
+0F
+02
+43
+00
+92
+00
+98
+C8
+60
+01
+B0
+70
+47
+BE
+48
+81
+B0
+C1
+68
+00
+91
+00
+99
+82
+15
+11
+43
+00
+91
+00
+99
+C1
+60
+01
+B0
+70
+47
+B9
+48
+81
+B0
+C1
+68
+00
+91
+00
+99
+82
+15
+11
+43
+00
+91
+00
+99
+C1
+60
+01
+B0
+70
+47
+B2
+48
+81
+B0
+C1
+68
+00
+91
+00
+99
+42
+15
+11
+43
+00
+91
+00
+99
+C1
+60
+01
+B0
+70
+47
+AD
+48
+81
+B0
+C1
+68
+00
+91
+00
+99
+42
+15
+11
+43
+00
+91
+00
+99
+C1
+60
+01
+B0
+70
+47
+A6
+49
+81
+B0
+CA
+68
+00
+92
+00
+9A
+92
+00
+92
+08
+80
+07
+02
+43
+00
+92
+00
+98
+C8
+60
+01
+B0
+70
+47
+A0
+49
+81
+B0
+CA
+68
+00
+92
+00
+9A
+92
+00
+92
+08
+80
+07
+02
+43
+00
+92
+00
+98
+C8
+60
+01
+B0
+70
+47
+98
+49
+82
+B0
+8A
+69
+00
+92
+4A
+69
+01
+92
+01
+9A
+83
+06
+92
+09
+92
+01
+9B
+0E
+1A
+43
+01
+92
+00
+9A
+83
+02
+12
+0C
+12
+04
+1B
+0C
+1A
+43
+00
+92
+00
+9A
+01
+23
+1B
+04
+9A
+43
+43
+02
+DB
+0F
+1B
+04
+1A
+43
+00
+92
+00
+9A
+01
+23
+5B
+04
+00
+02
+C0
+0F
+9A
+43
+40
+04
+02
+43
+00
+92
+01
+98
+48
+61
+00
+98
+88
+61
+02
+B0
+70
+47
+83
+49
+82
+B0
+8A
+69
+00
+92
+4A
+69
+01
+92
+01
+9A
+83
+06
+92
+09
+92
+01
+9B
+0E
+1A
+43
+01
+92
+00
+9A
+83
+02
+12
+0C
+12
+04
+1B
+0C
+1A
+43
+00
+92
+00
+9A
+01
+23
+1B
+04
+9A
+43
+43
+02
+DB
+0F
+1B
+04
+1A
+43
+00
+92
+00
+9A
+01
+23
+5B
+04
+00
+02
+C0
+0F
+9A
+43
+40
+04
+02
+43
+00
+92
+01
+98
+48
+61
+00
+98
+88
+61
+02
+B0
+70
+47
+6C
+49
+81
+B0
+4A
+69
+00
+92
+00
+9A
+80
+06
+92
+09
+92
+01
+80
+0E
+02
+43
+00
+92
+00
+98
+48
+61
+01
+B0
+70
+47
+66
+49
+81
+B0
+4A
+69
+00
+92
+00
+9A
+80
+06
+92
+09
+92
+01
+80
+0E
+02
+43
+00
+92
+00
+98
+48
+61
+01
+B0
+70
+47
+F8
+B5
+05
+46
+0E
+46
+5E
+A0
+00
+F0
+8E
+F9
+5A
+4C
+60
+69
+00
+90
+00
+98
+A9
+06
+80
+09
+80
+01
+89
+0E
+08
+43
+00
+90
+00
+98
+60
+61
+5B
+A0
+00
+F0
+7F
+F9
+A0
+69
+00
+90
+5E
+A0
+00
+F0
+7A
+F9
+00
+98
+00
+0C
+00
+04
+30
+43
+00
+90
+00
+98
+01
+21
+09
+04
+08
+43
+00
+90
+00
+98
+A0
+61
+F8
+BD
+4B
+4A
+81
+B0
+53
+69
+00
+93
+00
+9B
+80
+06
+9B
+09
+9B
+01
+80
+0E
+03
+43
+00
+93
+00
+98
+50
+61
+90
+69
+00
+90
+00
+98
+00
+0C
+00
+04
+08
+43
+00
+90
+00
+98
+01
+21
+09
+04
+08
+43
+00
+90
+00
+98
+90
+61
+01
+B0
+70
+47
+3B
+4A
+81
+B0
+53
+69
+00
+93
+00
+9B
+80
+06
+9B
+09
+9B
+01
+80
+0E
+03
+43
+00
+93
+00
+98
+50
+61
+90
+69
+00
+90
+00
+98
+01
+23
+5B
+04
+C9
+07
+98
+43
+89
+0B
+08
+43
+00
+90
+00
+98
+90
+61
+01
+B0
+70
+47
+2F
+4A
+81
+B0
+53
+69
+00
+93
+00
+9B
+80
+06
+9B
+09
+9B
+01
+80
+0E
+03
+43
+00
+93
+00
+98
+50
+61
+90
+69
+00
+90
+00
+98
+01
+23
+5B
+04
+C9
+07
+98
+43
+89
+0B
+08
+43
+00
+90
+00
+98
+90
+61
+01
+B0
+70
+47
+2F
+49
+08
+60
+70
+47
+10
+B4
+01
+22
+82
+B0
+82
+40
+2C
+4B
+00
+92
+1A
+68
+00
+9C
+01
+92
+81
+40
+A2
+43
+21
+40
+0A
+43
+1A
+60
+02
+B0
+10
+BC
+70
+47
+25
+49
+88
+60
+70
+47
+10
+B4
+23
+4C
+01
+22
+A3
+68
+82
+40
+81
+40
+93
+43
+11
+40
+0B
+43
+A3
+60
+10
+BC
+70
+47
+1E
+49
+88
+62
+70
+47
+10
+B4
+1C
+4C
+01
+22
+A3
+6A
+82
+40
+81
+40
+93
+43
+11
+40
+0B
+43
+A3
+62
+10
+BC
+70
+47
+17
+49
+81
+B0
+0A
+68
+00
+92
+00
+9A
+C0
+07
+52
+08
+52
+00
+C0
+0F
+02
+43
+00
+92
+00
+98
+08
+60
+01
+B0
+70
+47
+00
+00
+00
+C1
+00
+40
+00
+C2
+00
+40
+53
+65
+74
+20
+43
+68
+61
+6E
+6E
+65
+6C
+20
+50
+6F
+69
+6E
+74
+65
+72
+00
+52
+65
+61
+64
+20
+53
+65
+63
+75
+72
+65
+20
+63
+6F
+6E
+66
+69
+67
+00
+00
+53
+65
+74
+20
+43
+48
+49
+44
+00
+00
+00
+00
+00
+C0
+00
+40
+40
+C0
+00
+40
+2A
+49
+81
+B0
+0A
+68
+00
+92
+00
+9A
+02
+23
+C0
+07
+9A
+43
+80
+0F
+02
+43
+00
+92
+00
+98
+08
+60
+01
+B0
+70
+47
+23
+48
+81
+B0
+01
+68
+00
+91
+00
+99
+42
+06
+11
+43
+00
+91
+00
+99
+01
+60
+01
+B0
+70
+47
+1D
+48
+40
+68
+C0
+07
+C0
+0F
+70
+47
+1A
+49
+01
+20
+48
+60
+70
+47
+19
+48
+81
+B0
+80
+68
+00
+90
+00
+98
+01
+B0
+00
+03
+C0
+0F
+70
+47
+16
+48
+81
+B0
+80
+68
+00
+90
+00
+98
+01
+B0
+00
+03
+C0
+0F
+70
+47
+12
+49
+81
+B0
+08
+6B
+00
+90
+00
+98
+01
+B0
+80
+05
+80
+0E
+40
+1C
+70
+47
+0D
+49
+81
+B0
+48
+6B
+00
+90
+00
+98
+01
+B0
+C0
+05
+C0
+0D
+70
+47
+09
+49
+81
+B0
+48
+6B
+00
+90
+00
+98
+01
+B0
+00
+04
+40
+0E
+70
+47
+03
+48
+00
+68
+70
+47
+00
+00
+40
+C0
+00
+40
+00
+C2
+00
+40
+00
+C1
+00
+40
+80
+CF
+00
+40
+70
+47
+70
+B5
+06
+46
+00
+F0
+13
+F9
+05
+68
+30
+46
+0B
+30
+C4
+08
+E4
+00
+B4
+42
+01
+D8
+00
+20
+70
+BD
+68
+68
+2A
+46
+00
+28
+18
+D0
+01
+68
+A1
+42
+11
+D3
+0B
+46
+21
+46
+08
+31
+8B
+42
+08
+D3
+43
+68
+01
+19
+4B
+60
+03
+68
+1B
+1B
+0B
+60
+51
+60
+04
+60
+01
+E0
+41
+68
+51
+60
+00
+1D
+70
+BD
+02
+46
+40
+68
+00
+28
+E6
+D1
+21
+46
+28
+46
+00
+F0
+F1
+F8
+00
+28
+DC
+D1
+70
+BD
+70
+B5
+04
+46
+05
+1F
+00
+F0
+E1
+F8
+00
+68
+00
+2C
+1A
+D0
+44
+68
+01
+E0
+20
+46
+64
+68
+00
+2C
+01
+D0
+AC
+42
+F9
+D3
+01
+68
+0A
+18
+AA
+42
+04
+D1
+2A
+68
+05
+46
+89
+18
+01
+60
+00
+E0
+45
+60
+28
+68
+41
+19
+A1
+42
+05
+D1
+61
+68
+69
+60
+21
+68
+40
+18
+28
+60
+70
+BD
+6C
+60
+70
+BD
+0F
+B4
+05
+49
+10
+B5
+03
+AA
+02
+98
+00
+F0
+63
+F9
+10
+BC
+08
+BC
+04
+B0
+18
+47
+00
+00
+1C
+00
+00
+30
+F8
+B5
+0E
+46
+04
+46
+00
+20
+20
+62
+20
+46
+E1
+68
+88
+47
+00
+28
+29
+D0
+25
+28
+02
+D0
+62
+68
+A1
+68
+20
+E0
+E1
+68
+20
+46
+00
+27
+88
+47
+05
+00
+1E
+D0
+28
+46
+41
+38
+19
+28
+02
+D8
+01
+27
+FF
+02
+20
+35
+32
+46
+20
+46
+27
+60
+29
+46
+FD
+F7
+48
+FE
+00
+28
+08
+D0
+01
+28
+04
+D0
+F6
+1D
+F6
+08
+F6
+00
+08
+36
+D9
+E7
+36
+1D
+D7
+E7
+62
+68
+28
+46
+A1
+68
+90
+47
+20
+6A
+40
+1C
+CF
+E7
+20
+6A
+F8
+BD
+F7
+B5
+00
+25
+75
+29
+10
+68
+00
+99
+14
+A6
+11
+D0
+C0
+46
+C0
+46
+00
+28
+02
+DA
+40
+42
+11
+A6
+08
+E0
+00
+99
+09
+68
+8A
+07
+01
+D5
+0F
+A6
+02
+E0
+49
+07
+04
+D5
+0E
+A6
+01
+25
+01
+E0
+C0
+46
+C0
+46
+00
+9F
+00
+24
+24
+37
+04
+E0
+00
+F0
+19
+F9
+30
+31
+39
+55
+64
+1C
+00
+28
+F8
+D1
+2B
+46
+32
+46
+21
+46
+00
+98
+00
+F0
+A1
+F8
+FE
+BD
+00
+00
+00
+00
+00
+00
+2D
+00
+00
+00
+2B
+00
+00
+00
+20
+00
+00
+00
+70
+B5
+04
+46
+0D
+46
+21
+46
+10
+68
+C0
+46
+C0
+46
+21
+88
+09
+05
+02
+D5
+0F
+4A
+7A
+44
+02
+E0
+0E
+4A
+7A
+44
+0E
+32
+23
+46
+00
+21
+24
+33
+05
+E0
+06
+07
+00
+09
+36
+0F
+96
+5D
+5E
+54
+49
+1C
+00
+28
+F7
+D1
+20
+78
+00
+23
+00
+07
+05
+D5
+70
+2D
+03
+D0
+00
+29
+01
+D0
+02
+23
+11
+32
+20
+46
+00
+F0
+6E
+F8
+70
+BD
+F6
+03
+00
+00
+10
+B5
+04
+46
+03
+E0
+FE
+F7
+41
+F9
+40
+1C
+08
+D0
+20
+78
+05
+49
+64
+1C
+00
+28
+F6
+D1
+0A
+20
+FE
+F7
+37
+F9
+10
+BD
+00
+20
+C0
+43
+10
+BD
+00
+00
+1C
+00
+00
+30
+70
+47
+70
+47
+70
+47
+00
+00
+00
+48
+70
+47
+38
+00
+00
+30
+70
+47
+70
+47
+70
+47
+70
+47
+38
+B5
+04
+46
+0A
+46
+00
+20
+69
+46
+C0
+46
+C0
+46
+00
+28
+05
+D0
+02
+46
+20
+46
+00
+99
+00
+F0
+C0
+F8
+01
+20
+38
+BD
+10
+B5
+01
+20
+00
+F0
+EC
+F8
+10
+BD
+F8
+B5
+C0
+46
+C0
+46
+05
+46
+00
+20
+0C
+46
+10
+20
+C0
+46
+06
+46
+A8
+19
+A0
+42
+0D
+D9
+32
+46
+69
+46
+00
+20
+C0
+46
+C0
+46
+07
+00
+01
+D1
+00
+F0
+D6
+F8
+00
+98
+A0
+42
+00
+D0
+05
+46
+C4
+19
+FF
+F7
+C7
+FF
+F6
+1D
+07
+46
+05
+60
+F0
+08
+C0
+00
+46
+19
+28
+46
+00
+F0
+08
+F8
+B4
+42
+04
+D0
+31
+46
+38
+68
+A2
+1B
+00
+F0
+8D
+F8
+F8
+BD
+00
+21
+01
+60
+41
+60
+80
+60
+70
+47
+10
+20
+70
+47
+FF
+B5
+04
+46
+0D
+46
+81
+B0
+24
+30
+00
+90
+21
+68
+88
+06
+04
+D5
+10
+22
+E0
+69
+91
+43
+21
+60
+00
+E0
+01
+20
+A8
+42
+01
+DD
+47
+1B
+00
+E0
+00
+27
+04
+98
+A1
+69
+7A
+19
+10
+18
+08
+1A
+A0
+61
+20
+78
+C0
+06
+02
+D4
+20
+46
+C0
+46
+C0
+46
+00
+26
+08
+E0
+03
+98
+62
+68
+A1
+68
+80
+5D
+90
+47
+20
+6A
+40
+1C
+76
+1C
+20
+62
+04
+98
+86
+42
+F3
+DB
+20
+78
+C0
+06
+0A
+D5
+20
+46
+C0
+46
+C0
+46
+06
+E0
+62
+68
+A1
+68
+30
+20
+90
+47
+20
+6A
+40
+1C
+20
+62
+38
+46
+7F
+1E
+00
+28
+F4
+DC
+07
+E0
+00
+98
+62
+68
+A1
+68
+40
+5D
+90
+47
+20
+6A
+40
+1C
+20
+62
+28
+46
+6D
+1E
+00
+28
+F3
+DC
+20
+46
+C0
+46
+C0
+46
+20
+78
+00
+06
+02
+D5
+02
+20
+05
+B0
+F0
+BD
+01
+20
+FB
+E7
+00
+00
+08
+4B
+70
+B5
+0D
+46
+7B
+44
+00
+F0
+45
+F8
+04
+46
+28
+46
+FE
+F7
+83
+F8
+00
+28
+02
+D0
+00
+20
+C0
+43
+70
+BD
+20
+46
+70
+BD
+00
+00
+FB
+E0
+FF
+FF
+01
+46
+80
+08
+08
+1A
+02
+09
+10
+18
+02
+0A
+10
+18
+02
+0C
+10
+18
+C0
+08
+82
+00
+12
+18
+52
+00
+89
+1A
+01
+E0
+40
+1C
+0A
+39
+0A
+29
+FB
+D2
+70
+47
+00
+48
+70
+47
+30
+00
+00
+30
+10
+B5
+03
+46
+40
+68
+01
+E0
+03
+46
+40
+68
+00
+28
+01
+D0
+88
+42
+F9
+D3
+18
+68
+C3
+18
+8B
+42
+06
+D0
+CB
+1C
+D8
+08
+C0
+00
+00
+1D
+41
+1A
+52
+1A
+01
+46
+08
+1D
+0A
+60
+FF
+F7
+2B
+FE
+10
+BD
+01
+69
+4A
+1C
+02
+61
+08
+78
+70
+47
+00
+B5
+8F
+B0
+02
+91
+00
+21
+05
+91
+05
+49
+01
+93
+79
+44
+03
+91
+11
+46
+04
+90
+68
+46
+FF
+F7
+4B
+FE
+0F
+B0
+00
+BD
+00
+00
+E5
+FF
+FF
+FF
+10
+B5
+00
+F0
+31
+F8
+00
+F0
+28
+F8
+10
+BD
+75
+46
+FF
+F7
+C1
+FF
+AE
+46
+05
+00
+69
+46
+53
+46
+C0
+08
+C0
+00
+85
+46
+18
+B0
+20
+B5
+FD
+F7
+FE
+FF
+60
+BC
+00
+27
+49
+08
+B6
+46
+00
+26
+C0
+C5
+C0
+C5
+C0
+C5
+C0
+C5
+C0
+C5
+C0
+C5
+C0
+C5
+C0
+C5
+40
+3D
+49
+00
+8D
+46
+70
+47
+10
+B5
+04
+46
+C0
+46
+C0
+46
+20
+46
+FD
+F7
+A2
+FC
+10
+BD
+10
+B5
+00
+28
+01
+D0
+FE
+F7
+05
+F8
+10
+BD
+00
+00
+10
+B5
+01
+28
+05
+D0
+00
+21
+03
+A0
+00
+F0
+21
+F8
+01
+20
+10
+BD
+09
+A1
+F8
+E7
+00
+00
+53
+49
+47
+52
+54
+4D
+45
+4D
+3A
+20
+4F
+75
+74
+20
+6F
+66
+20
+68
+65
+61
+70
+20
+6D
+65
+6D
+6F
+72
+79
+00
+00
+00
+00
+3A
+20
+48
+65
+61
+70
+20
+6D
+65
+6D
+6F
+72
+79
+20
+63
+6F
+72
+72
+75
+70
+74
+65
+64
+00
+70
+B5
+05
+46
+0C
+46
+0A
+20
+00
+E0
+6D
+1C
+FD
+F7
+CE
+FF
+00
+2D
+06
+D0
+28
+78
+00
+28
+F7
+D1
+02
+E0
+64
+1C
+FD
+F7
+C5
+FF
+00
+2C
+02
+D0
+20
+78
+00
+28
+F7
+D1
+0A
+20
+FD
+F7
+BD
+FF
+70
+BD
+10
+F1
+0F
+00
+10
+01
+00
+00
+44
+04
+00
+00
+44
+04
+00
+00
+44
+00
+00
+00
+01
+00
+01
+00
+03
+00
+00
+00
+00
+00
+00
+00
+01
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+80
+00
+00
+00
+00
+00
+00
+00
+98
+00
+00
+00
+00
+40
+00
+00
+00
+40
+00
+00
+00
+02
+00
+00
+00
+00
+00
+00
+00
+00
+01
+00
+80
+00
+00
+00
+00
+00
+01
+00
+98
+00
+00
+00
+00
+40
+00
+00
+00
+40
+00
+00
+00
+02
+00
+00
+00
+00
+00
+00
+00
+00
+02
+00
+80
+00
+00
+00
+00
+00
+02
+00
+98
+00
+00
+00
+00
+40
+00
+00
+00
+40
+00
+00
+00
+02
+00
+00
+00
+00
+00
+00
+00
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+41
+42
+43
+44
+45
+46
+40
+30
+58
+00
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+61
+62
+63
+64
+65
+66
+40
+30
+78
+00
+0A
+43
+6F
+72
+74
+65
+78
+20
+4D
+69
+63
+72
+6F
+63
+6F
+6E
+74
+72
+6F
+6C
+6C
+65
+72
+20
+53
+79
+73
+74
+65
+6D
+20
+44
+65
+73
+69
+67
+6E
+20
+4B
+69
+74
+20
+2D
+20
+44
+4D
+41
+20
+54
+65
+73
+74
+20
+2D
+20
+72
+65
+76
+69
+73
+69
+6F
+6E
+20
+24
+52
+65
+76
+69
+73
+69
+6F
+6E
+3A
+20
+33
+37
+31
+33
+32
+31
+20
+24
+0A
+00
+00
+00
+00
+F0
+29
+00
+00
+00
+00
+00
+30
+30
+00
+00
+00
+04
+01
+00
+00
+20
+2A
+00
+00
+30
+00
+00
+30
+60
+04
+00
+00
+20
+01
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+E1
+F5
+05
+00
+00
+00
+00
+00
+D0
+00
+40
+00
+D1
+00
+40
+00
+D0
+00
+40
+00
+D1
+00
+40
diff --git a/testcodes/dma350_stream_tests/makefile b/testcodes/dma350_stream_tests/makefile
new file mode 100644
index 0000000..8735e72
--- /dev/null
+++ b/testcodes/dma350_stream_tests/makefile
@@ -0,0 +1,285 @@
+#-----------------------------------------------------------------------------
+# The confidential and proprietary information contained in this file may
+# only be used by a person authorised under and to the extent permitted
+# by a subsisting licensing agreement from Arm Limited or its affiliates.
+#
+#            (C) COPYRIGHT 2010-2013 Arm Limited or its affiliates.
+#                ALL RIGHTS RESERVED
+#
+# This entire notice must be reproduced on all copies of this file
+# and copies of this file may only be made by a person if such person is
+# permitted to do so under the terms of a subsisting license agreement
+# from Arm Limited or its affiliates.
+#
+#      SVN Information
+#
+#      Checked In          : $Date: 2017-10-10 15:55:38 +0100 (Tue, 10 Oct 2017) $
+#
+#      Revision            : $Revision: 371321 $
+#
+#      Release Information : Cortex-M System Design Kit-r1p1-00rel0
+#-----------------------------------------------------------------------------
+#
+# Cortex-M System Design Kit software compilation make file
+#
+#-----------------------------------------------------------------------------
+#
+#  Configurations
+#
+# Choose the core instantiated, can be
+#  - CORTEX_M0
+#  - CORTEX_M0PLUS
+CPU_PRODUCT = CORTEX_M0
+
+TARGET = arm-none-eabi
+# Shared software directory
+SOFTWARE_DIR = $(SOCLABS_NANOSOC_TECH_DIR)/software
+CMSIS_DIR    = $(SOFTWARE_DIR)/cmsis
+CORE_DIR     = $(CMSIS_DIR)/CMSIS/Include
+GENERIC_DIR  = ../generic
+
+
+ifeq ($(CPU_PRODUCT),CORTEX_M0PLUS)
+  DEVICE_DIR   = $(CMSIS_DIR)/Device/ARM/CMSDK_CM0plus
+else
+  DEVICE_DIR   = $(CMSIS_DIR)/Device/ARM/CMSDK_CM0
+endif
+
+# Program file
+TESTNAME     = dma350_stream_tests
+
+# Endian Option
+COMPILE_BIGEND = 0
+
+# Configuration
+ifeq ($(CPU_PRODUCT),CORTEX_M0PLUS)
+  USER_DEFINE    = -DCORTEX_M0PLUS
+else
+  USER_DEFINE    = -DCORTEX_M0
+endif
+
+DEPS_LIST       = makefile
+
+# Tool chain : ds5 / gcc / keil
+TOOL_CHAIN      = ds5
+
+ifeq ($(TOOL_CHAIN),ds5)
+  ifeq ($(CPU_PRODUCT),CORTEX_M0PLUS)
+    CPU_TYPE        = --cpu Cortex-M0plus
+  else
+    CPU_TYPE        = --cpu Cortex-M0
+  endif
+endif
+
+ifeq ($(TOOL_CHAIN),ds6)
+  ifeq ($(CPU_PRODUCT),CORTEX_M0PLUS)
+    CPU_TYPE        = -mcpu=Cortex-M0plus
+  else
+    CPU_TYPE        = -mcpu=Cortex-M0
+  endif
+endif
+
+ifeq ($(TOOL_CHAIN),gcc)
+  ifeq ($(CPU_PRODUCT),CORTEX_M0PLUS)
+    CPU_TYPE        = -mcpu=cortex-m0plus
+  else
+    CPU_TYPE        = -mcpu=cortex-m0
+  endif
+endif
+
+# Startup code directory for DS-5
+ifeq ($(TOOL_CHAIN),ds5)
+ STARTUP_DIR  = $(DEVICE_DIR)/Source/ARM
+endif
+
+ifeq ($(TOOL_CHAIN),ds6)
+ STARTUP_DIR  = $(DEVICE_DIR)/Source/ARM
+endif
+
+# Startup code directory for gcc
+ifeq ($(TOOL_CHAIN),gcc)
+ STARTUP_DIR  = $(DEVICE_DIR)/Source/GCC
+endif
+
+ifeq ($(CPU_PRODUCT),CORTEX_M0PLUS)
+  STARTUP_FILE = startup_CMSDK_CM0plus
+  SYSTEM_FILE  = system_CMSDK_CM0plus
+else
+  STARTUP_FILE = startup_CMSDK_CM0
+  SYSTEM_FILE  = system_CMSDK_CM0
+endif
+
+# Configuration ID values
+GENERIC_FILE = $(GENERIC_DIR)/config_id.h
+
+# ---------------------------------------------------------------------------------------
+# DS-5 options
+
+# MicroLIB option
+COMPILE_MICROLIB = 0
+
+# Small Multiply (Cortex-M0/M0+ has small multiplier option)
+COMPILE_SMALLMUL = 0
+
+ifeq ($(TOOL_CHAIN),ds6)
+  ARM_TARGET = --target=arm-$(TARGET)
+  CC_TOOL   = armclang -O1
+  ASM_TOOL = armclang -masm=armasm $(ARM_TARGET) -c
+else
+  CC_TOOL   = armcc -O3
+  ASM_TOOL = armasm
+  ARM_TARGET = -Otime --c99
+endif
+
+ARM_CC_OPTIONS   = $(ARM_TARGET) -c -g -I $(DEVICE_DIR)/Include  -I $(CORE_DIR) -I $(GENERIC_DIR) \
+		   -I $(SOFTWARE_DIR)/common/retarget -I $(SOFTWARE_DIR)/drivers $(USER_DEFINE)
+ARM_CC_OPTIONS_DRIVER   = $(ARM_TARGET) -c -I $(DEVICE_DIR)/Include  -I $(CORE_DIR) -I $(GENERIC_DIR) \
+		   -I $(SOFTWARE_DIR)/common/retarget -I $(SOFTWARE_DIR)/drivers $(USER_DEFINE)		   
+ARM_ASM_OPTIONS  = -g
+ARM_LINK_OPTIONS = "--keep=$(STARTUP_FILE).o(RESET)" "--first=$(STARTUP_FILE).o(RESET)" \
+		   --rw_base 0x30000000 --ro_base 0x00000000 --map 
+
+ifeq ($(COMPILE_BIGEND),1)
+ # Big Endian
+ ARM_CC_OPTIONS   += --bigend
+ ARM_ASM_OPTIONS  += --bigend
+ ARM_LINK_OPTIONS += --be8
+endif
+
+ifeq ($(COMPILE_MICROLIB),1)
+ # MicroLIB
+ ARM_CC_OPTIONS   += --library_type=microlib
+ ARM_ASM_OPTIONS  += --library_type=microlib --pd "__MICROLIB SETA 1"
+ ARM_LINK_OPTIONS += --library_type=microlib
+endif
+
+ifeq ($(COMPILE_SMALLMUL),1)
+ # In Cortex-M0, small multiply takes 32 cycles
+ ARM_CC_OPTIONS   += --multiply_latency=32
+endif
+
+# ---------------------------------------------------------------------------------------
+# gcc options
+
+GNG_CC      = $(TARGET)-gcc
+GNU_OBJDUMP = $(TARGET)-objdump
+GNU_OBJCOPY = $(TARGET)-objcopy
+
+LINKER_SCRIPT_PATH = $(SOFTWARE_DIR)/common/scripts
+LINKER_SCRIPT = $(LINKER_SCRIPT_PATH)/cmsdk_cm0.ld
+
+GNU_CC_FLAGS = -g -O3 -mthumb $(CPU_TYPE)
+
+ifeq ($(COMPILE_BIGEND),1)
+ # Big Endian
+ GNU_CC_FLAGS   += -mbig-endian
+endif
+
+# ---------------------------------------------------------------------------------------
+all: all_$(TOOL_CHAIN)
+
+# ---------------------------------------------------------------------------------------
+# DS-5
+all_ds5 : $(TESTNAME).hex $(TESTNAME).lst
+all_ds6 : $(TESTNAME).hex $(TESTNAME).lst
+
+$(TESTNAME).o :  $(SOFTWARE_DIR)/common/validation/$(TESTNAME).c $(GENERIC_FILE) $(DEPS_LIST) 
+	$(CC_TOOL) $(ARM_CC_OPTIONS) $(CPU_TYPE) $< -o  $@
+
+dma_350_driver.o :  $(SOFTWARE_DIR)/drivers/dma_350_command_lib.c $(DEPS_LIST)
+	$(CC_TOOL) $(ARM_CC_OPTIONS_DRIVER) $(CPU_TYPE) $< -o $@
+
+$(SYSTEM_FILE).o : $(DEVICE_DIR)/Source/$(SYSTEM_FILE).c $(DEPS_LIST)
+	$(CC_TOOL) $(ARM_CC_OPTIONS) $(CPU_TYPE) $< -o  $@
+
+retarget.o : $(SOFTWARE_DIR)/common/retarget/retarget.c $(DEPS_LIST)
+	$(CC_TOOL) $(ARM_CC_OPTIONS) $(CPU_TYPE) $< -o  $@
+
+uart_stdout.o : $(SOFTWARE_DIR)/common/retarget/uart_stdout.c $(DEPS_LIST)
+	$(CC_TOOL) $(ARM_CC_OPTIONS) $(CPU_TYPE) $< -o  $@
+
+$(STARTUP_FILE).o : $(STARTUP_DIR)/$(STARTUP_FILE).s $(DEPS_LIST)
+	$(ASM_TOOL) $(ARM_ASM_OPTIONS) $(CPU_TYPE) $< -o  $@
+
+$(TESTNAME).ELF : $(TESTNAME).o dma_350_driver.o $(SYSTEM_FILE).o $(STARTUP_FILE).o retarget.o uart_stdout.o
+	armlink $(ARM_LINK_OPTIONS) -o $@ $(TESTNAME).o $(SYSTEM_FILE).o $(STARTUP_FILE).o retarget.o uart_stdout.o dma_350_driver.o 
+
+$(TESTNAME).hex : $(TESTNAME).ELF
+	fromelf --vhx --8x1 $< --output $@
+
+$(TESTNAME).lst : $(TESTNAME).ELF
+	fromelf -c -d -e -s $< --output $@
+
+# ---------------------------------------------------------------------------------------
+# gcc
+all_gcc:
+	$(GNG_CC) $(GNU_CC_FLAGS) $(STARTUP_DIR)/$(STARTUP_FILE).s \
+		$(SOFTWARE_DIR)/common/validation/$(TESTNAME).c \
+		$(SOFTWARE_DIR)/common/retarget/retarget.c \
+		$(SOFTWARE_DIR)/drivers/dma_350_command_lib.c \
+		$(SOFTWARE_DIR)/common/retarget/uart_stdout.c \
+		$(DEVICE_DIR)/Source/$(SYSTEM_FILE).c \
+		-I $(DEVICE_DIR)/Include -I $(CORE_DIR) -I $(GENERIC_DIR)\
+        -I $(SOFTWARE_DIR)/common/retarget  \
+		-I $(SOFTWARE_DIR)/drivers \
+		-L $(LINKER_SCRIPT_PATH) \
+		-D__STACK_SIZE=0x200 \
+		-D__HEAP_SIZE=0x1000 \
+		$(USER_DEFINE) -T $(LINKER_SCRIPT) -o $(TESTNAME).o
+	# Generate disassembly code
+	$(GNU_OBJDUMP) -S $(TESTNAME).o > $(TESTNAME).lst
+	# Generate binary file
+	$(GNU_OBJCOPY) -S $(TESTNAME).o -O binary $(TESTNAME).bin
+	# Generate hex file
+	$(GNU_OBJCOPY) -S $(TESTNAME).o -O verilog $(TESTNAME).hex
+
+# Note:
+# If the version of object copy you are using does not support verilog hex file output,
+# you can generate the hex file from binary file using the following command
+#       od -v -A n -t x1 --width=1  $(TESTNAME).bin > $(TESTNAME).hex
+
+
+# ---------------------------------------------------------------------------------------
+# Keil MDK
+
+all_keil:
+	@echo "Please compile your project code and press ENTER when ready"
+	@read dummy
+
+# ---------------------------------------------------------------------------------------
+# Binary
+
+all_bin: $(TESTNAME).bin
+	# Generate hex file from binary
+	od -v -A n -t x1 --width=1  $(TESTNAME).bin > $(TESTNAME).hex
+
+# ---------------------------------------------------------------------------------------
+# Clean
+clean :
+	@rm -rf *.o
+	@if [ -e $(TESTNAME).hex ] ; then \
+	  rm -rf $(TESTNAME).hex ; \
+	fi
+	@if [ -e $(TESTNAME).lst ] ; then \
+	  rm -rf $(TESTNAME).lst ; \
+	fi
+	@if [ -e $(TESTNAME).ELF ] ; then \
+	  rm -rf $(TESTNAME).ELF ; \
+	fi
+	@if [ -e $(TESTNAME).bin ] ; then \
+	  rm -rf $(TESTNAME).bin ; \
+	fi
+	@rm -rf *.crf
+	@rm -rf *.plg
+	@rm -rf *.tra
+	@rm -rf *.htm
+	@rm -rf *.map
+	@rm -rf *.dep
+	@rm -rf *.d
+	@rm -rf *.lnp
+	@rm -rf *.bak
+	@rm -rf *.lst
+	@rm -rf *.axf
+	@rm -rf *.sct
+	@rm -rf *.__i
+	@rm -rf *._ia
diff --git a/testcodes/excluded_tests.txt b/testcodes/excluded_tests.txt
index 3183be7..cf16029 100644
--- a/testcodes/excluded_tests.txt
+++ b/testcodes/excluded_tests.txt
@@ -1,2 +1,3 @@
 rtx_demo
-gpio_tests
\ No newline at end of file
+gpio_tests
+dma350_stream_tests
\ No newline at end of file
-- 
GitLab