#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
	char *layer1= "Au5zKIegwzNktzaPXYp8csbdQERlBow9Ire1jFTW";
	char *layer2= "Au5zKIegwzNktzaPXYp8csbdQERlBow9Ire1jFTW -> 99Hp2azTfxihDphx6Oi9nyhyrmI5QuaA36uU6Ppg <-";
	char *inputbuf;
	size_t inputbufsize= 32;
	size_t inputbuflen= 0;
	printf("Enter password: ");
	if((inputbuf= malloc(sizeof(*inputbuf)*inputbufsize))!=NULL){
		char *nextinput= inputbuf;
		while(fgets(nextinput,inputbufsize-inputbuflen,stdin)!=NULL){
			size_t tmplen= strlen(inputbuf);
			if(inputbuf[tmplen-1]=='\n'){
				inputbuf[tmplen-1]= '\0';
				break;
			}else{
				inputbufsize+= 32;
				if((inputbuf= realloc(inputbuf,sizeof(*inputbuf)*inputbufsize))!=NULL){
					inputbuflen= tmplen;
					nextinput= &inputbuf[inputbuflen];
				}else{
					puts("Ran out of memory!");
					break;
				}
			}
		}
		if(inputbuf!=NULL && strcmp(inputbuf,layer1)==0){
			FILE *idfile;
			free(inputbuf);
			puts("Success!");
			puts("Verifing ID...\n");
			if((idfile= fopen("X9x0Gg95FhroRUFpQoWFk33ZaquGQDIF7uprESYP.txt","r"))!=NULL){
				char *filebuf;
				size_t filebufsize= 32;
				size_t filebuflen= 0;
				if((filebuf= malloc(sizeof(*filebuf)*filebufsize))!=NULL){
					char *nextfilebuf= filebuf;
					int gotid= 0;
					while(filebuf!=NULL && !feof(idfile)){
						filebuflen= 0;
						nextfilebuf= filebuf;
						while(fgets(nextfilebuf,filebufsize-filebuflen,idfile)!=NULL){
							size_t tmplen= strlen(filebuf);
							if(filebuf[tmplen-1]=='\n'){
								filebuf[tmplen-1]= '\0';
								break;
							}else{
								filebufsize+= 32;
								if((filebuf= realloc(filebuf,sizeof(*filebuf)*filebufsize))!=NULL){
									filebuflen= tmplen;
									nextfilebuf= &filebuf[filebuflen];
								}else{
									puts("Ran out of memory!");
									break;
								}
							}
						}
						if(filebuf!=NULL){
							puts(filebuf);
						}
						if(filebuf!=NULL && strncmp(filebuf,layer2,filebufsize)==0){
							gotid= 1;
							break;
						}
					}
					puts("");
					if(gotid){
						FILE *writeout;
						printf("ID Verified!\n");
						if((writeout= fopen("OUTPUT.txt","w"))!=NULL){
							fputs("This is the ONE and ONLY output file, what else is there to state?",writeout);
							fclose(writeout);
							puts("Output file \"OUTPUT.txt\" created!");
						}else{
							puts("Failed to create output file...");
						}
					}
				}
				fclose(idfile);
			}else{
				puts("Failed to find the correct ID file...");
			}
		}else{
			free(inputbuf);
			puts("Incorrect password!");
			return 1;
		}
	}

	return 0;
}