1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "TSTypeAliasDeclaration",
6      "id": {
7        "type": "Identifier",
8        "name": "Facts",
9        "loc": {
10          "start": {
11            "line": 17,
12            "column": 6
13          },
14          "end": {
15            "line": 17,
16            "column": 11
17          }
18        }
19      },
20      "typeAnnotation": {
21        "type": "TSTypeLiteral",
22        "members": [
23          {
24            "type": "TSIndexSignature",
25            "parameters": {
26              "type": "Identifier",
27              "name": "key",
28              "typeAnnotation": {
29                "type": "TSStringKeyword",
30                "loc": {
31                  "start": {
32                    "line": 17,
33                    "column": 22
34                  },
35                  "end": {
36                    "line": 17,
37                    "column": 28
38                  }
39                }
40              },
41              "loc": {
42                "start": {
43                  "line": 17,
44                  "column": 17
45                },
46                "end": {
47                  "line": 17,
48                  "column": 20
49                }
50              }
51            },
52            "typeAnnotation": {
53              "type": "TSBooleanKeyword",
54              "loc": {
55                "start": {
56                  "line": 17,
57                  "column": 31
58                },
59                "end": {
60                  "line": 17,
61                  "column": 38
62                }
63              }
64            },
65            "readonly": false,
66            "static": false,
67            "loc": {
68              "start": {
69                "line": 17,
70                "column": 16
71              },
72              "end": {
73                "line": 17,
74                "column": 40
75              }
76            }
77          }
78        ],
79        "loc": {
80          "start": {
81            "line": 17,
82            "column": 14
83          },
84          "end": {
85            "line": 17,
86            "column": 40
87          }
88        }
89      },
90      "loc": {
91        "start": {
92          "line": 17,
93          "column": 1
94        },
95        "end": {
96          "line": 17,
97          "column": 41
98        }
99      }
100    },
101    {
102      "type": "TSDeclareFunction",
103      "function": {
104        "type": "ScriptFunction",
105        "id": {
106          "type": "Identifier",
107          "name": "checkTruths",
108          "loc": {
109            "start": {
110              "line": 18,
111              "column": 18
112            },
113            "end": {
114              "line": 18,
115              "column": 29
116            }
117          }
118        },
119        "generator": false,
120        "async": false,
121        "expression": false,
122        "params": [
123          {
124            "type": "Identifier",
125            "name": "x",
126            "typeAnnotation": {
127              "type": "TSTypeReference",
128              "typeName": {
129                "type": "Identifier",
130                "name": "Facts",
131                "loc": {
132                  "start": {
133                    "line": 18,
134                    "column": 33
135                  },
136                  "end": {
137                    "line": 18,
138                    "column": 38
139                  }
140                }
141              },
142              "loc": {
143                "start": {
144                  "line": 18,
145                  "column": 33
146                },
147                "end": {
148                  "line": 18,
149                  "column": 38
150                }
151              }
152            },
153            "loc": {
154              "start": {
155                "line": 18,
156                "column": 30
157              },
158              "end": {
159                "line": 18,
160                "column": 31
161              }
162            }
163          }
164        ],
165        "returnType": {
166          "type": "TSVoidKeyword",
167          "loc": {
168            "start": {
169              "line": 18,
170              "column": 41
171            },
172            "end": {
173              "line": 18,
174              "column": 45
175            }
176          }
177        },
178        "declare": true,
179        "loc": {
180          "start": {
181            "line": 18,
182            "column": 9
183          },
184          "end": {
185            "line": 18,
186            "column": 46
187          }
188        }
189      },
190      "loc": {
191        "start": {
192          "line": 18,
193          "column": 9
194        },
195        "end": {
196          "line": 18,
197          "column": 46
198        }
199      }
200    },
201    {
202      "type": "TSDeclareFunction",
203      "function": {
204        "type": "ScriptFunction",
205        "id": {
206          "type": "Identifier",
207          "name": "checkM",
208          "loc": {
209            "start": {
210              "line": 19,
211              "column": 18
212            },
213            "end": {
214              "line": 19,
215              "column": 24
216            }
217          }
218        },
219        "generator": false,
220        "async": false,
221        "expression": false,
222        "params": [
223          {
224            "type": "Identifier",
225            "name": "x",
226            "typeAnnotation": {
227              "type": "TSTypeLiteral",
228              "members": [
229                {
230                  "type": "TSPropertySignature",
231                  "computed": false,
232                  "optional": false,
233                  "readonly": false,
234                  "key": {
235                    "type": "Identifier",
236                    "name": "m",
237                    "loc": {
238                      "start": {
239                        "line": 19,
240                        "column": 30
241                      },
242                      "end": {
243                        "line": 19,
244                        "column": 31
245                      }
246                    }
247                  },
248                  "typeAnnotation": {
249                    "type": "TSBooleanKeyword",
250                    "loc": {
251                      "start": {
252                        "line": 19,
253                        "column": 33
254                      },
255                      "end": {
256                        "line": 19,
257                        "column": 40
258                      }
259                    }
260                  },
261                  "loc": {
262                    "start": {
263                      "line": 19,
264                      "column": 30
265                    },
266                    "end": {
267                      "line": 19,
268                      "column": 42
269                    }
270                  }
271                }
272              ],
273              "loc": {
274                "start": {
275                  "line": 19,
276                  "column": 28
277                },
278                "end": {
279                  "line": 19,
280                  "column": 42
281                }
282              }
283            },
284            "loc": {
285              "start": {
286                "line": 19,
287                "column": 25
288              },
289              "end": {
290                "line": 19,
291                "column": 26
292              }
293            }
294          }
295        ],
296        "returnType": {
297          "type": "TSVoidKeyword",
298          "loc": {
299            "start": {
300              "line": 19,
301              "column": 45
302            },
303            "end": {
304              "line": 19,
305              "column": 49
306            }
307          }
308        },
309        "declare": true,
310        "loc": {
311          "start": {
312            "line": 19,
313            "column": 9
314          },
315          "end": {
316            "line": 19,
317            "column": 50
318          }
319        }
320      },
321      "loc": {
322        "start": {
323          "line": 19,
324          "column": 9
325        },
326        "end": {
327          "line": 19,
328          "column": 50
329        }
330      }
331    },
332    {
333      "type": "VariableDeclaration",
334      "declarations": [
335        {
336          "type": "VariableDeclarator",
337          "id": {
338            "type": "Identifier",
339            "name": "x",
340            "loc": {
341              "start": {
342                "line": 20,
343                "column": 7
344              },
345              "end": {
346                "line": 20,
347                "column": 8
348              }
349            }
350          },
351          "init": {
352            "type": "ObjectExpression",
353            "properties": [
354              {
355                "type": "Property",
356                "method": false,
357                "shorthand": false,
358                "computed": false,
359                "key": {
360                  "type": "Identifier",
361                  "name": "m",
362                  "loc": {
363                    "start": {
364                      "line": 21,
365                      "column": 5
366                    },
367                    "end": {
368                      "line": 21,
369                      "column": 6
370                    }
371                  }
372                },
373                "value": {
374                  "type": "BooleanLiteral",
375                  "value": true,
376                  "loc": {
377                    "start": {
378                      "line": 21,
379                      "column": 8
380                    },
381                    "end": {
382                      "line": 21,
383                      "column": 12
384                    }
385                  }
386                },
387                "kind": "init",
388                "loc": {
389                  "start": {
390                    "line": 21,
391                    "column": 5
392                  },
393                  "end": {
394                    "line": 21,
395                    "column": 12
396                  }
397                }
398              }
399            ],
400            "loc": {
401              "start": {
402                "line": 20,
403                "column": 11
404              },
405              "end": {
406                "line": 22,
407                "column": 2
408              }
409            }
410          },
411          "loc": {
412            "start": {
413              "line": 20,
414              "column": 7
415            },
416            "end": {
417              "line": 22,
418              "column": 2
419            }
420          }
421        }
422      ],
423      "kind": "const",
424      "loc": {
425        "start": {
426          "line": 20,
427          "column": 1
428        },
429        "end": {
430          "line": 22,
431          "column": 3
432        }
433      }
434    },
435    {
436      "type": "ExpressionStatement",
437      "expression": {
438        "type": "CallExpression",
439        "callee": {
440          "type": "Identifier",
441          "name": "checkTruths",
442          "loc": {
443            "start": {
444              "line": 24,
445              "column": 1
446            },
447            "end": {
448              "line": 24,
449              "column": 12
450            }
451          }
452        },
453        "arguments": [
454          {
455            "type": "Identifier",
456            "name": "x",
457            "loc": {
458              "start": {
459                "line": 24,
460                "column": 13
461              },
462              "end": {
463                "line": 24,
464                "column": 14
465              }
466            }
467          }
468        ],
469        "optional": false,
470        "loc": {
471          "start": {
472            "line": 24,
473            "column": 1
474          },
475          "end": {
476            "line": 24,
477            "column": 15
478          }
479        }
480      },
481      "loc": {
482        "start": {
483          "line": 24,
484          "column": 1
485        },
486        "end": {
487          "line": 24,
488          "column": 16
489        }
490      }
491    },
492    {
493      "type": "ExpressionStatement",
494      "expression": {
495        "type": "CallExpression",
496        "callee": {
497          "type": "Identifier",
498          "name": "checkM",
499          "loc": {
500            "start": {
501              "line": 25,
502              "column": 1
503            },
504            "end": {
505              "line": 25,
506              "column": 7
507            }
508          }
509        },
510        "arguments": [
511          {
512            "type": "Identifier",
513            "name": "x",
514            "loc": {
515              "start": {
516                "line": 25,
517                "column": 8
518              },
519              "end": {
520                "line": 25,
521                "column": 9
522              }
523            }
524          }
525        ],
526        "optional": false,
527        "loc": {
528          "start": {
529            "line": 25,
530            "column": 1
531          },
532          "end": {
533            "line": 25,
534            "column": 10
535          }
536        }
537      },
538      "loc": {
539        "start": {
540          "line": 25,
541          "column": 1
542        },
543        "end": {
544          "line": 25,
545          "column": 11
546        }
547      }
548    },
549    {
550      "type": "VariableDeclaration",
551      "declarations": [
552        {
553          "type": "VariableDeclarator",
554          "id": {
555            "type": "Identifier",
556            "name": "m",
557            "typeAnnotation": {
558              "type": "TSBooleanKeyword",
559              "loc": {
560                "start": {
561                  "line": 27,
562                  "column": 10
563                },
564                "end": {
565                  "line": 27,
566                  "column": 17
567                }
568              }
569            },
570            "loc": {
571              "start": {
572                "line": 27,
573                "column": 7
574              },
575              "end": {
576                "line": 27,
577                "column": 8
578              }
579            }
580          },
581          "init": {
582            "type": "MemberExpression",
583            "object": {
584              "type": "Identifier",
585              "name": "x",
586              "loc": {
587                "start": {
588                  "line": 27,
589                  "column": 20
590                },
591                "end": {
592                  "line": 27,
593                  "column": 21
594                }
595              }
596            },
597            "property": {
598              "type": "Identifier",
599              "name": "m",
600              "loc": {
601                "start": {
602                  "line": 27,
603                  "column": 22
604                },
605                "end": {
606                  "line": 27,
607                  "column": 23
608                }
609              }
610            },
611            "computed": false,
612            "optional": false,
613            "loc": {
614              "start": {
615                "line": 27,
616                "column": 20
617              },
618              "end": {
619                "line": 27,
620                "column": 23
621              }
622            }
623          },
624          "loc": {
625            "start": {
626              "line": 27,
627              "column": 7
628            },
629            "end": {
630              "line": 27,
631              "column": 23
632            }
633          }
634        }
635      ],
636      "kind": "const",
637      "loc": {
638        "start": {
639          "line": 27,
640          "column": 1
641        },
642        "end": {
643          "line": 27,
644          "column": 24
645        }
646      }
647    },
648    {
649      "type": "TSTypeAliasDeclaration",
650      "id": {
651        "type": "Identifier",
652        "name": "M",
653        "loc": {
654          "start": {
655            "line": 29,
656            "column": 6
657          },
658          "end": {
659            "line": 29,
660            "column": 7
661          }
662        }
663      },
664      "typeAnnotation": {
665        "type": "TSTypeOperator",
666        "operator": "keyof",
667        "typeAnnotation": {
668          "type": "TSTypeQuery",
669          "exprName": {
670            "type": "Identifier",
671            "name": "x",
672            "loc": {
673              "start": {
674                "line": 29,
675                "column": 23
676              },
677              "end": {
678                "line": 29,
679                "column": 24
680              }
681            }
682          },
683          "loc": {
684            "start": {
685              "line": 29,
686              "column": 16
687            },
688            "end": {
689              "line": 29,
690              "column": 24
691            }
692          }
693        },
694        "loc": {
695          "start": {
696            "line": 29,
697            "column": 10
698          },
699          "end": {
700            "line": 29,
701            "column": 24
702          }
703        }
704      },
705      "loc": {
706        "start": {
707          "line": 29,
708          "column": 1
709        },
710        "end": {
711          "line": 29,
712          "column": 25
713        }
714      }
715    },
716    {
717      "type": "VariableDeclaration",
718      "declarations": [
719        {
720          "type": "VariableDeclarator",
721          "id": {
722            "type": "Identifier",
723            "name": "x2",
724            "loc": {
725              "start": {
726                "line": 31,
727                "column": 7
728              },
729              "end": {
730                "line": 31,
731                "column": 9
732              }
733            }
734          },
735          "init": {
736            "type": "TSSatisfiesExpression",
737            "expression": {
738              "type": "ObjectExpression",
739              "properties": [
740                {
741                  "type": "Property",
742                  "method": false,
743                  "shorthand": false,
744                  "computed": false,
745                  "key": {
746                    "type": "Identifier",
747                    "name": "m",
748                    "loc": {
749                      "start": {
750                        "line": 32,
751                        "column": 5
752                      },
753                      "end": {
754                        "line": 32,
755                        "column": 6
756                      }
757                    }
758                  },
759                  "value": {
760                    "type": "BooleanLiteral",
761                    "value": true,
762                    "loc": {
763                      "start": {
764                        "line": 32,
765                        "column": 8
766                      },
767                      "end": {
768                        "line": 32,
769                        "column": 12
770                      }
771                    }
772                  },
773                  "kind": "init",
774                  "loc": {
775                    "start": {
776                      "line": 32,
777                      "column": 5
778                    },
779                    "end": {
780                      "line": 32,
781                      "column": 12
782                    }
783                  }
784                },
785                {
786                  "type": "Property",
787                  "method": false,
788                  "shorthand": false,
789                  "computed": false,
790                  "key": {
791                    "type": "Identifier",
792                    "name": "s",
793                    "loc": {
794                      "start": {
795                        "line": 33,
796                        "column": 5
797                      },
798                      "end": {
799                        "line": 33,
800                        "column": 6
801                      }
802                    }
803                  },
804                  "value": {
805                    "type": "StringLiteral",
806                    "value": "false",
807                    "loc": {
808                      "start": {
809                        "line": 33,
810                        "column": 8
811                      },
812                      "end": {
813                        "line": 33,
814                        "column": 15
815                      }
816                    }
817                  },
818                  "kind": "init",
819                  "loc": {
820                    "start": {
821                      "line": 33,
822                      "column": 5
823                    },
824                    "end": {
825                      "line": 33,
826                      "column": 15
827                    }
828                  }
829                }
830              ],
831              "loc": {
832                "start": {
833                  "line": 31,
834                  "column": 12
835                },
836                "end": {
837                  "line": 34,
838                  "column": 2
839                }
840              }
841            },
842            "typeAnnotation": {
843              "type": "TSTypeReference",
844              "typeName": {
845                "type": "Identifier",
846                "name": "Facts",
847                "loc": {
848                  "start": {
849                    "line": 34,
850                    "column": 13
851                  },
852                  "end": {
853                    "line": 34,
854                    "column": 18
855                  }
856                }
857              },
858              "loc": {
859                "start": {
860                  "line": 34,
861                  "column": 13
862                },
863                "end": {
864                  "line": 34,
865                  "column": 18
866                }
867              }
868            },
869            "loc": {
870              "start": {
871                "line": 31,
872                "column": 12
873              },
874              "end": {
875                "line": 34,
876                "column": 19
877              }
878            }
879          },
880          "loc": {
881            "start": {
882              "line": 31,
883              "column": 7
884            },
885            "end": {
886              "line": 34,
887              "column": 19
888            }
889          }
890        }
891      ],
892      "kind": "const",
893      "loc": {
894        "start": {
895          "line": 31,
896          "column": 1
897        },
898        "end": {
899          "line": 34,
900          "column": 19
901        }
902      }
903    }
904  ],
905  "loc": {
906    "start": {
907      "line": 1,
908      "column": 1
909    },
910    "end": {
911      "line": 34,
912      "column": 19
913    }
914  }
915}
916