From d13912cc897d35b4d9dad4d3e094a48aae17a2f3 Mon Sep 17 00:00:00 2001
From: aneesh <achattaraj@student.unimelb.edu.au>
Date: Fri, 24 May 2019 19:52:16 +1000
Subject: [PATCH] yoooo

---
 crack.c   | 823 ++++++++++++++++++++++++++++++------------------------
 crack.exe | Bin 142270 -> 141776 bytes
 2 files changed, 459 insertions(+), 364 deletions(-)

diff --git a/crack.c b/crack.c
index ce93287..c8b1e2b 100644
--- a/crack.c
+++ b/crack.c
@@ -7,440 +7,535 @@
 #include "sha256.h"
 #include "sha256.c"
 #include <stdbool.h>
-int exist[30];
+  int exist[30];
 BYTE old[6];
-int count=0;
+int count = 0;
+void makeguess(char * word_list, int hashes[][32],int a);
 
-void printRandomString(int hashes[30][32]) 
-{   bool cracked = true;
-SHA256_CTX ctx;
- 
+void printRandomString(int hashes[30][32]) {
+  bool cracked = true;
+  SHA256_CTX ctx;
 
-    BYTE buffer[SHA256_BLOCK_SIZE];
-    
-    for (int i = 0; i < 100000000000000000; ++i) {
-      if (count=30)
-      {
-        break;
-      }
+  BYTE buffer[SHA256_BLOCK_SIZE];
+
+  for (int i = 0; i < 100000000000000000; ++i) {
+    if (count == 30) {
+      break;
+    }
     BYTE res[6];
-    for (int j = 0; j < 6; j++)  
-        res[j] = (rand()% 26)+97;; 
-    res[6]='\0';
-    sha256_init(&ctx);
-    sha256_update(&ctx, res, sizeof(res));
-    sha256_final(&ctx, buffer);
-    
-    for(int k=10; k<30; k++){
-            
-            cracked = true;
-            for(int a=0; a<32; a++){
-                if( buffer[a] != hashes[k][a] ){
-                  
-                    cracked=false;
-                    break;
-                }
-            }
-            if( cracked==true && exist[k+1]!=1 ){
-                ctx.data[6] = '\0';
-                exist[k+1]=1;
-                ++count;
-                printf("%s %d\n", ctx.data, k+1);        
-            }
-        }
+    for (int j = 0; j < 6; j++)
+      res[j] = (rand() % 26) + 97;;
+    res[6] = '\0';
+    sha256_init( & ctx);
+    sha256_update( & ctx, res, sizeof(res));
+    sha256_final( & ctx, buffer);
+
+    for (int k = 10; k < 30; k++) {
 
+      cracked = true;
+      for (int a = 0; a < 32; a++) {
+        if (buffer[a] != hashes[k][a]) {
 
-  } 
+          cracked = false;
+          break;
+        }
+      }
+      if (cracked == true && exist[k + 1] != 1) {
+        ctx.data[6] = '\0';
+        exist[k + 1] = 1;
+        ++count;
+        printf("%s %d\n", ctx.data, k + 1);
+      }
+    }
+
+  }
 }
-void variations(char *word_list_file, int hashes[30][32])
-{
+void variations(char * word_list_file, int hashes[30][32]) {
   SHA256_CTX ctx;
-    BYTE buffer[SHA256_BLOCK_SIZE];
-    BYTE password[6];
-    bool cracked = true;
-    
-    FILE *word_list;
-    word_list=fopen(word_list_file, "rb");
+  BYTE buffer[SHA256_BLOCK_SIZE];
+  BYTE password[6];
+  bool cracked = true;
 
-    while ( fgets(password, 7, word_list) != '\0'){
-      if (count==30)
-      {
-        break;
-      }
+  FILE * word_list;
+  word_list = fopen(word_list_file, "rb");
 
-      for (int c = 0; c < 6; ++c)
-      { BYTE password1[6];
-        for (int i = 0; i < 6; ++i)
-          { 
-            if (i==c)
-            {
-            
-            if (password[c]>=65 && password[c]<90)
-            {
-              password1[c]=password[c]+32;
-            }
-            else if (password[c]>=97 && password[c]<123)
-            {
-              password1[c]=password[c]-32;
-            }
-            else{
-              password1[c]=password[c];
-            }
+  while (fgets(password, 7, word_list) != '\0') {
+    if (count == 30) {
+      break;
+    }
+
+    for (int c = 0; c < 6; ++c) {
+      BYTE password1[6];
+      for (int i = 0; i < 6; ++i) {
+        if (i == c) {
+
+          if (password[c] >= 65 && password[c] < 90) {
+            password1[c] = password[c] + 32;
+          } else if (password[c] >= 97 && password[c] < 123) {
+            password1[c] = password[c] - 32;
+          } else {
+            password1[c] = password[c];
           }
-            else{
-              password1[i]=password[i];
-            }
+        } else {
+          password1[i] = password[i];
+        }
+      }
+      password1[6] = '\0';
+
+      sha256_init( & ctx);
+      sha256_update( & ctx, password1, sizeof(password1));
+      sha256_final( & ctx, buffer);
+
+      for (int j = 10; j < 30; j++) {
+
+        cracked = true;
+        for (int i = 0; i < 32; i++) {
+          if (buffer[i] != hashes[j][i]) {
+
+            cracked = false;
+            break;
           }
-            password1[6]='\0';
-            
-            
-            sha256_init(&ctx);
-            sha256_update(&ctx, password1, sizeof(password1));
-            sha256_final(&ctx, buffer);
-                    
-            for(int j=10; j<30; j++){
-            
-            cracked = true;
-            for(int i=0; i<32; i++){
-                if( buffer[i] != hashes[j][i] ){
-                 
-                    cracked=false;
-                    break;
-                }
-            }
-            if( cracked==true && exist[j+1]!=1){
-                ctx.data[6] = '\0';
-                exist[j+1]=1;
-                count++;
-                printf("%s %d\n", ctx.data, j+1);        
-            }
         }
-    
+        if (cracked == true && exist[j + 1] != 1) {
+          ctx.data[6] = '\0';
+          exist[j + 1] = 1;
+          count++;
+          printf("%s %d\n", ctx.data, j + 1);
+        }
       }
-          
 
-   }
+    }
 
-          
+  }
 
+  fclose(word_list);
 
 }
-void printRandomString1(int k) 
-{
-    
-    for (int i = 0; i < k-1; ++i) {
+void printRandomString1(int k) {
+
+  for (int i = 0; i < k - 1; ++i) {
     BYTE res[6];
-    for (int j = 0; j < 6; j++)  
-        res[j] = (rand()% 59)+65;; 
-    res[6]='\0';
-    printf("%s\n",res );
-} 
+    for (int j = 0; j < 6; j++)
+      res[j] = (rand() % 59) + 65;;
+    res[6] = '\0';
+    printf("%s\n", res);
+  }
 }
 
-
-void bruteforce(int hashes[30][32]){
-    SHA256_CTX ctx;
-    BYTE buffer[SHA256_BLOCK_SIZE];
-    BYTE password[4];
-    bool cracked = true;
-    
-    
-    for(int c1=32; c1<127; c1++){
-        password[0] = c1;
-        if( count == 10 ) break;
-        for(int c2=32; c2<127; c2++){
-            password[1] = c2;
-            if( count == 10 ) break;
-            for(int c3=32; c3<127; c3++){
-                 password[2] = c3;
-                if( count == 10 ) break;
-                for(int c4=32; c4<127; c4++){
-                    if( count == 10 ) break;
-                    password[3] = c4;
-                    password[4] = '\0';
-                    
-                    
-                    sha256_init(&ctx);
-                    sha256_update(&ctx, password, sizeof(password));
-                    sha256_final(&ctx, buffer);
-                    
-                    for(int i=1; i<11; i++){
-                        cracked = true;
-                        for(int j=0; j<32; j++){
-                            if( buffer[j] != hashes[i][j] ){
-                                cracked = false;
-                                break;
-                            }
-                        }
-                        if(cracked==true){
-                            count++;
-                            ctx.data[4] = '\0';
-                            printf("%s %d\n", ctx.data, i);
-                        }
-                    }  
-                }
-            }              
+void bruteforce(int hashes[30][32]) {
+  SHA256_CTX ctx;
+  BYTE buffer[SHA256_BLOCK_SIZE];
+  BYTE password[4];
+  bool cracked = true;
+
+  for (int c1 = 32; c1 < 127; c1++) {
+    password[0] = c1;
+    if (count == 10) break;
+    for (int c2 = 32; c2 < 127; c2++) {
+      password[1] = c2;
+      if (count == 10) break;
+      for (int c3 = 32; c3 < 127; c3++) {
+        password[2] = c3;
+        if (count == 10) break;
+        for (int c4 = 32; c4 < 127; c4++) {
+          if (count == 10) break;
+          password[3] = c4;
+          password[4] = '\0';
+
+          sha256_init( & ctx);
+          sha256_update( & ctx, password, sizeof(password));
+          sha256_final( & ctx, buffer);
+
+          for (int i = 1; i < 11; i++) {
+            cracked = true;
+            for (int j = 0; j < 32; j++) {
+              if (buffer[j] != hashes[i][j]) {
+                cracked = false;
+                break;
+              }
+            }
+            if (cracked == true) {
+              count++;
+              ctx.data[4] = '\0';
+              printf("%s %d\n", ctx.data, i);
+            }
+          }
         }
+      }
     }
+  }
 }
 // C program to print all permutations with duplicates allowed 
 
 /* Function to swap values at two pointers */
-void swap(char *x, char *y) 
-{ 
-  char temp; 
-  temp = *x; 
-  *x = *y; 
-  *y = temp; 
-} 
+void swap(char * x, char * y) {
+  char temp;
+  temp = * x;
+  * x = * y;
+  * y = temp;
+}
 
 /* Function to print permutations of string 
 This function takes three parameters: 
 1. String 
 2. Starting index of the string 
 3. Ending index of the string. */
-void permute(char *a, int l, int r,int hashes[30][32],int status) 
-{ SHA256_CTX ctx;
-    BYTE buffer[SHA256_BLOCK_SIZE];
-    bool cracked = true;
-    int count1 = 0;
-    char word[30];
-
-int i; 
-if (l == r) 
-  { if(status!=2){
-    BYTE n[6];
-    for (int k = 0; k < 6; ++k)
-    {
-      n[k]=a[k];
+void permute(char * a, int l, int r, int hashes[30][32], int status) {
+  SHA256_CTX ctx;
+  BYTE buffer[SHA256_BLOCK_SIZE];
+  bool cracked = true;
+  int count1 = 0;
+  char word[30];
+
+  int i;
+  if (l == r) {
+    if (status != 2) {
+      BYTE n[6];
+      for (int k = 0; k < 6; ++k) {
+        n[k] = a[k];
 
-    }
-    n[6]='\0';
-    sha256_init(&ctx);
-          sha256_update(&ctx, n, sizeof(n));
-          sha256_final(&ctx, buffer);
+      }
+      n[6] = '\0';
+      sha256_init( & ctx);
+      sha256_update( & ctx, n, sizeof(n));
+      sha256_final( & ctx, buffer);
 
-          for(int j=10; j<30; j++){
-            
-            cracked = true;
-            for(int i=0; i<32; i++){
-                if( buffer[i] != hashes[j][i] ){
-                 
-                    cracked=false;
-                    break;
-                }
-            }
-            if( cracked==true && exist[j+1]!=1){
-                ctx.data[6] = '\0';
-                exist[j+1]=1;
-                printf("%s %d\n", ctx.data, j+1);        
-            }
+      for (int j = 10; j < 30; j++) {
+
+        cracked = true;
+        for (int i = 0; i < 32; i++) {
+          if (buffer[i] != hashes[j][i]) {
+
+            cracked = false;
+            break;
+          }
+        }
+        if (cracked == true && exist[j + 1] != 1) {
+          ctx.data[6] = '\0';
+          exist[j + 1] = 1;
+          printf("%s %d\n", ctx.data, j + 1);
         }
-    }else{BYTE n[6];
-      int count1=0;
-    for (int k = 0; k < 6; ++k)
-    {
-      n[k]=a[k];
-      if (old[k]==n[k])
-      {
-        ++count1;
       }
+    } else {
+      BYTE n[6];
+      int count1 = 0;
+      for (int k = 0; k < 6; ++k) {
+        n[k] = a[k];
+        if (old[k] == n[k]) {
+          ++count1;
+        }
 
-    }
+      }
 
-    n[6]='\0';
-    if(count1<6)
-    {
-    printf("%s\n",n ); 
-    for (int k = 0; k < 7; ++k)
-    {
-      old[k]=n[k];
+      n[6] = '\0';
+      if (count1 < 6) {
+        printf("%s\n", n);
+        for (int k = 0; k < 7; ++k) {
+          old[k] = n[k];
+
+        }
+      }
 
     }
+  } else {
+    for (i = l; i <= r; i++) {
+      swap((a + l), (a + i));
+      permute(a, l + 1, r, hashes, status);
+      swap((a + l), (a + i)); //backtrack 
     }
-
-    }}
-else
-{ 
-  for (i = l; i <= r; i++) 
-  { 
-    swap((a+l), (a+i)); 
-    permute(a, l+1, r,hashes,status); 
-    swap((a+l), (a+i)); //backtrack 
-  } 
-} 
-} 
+  }
+}
 
 /* Driver program to test above functions */
-void permutations1(char *word_list_file, int hashes[30][32],int status)
-{ 
-   SHA256_CTX ctx;
-    BYTE buffer[SHA256_BLOCK_SIZE];
-    BYTE password[12];
-    bool cracked = true;
-    
-    char word[30];
+void permutations1(char * word_list_file, int hashes[30][32], int status) {
+  SHA256_CTX ctx;
+  BYTE buffer[SHA256_BLOCK_SIZE];
+  BYTE password[12];
+  bool cracked = true;
 
+  char word[30];
 
-    FILE *word_list;
-    word_list=fopen(word_list_file, "rb");
+  FILE * word_list;
+  word_list = fopen(word_list_file, "rb");
 
-    
+  while (fgets(password, 7, word_list) != '\0') {
 
-    while ( fgets(password, 7, word_list) != '\0'){
-        
-          for (int i = 6; i < 12; ++i)
-          {
-            if (password[i-6]>=65 && password[i-6]<90)
-            {
-              password[i]=password[i-6]+32;
-            }
-            else
-            {
-              password[i]=password[i-6]-32;
-            }
-            
-          }
+    for (int i = 6; i < 12; ++i) {
+      if (password[i - 6] >= 65 && password[i - 6] < 90) {
+        password[i] = password[i - 6] + 32;
+      } else {
+        password[i] = password[i - 6] - 32;
+      }
 
-          password[12]='\0';
-          
-          permute(password,0,11,hashes,status);
+    }
 
-}
+    password[12] = '\0';
+
+    permute(password, 0, 11, hashes, status);
+
+  }
+  fclose(word_list);
 }
 
-void crack6(char *word_list_file, int hashes[30][32])
-{
-    SHA256_CTX ctx;
-    BYTE buffer[SHA256_BLOCK_SIZE];
-    BYTE password[6];
-    bool cracked = true;
-    
-    char word[30];
+void crack6(char * word_list_file, int hashes[30][32]) {
+  SHA256_CTX ctx;
+  BYTE buffer[SHA256_BLOCK_SIZE];
+  BYTE password[6];
+  bool cracked = true;
 
+  char word[30];
 
-    FILE *word_list;
-    word_list=fopen(word_list_file, "rb");
+  FILE * word_list;
+  word_list = fopen(word_list_file, "rb");
 
-    while ( fgets(password, 7, word_list) != '\0'){
-          
-          password[6]='\0';
-          sha256_init(&ctx);
-          sha256_update(&ctx, password, sizeof(password));
-          sha256_final(&ctx, buffer);
-          for(int j=10; j<30; j++){
-            
-            cracked = true;
-            for(int i=0; i<32; i++){
-                if( buffer[i] != hashes[j][i] ){
-                 
-                    cracked=false;
-                    break;
-                }
-            }
-            if( cracked==true && exist[j+1]!=1 ){
-                ctx.data[6] = '\0';
-                exist[j+1]=1;
-                ++count;
-                printf("%s %d\n", ctx.data, j+1);        
-            }
-        }  
-   }
+  while (fgets(password, 7, word_list) != '\0') {
+
+    password[6] = '\0';
+    sha256_init( & ctx);
+    sha256_update( & ctx, password, sizeof(password));
+    sha256_final( & ctx, buffer);
+    for (int j = 10; j < 30; j++) {
+
+      cracked = true;
+      for (int i = 0; i < 32; i++) {
+        if (buffer[i] != hashes[j][i]) {
+
+          cracked = false;
+          break;
+        }
+      }
+      if (cracked == true && exist[j + 1] != 1) {
+        ctx.data[6] = '\0';
+        exist[j + 1] = 1;
+        ++count;
+        printf("%s %d\n", ctx.data, j + 1);
+      }
+    }
+  }
+  fclose(word_list);
 
 }
 
+int main(int argc, char * argv[]) {
+  int status = argc;
+  int hashes[30][32];
 
-  int main(int argc, char *argv[]){
-    int status=argc;
-    int hashes[30][32];
-    
-    if(argc==1)
-    {
+  if (argc == 1) {
     unsigned char buff[320];
     int hashes[30][32];
-    FILE *file_4, *file_6;
-    int i,a=0,b=0;
-    file_4=fopen("pwd4sha256", "rb");
-    
-    fread(buff,sizeof(buff),1,file_4);
-    
-   
-    for(i = 0; i<320; i++){
-       if(i%32==0){
-           a++;
-           b=0;
-       }
-       hashes[a][b]=buff[i];  
-       b++;
-   }
-   
-   bruteforce(hashes);
-   unsigned char buff6[640];
-   file_6=fopen("pwd6sha256","rb");
-   fread(buff6, sizeof(buff6),1, file_6);
-   for(i=0,a=9; i<640;++i)
-   {
-        if(i%32 == 0){
-          a++;
-           b=0;
-           printf("\n");
-       }
-       hashes[a][b]=buff6[i];
-       
-       
-       b++;
-   }
-   crack6("100k_passwords.txt",hashes);
-   variations("common_passwords1.txt",hashes);
-   printRandomString(hashes);
-
-   
-
-   
-   
+    FILE * file_4, * file_6;
+    int i, a = 0, b = 0;
+    file_4 = fopen("pwd4sha256", "rb");
+
+    fread(buff, sizeof(buff), 1, file_4);
+
+    for (i = 0; i < 320; i++) {
+      if (i % 32 == 0) {
+        a++;
+        b = 0;
+      }
+      hashes[a][b] = buff[i];
+      b++;
+    }
+
+    bruteforce(hashes);
+    unsigned char buff6[640];
+    file_6 = fopen("pwd6sha256", "rb");
+    fread(buff6, sizeof(buff6), 1, file_6);
+    for (i = 0, a = 9; i < 640; ++i) {
+      if (i % 32 == 0) {
+        a++;
+        b = 0;
+        
+      }
+      hashes[a][b] = buff6[i];
+
+      b++;
+    }
+    crack6("100k_passwords.txt", hashes);
+    variations("common_passwords1.txt", hashes);
+    printRandomString(hashes);
 
     fclose(file_4);
     fclose(file_6);
-}
-if (argc==2)
-{
-  int k=  atoi(argv[1]);
-  printf("%d\n",k );
-  printRandomString1(k);
+  }
+  if (argc == 2) {
+    int k = atoi(argv[1]);
+    printf("%d\n", k);
+    printRandomString1(k);
+
+  }
+  if (argc == 3) {
+    FILE * password_file;
+    password_file = fopen(argv[1], "rb");
+    char word[10000];
+
+    int i, a = 0, b = 0;
+    fseek(password_file, 0L, SEEK_END);
+    int sz = ftell(password_file);
+
+    rewind(password_file);
+    int hashes[sz / 32][32];
+    unsigned char buff[sz];
+    fread(buff, sizeof(buff), 1, password_file);
+    for (i = 0; i < sz; i++) {
+      if (i % 32 == 0) {
+        a++;
+        b = 0;
 
+      }
 
-}
-if (argc==3)
-{ 
-  FILE *password_file,*word_list_file;
-  password_file=fopen(argv[1],"rb");
-  word_list_file=fopen(argv[2],"rb");
-  int i,a=0,b=0;
-  fseek(password_file, 0L, SEEK_END);
-  int sz = ftell(password_file);
-  
-  rewind(password_file);
-  int hashes[sz/32][32];
-  unsigned char buff[sz];
-  fread(buff,sizeof(buff),1,password_file);
-  for(i = 0; i<sz; i++){
-       if(i%32==0){
-           a++;
-           b=0;
-           printf("\n");
-       }
-       
-       hashes[a][b]=buff[i];
-        
-       b++;
-   }
-   crack6(argv[2],hashes);
-   variations("common_passwords1.txt",hashes);
-   
+      hashes[a][b] = buff[i];
+
+      b++;
+    }
 
+    
+    makeguess(argv[2], hashes, a);
 
+  }
+  return 0;
 
 }
-   return 0;
+void makeguess(char * word_list, int hashes[][32], int a) {
+  SHA256_CTX ctx;
+  BYTE buffer[SHA256_BLOCK_SIZE];
+  BYTE word[10000];
+  FILE * fp;
+  int j=0;
+  char c;
+  fp = fopen(word_list, "rb");
+  int len=0;
+  bool cracked=true;
+  int exist[a];
+
+  while((c = fgetc(fp)) != EOF)
+  {
+    if(c == '\n')
+    {
+      
+      word[len]='\0';
+      
+      sha256_init( & ctx);
+      sha256_update( & ctx, word, len);
+      sha256_final( & ctx, buffer);
+      
+    for (int j = 0; j < a; j++) {
+
+      cracked = true;
+      for (int i = 0; i < 32; i++) {
+        if (buffer[i] != hashes[j][i]) {
+
+          cracked = false;
+          break;
+        }
+      }
+      if (cracked == true && exist[j + 1] != 1) {
+        ctx.data[6] = '\0';
+        exist[j+1]=1;
+        ++count;
+        printf("%s %d\n", ctx.data,j+1);
+      }
+    }
+    for (int k = 0; k < len; ++k) {
+      BYTE password1[len-1];
+      for (int l = 0; l < len; ++l) {
+        if (k == l) {
+          
+
+          if (word[k] >= 65 && word[k] < 90) {
+            password1[k] = word[k] + 32;
+          } else if (word[k] >= 97 && word[k] < 123) {
+            password1[k] = word[k] - 32;
+          } else {
+            password1[k] = word[k];
+          }
+        } else {
+          password1[l] = word[l];
+        }
+      }
+      password1[len] = '\0';
+      
+
+      sha256_init( & ctx);
+      sha256_update( & ctx, password1, len);
+      sha256_final( & ctx, buffer);
+
+      for (int j = 0; j < a; j++) {
+
+        cracked = true;
+        for (int i = 0; i < 32; i++) {
+          if (buffer[i] != hashes[j][i]) {
+
+            cracked = false;
+            break;
+          }
+        }
+        if (cracked == true && exist[j + 1] != 1) {
+          ctx.data[6] = '\0';
+          exist[j + 1] = 1;
+          count++;
+          printf("%s %d\n", ctx.data, j + 1);
+        }
+      }
+
+    }
+    for (int k = 0; k < len; ++k) {
+      BYTE password1[len-1];
+      for (int l = 0; l < len; ++l) {
+        if (k == l) {
+          
+
+          if (word[k] >= 65 && word[k] < 90) {
+            password1[k] = word[k] + 32;
+          } else if (word[k] >= 97 && word[k] < 123) {
+            password1[k] = word[k] - 32;
+          } else {
+            password1[k] = word[k];
+          }
+        } else {
+          password1[l] = word[l];
+        }
+      }
+      password1[len] = '\0';
+      password1[0] = password1[0] - 32;
+      
+
+      sha256_init( & ctx);
+      sha256_update( & ctx, password1, len);
+      sha256_final( & ctx, buffer);
+
+      for (int j = 0; j < a; j++) {
+
+        cracked = true;
+        for (int i = 0; i < 32; i++) {
+          if (buffer[i] != hashes[j][i]) {
+
+            cracked = false;
+            break;
+          }
+        }
+        if (cracked == true && exist[j + 1] != 1) {
+          ctx.data[6] = '\0';
+          exist[j + 1] = 1;
+          count++;
+          printf("%s %d\n", ctx.data, j + 1);
+        }
+      }
+
+    }
+      len=0;
+      
+    }
+    else
+    {
+      word[len]=c;
+      ++len;
+    }
+  }
+
+
+
+
 
 }
\ No newline at end of file
diff --git a/crack.exe b/crack.exe
index 6c5299eeb54ca9f5415cf4816ee1aef7e63e2a54..a3817294e441f955c9f0db15c9c3d71958c828ac 100644
GIT binary patch
delta 11117
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
HNkSR`!QTM5

delta 11545
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

-- 
GitLab