Projects STRLCPY bearer Commits 3d54109c
🤬
Revision indexing in progress... (symbol navigation in revisions will be accurate after indexed)
  • ■ ■ ■ ■ ■ ■
    .gitignore
    skipped 14 lines
    15 15  .envrc
    16 16   
    17 17  # souffle
    18  -./souffle/generated
    19  -./pkg/souffle/rules/generated.cpp
     18 +/souffle/generated
     19 +/pkg/souffle/rules/generated.cpp
    20 20   
  • ■ ■ ■ ■ ■
    cmd/compilerules/main.go
    skipped 8 lines
    9 9   "github.com/bearer/bearer/pkg/commands/process/settings"
    10 10   "github.com/bearer/bearer/pkg/flag"
    11 11   "github.com/bearer/bearer/pkg/util/souffle/compiler"
    12  - writerbase "github.com/bearer/bearer/pkg/util/souffle/writer/base"
    13 12   filewriter "github.com/bearer/bearer/pkg/util/souffle/writer/file"
    14 13   "golang.org/x/exp/slices"
    15 14  )
    skipped 21 lines
    37 36   
    38 37   writer := filewriter.New(ruleFile)
    39 38   
    40  - for ruleName, rule := range config.BuiltInRules {
    41  - if !slices.Contains(rule.Languages, "ruby") {
    42  - continue
     39 + var rules []*settings.Rule
     40 + for _, rule := range config.BuiltInRules {
     41 + if slices.Contains(rule.Languages, "ruby") {
     42 + rules = append(rules, rule)
    43 43   }
    44  - 
    45  - if err := compileRuleToSouffle(language, writer, ruleName, rule); err != nil {
    46  - return fmt.Errorf("built-in rule %s error: %w", ruleName, err)
     44 + }
     45 + for _, rule := range config.Rules {
     46 + if slices.Contains(rule.Languages, "ruby") {
     47 + rules = append(rules, rule)
    47 48   }
    48 49   }
    49 50   
    50  - for ruleName, rule := range config.Rules {
    51  - if !slices.Contains(rule.Languages, "ruby") {
    52  - continue
    53  - }
    54  - 
    55  - if err := compileRuleToSouffle(language, writer, ruleName, rule); err != nil {
    56  - return fmt.Errorf("rule %s error: %w", ruleName, err)
    57  - }
    58  - }
     51 + language.WriteRules(rules, writer)
    59 52   
    60 53   ruleFile.Close()
    61 54   return compiler.Compile("souffle/rules.dl", "pkg/souffle/rules/generated.cpp")
    62 55  }
    63 56   
    64  -func compileRuleToSouffle(
    65  - language *ruby.Language,
    66  - writer *filewriter.Writer,
    67  - ruleName string,
    68  - rule *settings.Rule,
    69  -) error {
    70  - ruleRelation := fmt.Sprintf("Rule_Pattern_%s", ruleName)
    71  - writer.WriteRelation(ruleRelation, "patternIndex: Rule_PatternIndex", "node: AST_NodeId")
    72  - 
    73  - variableRelation := fmt.Sprintf("Rule_PatternVariable_%s", ruleName)
    74  - // writer.WriteRelation(variableRelation, "node: AST_NodeId", "variable: Rule_VariableName", "variableNode: AST_NodeId")
    75  - 
    76  - if err := writer.WriteRule(
    77  - []writerbase.Predicate{writer.Predicate(
    78  - "Rule",
    79  - writer.Symbol(ruleName),
    80  - writer.Identifier("patternIndex"),
    81  - writer.Identifier("node"),
    82  - )},
    83  - []writerbase.Literal{writer.Predicate(
    84  - ruleRelation,
    85  - writer.Identifier("patternIndex"),
    86  - writer.Identifier("node"),
    87  - )},
    88  - ); err != nil {
    89  - return fmt.Errorf("error writing generic rule: %w", err)
    90  - }
    91  - 
    92  - for i, pattern := range rule.Patterns {
    93  - if err := language.WriteRule(ruleRelation, variableRelation, i, pattern.Pattern, writer); err != nil {
    94  - return fmt.Errorf("pattern error (%s)': %w", pattern.Pattern, err)
    95  - }
    96  - }
    97  - 
    98  - return nil
    99  -}
    100  - 
  • ■ ■ ■ ■ ■ ■
    new/detector/composition/ruby/ruby.go
    skipped 14 lines
    15 15   "github.com/bearer/bearer/new/detector/implementation/ruby/object"
    16 16   "github.com/bearer/bearer/new/detector/implementation/ruby/property"
    17 17   "github.com/bearer/bearer/new/language"
     18 + "github.com/bearer/bearer/pkg/util/set"
    18 19   
     20 + "github.com/bearer/bearer/pkg/ast/idgenerator"
    19 21   "github.com/bearer/bearer/pkg/ast/languages/ruby"
    20 22   "github.com/bearer/bearer/pkg/classification"
    21 23   "github.com/bearer/bearer/pkg/commands/process/settings"
    skipped 4 lines
    26 28   stringdetector "github.com/bearer/bearer/new/detector/implementation/ruby/string"
    27 29   detectorset "github.com/bearer/bearer/new/detector/set"
    28 30   detectortypes "github.com/bearer/bearer/new/detector/types"
     31 + "github.com/bearer/bearer/new/language/implementation"
     32 + "github.com/bearer/bearer/new/language/patternquery/builder/input"
    29 33   languagetypes "github.com/bearer/bearer/new/language/types"
    30 34  )
    31 35   
    skipped 2 lines
    34 38   detectorSet detectortypes.DetectorSet
    35 39   lang languagetypes.Language
    36 40   closers []func()
     41 + patternVariables map[string][]string
    37 42  }
    38 43   
    39 44  func New(rules map[string]*settings.Rule, classifier *classification.Classifier) (detectortypes.Composition, error) {
    skipped 73 lines
    113 118   }
    114 119   }
    115 120   
     121 + composition.patternVariables = make(map[string][]string)
     122 + 
    116 123   for ruleName, rule := range rubyRules {
    117 124   patterns := rule.Patterns
    118 125   localRuleName := ruleName
    119 126   
     127 + for patternIndex, pattern := range patterns {
     128 + variables, err := variablesFor(composition.lang.Implementation(), pattern.Pattern)
     129 + if err != nil {
     130 + return nil, fmt.Errorf("error with pattern %s_%d: %w", rule.Id, patternIndex, err)
     131 + }
     132 + 
     133 + composition.patternVariables[idgenerator.PatternId(ruleName, patternIndex)] = variables
     134 + }
     135 + 
    120 136   if !rule.IsAuxilary || presenceRules[ruleName] {
    121 137   composition.customDetectorTypes = append(composition.customDetectorTypes, ruleName)
    122 138   }
    skipped 58 lines
    181 197   return nil, fmt.Errorf("failed to parse file %s", err)
    182 198   }
    183 199   
    184  - souffle, err := souffle.New("souffle")
     200 + souffle, err := souffle.New("generated")
    185 201   if err != nil {
    186 202   return nil, err
    187 203   }
    skipped 4 lines
    192 208   composition.lang.Implementation(),
    193 209   tree,
    194 210   fileContent,
     211 + composition.patternVariables,
    195 212   )
    196 213   if err != nil {
    197 214   return nil, err
    skipped 14 lines
    212 229   return result, nil
    213 230  }
    214 231   
     232 +func variablesFor(langImplementation implementation.Implementation, pattern string) ([]string, error) {
     233 + _, params, err := input.Process(langImplementation, pattern)
     234 + if err != nil {
     235 + return nil, err
     236 + }
     237 + 
     238 + var result []string
     239 + seen := set.New[string]()
     240 + 
     241 + for _, variable := range params.Variables {
     242 + if variable.Name == "_" {
     243 + continue
     244 + }
     245 + 
     246 + if seen.Add(variable.Name) {
     247 + result = append(result, variable.Name)
     248 + }
     249 + }
     250 + 
     251 + return result, nil
     252 +}
     253 + 
  • ■ ■ ■ ■ ■
    new/detector/implementation/custom/custom.go
    skipped 1 lines
    2 2   
    3 3  import (
    4 4   "fmt"
     5 + "strings"
    5 6   
    6 7   "github.com/bearer/bearer/new/detector/types"
    7 8   "github.com/bearer/bearer/new/language/tree"
    8 9   languagetypes "github.com/bearer/bearer/new/language/types"
     10 + "github.com/bearer/bearer/pkg/ast/idgenerator"
    9 11   "github.com/bearer/bearer/pkg/commands/process/settings"
    10 12   soufflequery "github.com/bearer/bearer/pkg/souffle/query"
     13 + "github.com/bearer/bearer/pkg/util/output"
    11 14  )
    12 15   
    13 16  type Data struct {
    skipped 13 lines
    27 30   patterns []Pattern
    28 31  }
    29 32   
    30  -func New(lang languagetypes.Language, detectorType string, patterns []settings.RulePattern) (types.Detector, error) {
     33 +func New(
     34 + lang languagetypes.Language,
     35 + detectorType string,
     36 + patterns []settings.RulePattern,
     37 +) (types.Detector, error) {
    31 38   var compiledPatterns []Pattern
    32 39   for _, pattern := range patterns {
    33  - patternQuery, err := lang.CompilePatternQuery(detectorType, pattern.Pattern)
    34  - if err != nil {
    35  - return nil, fmt.Errorf("error compiling pattern: %s", err)
     40 + var patternQuery languagetypes.PatternQuery
     41 + if !strings.HasPrefix(detectorType, "ruby_") {
     42 + var err error
     43 + patternQuery, err = lang.CompilePatternQuery(detectorType, pattern.Pattern)
     44 + if err != nil {
     45 + return nil, fmt.Errorf("error compiling pattern: %s", err)
     46 + }
    36 47   }
     48 + 
    37 49   compiledPatterns = append(compiledPatterns, Pattern{
    38 50   Pattern: pattern.Pattern,
    39 51   Query: patternQuery,
    skipped 30 lines
    70 82   return nil, err
    71 83   }
    72 84   } else {
    73  - results = queryContext.MatchAt(detector.detectorType, i, node)
     85 + results = queryContext.MatchAt(idgenerator.PatternId(detector.detectorType, i), node)
    74 86   }
    75 87   
    76 88   for _, result := range results {
     89 + output.StdErrLogger().Msgf("found pattern %s at: %s", idgenerator.PatternId(detector.detectorType, i), result.MatchNode.Content())
    77 90   filtersMatch, datatypeDetections, err := matchAllFilters(result, evaluator, pattern.Filters)
    78 91   if err != nil {
    79 92   return nil, err
    skipped 22 lines
  • ■ ■ ■ ■ ■ ■
    pkg/ast/idgenerator/idgenerator.go
    1 1  package idgenerator
    2 2   
    3  -import sitter "github.com/smacker/go-tree-sitter"
     3 +import (
     4 + "fmt"
     5 + 
     6 + sitter "github.com/smacker/go-tree-sitter"
     7 +)
    4 8   
    5 9  type Generator struct {
    6 10   next uint32
    7 11  }
    8 12   
     13 +type NodeIdGenerator struct {
     14 + ids map[*sitter.Node]uint32
     15 + inverseIds map[uint32]*sitter.Node
     16 + idGenerator *Generator
     17 +}
     18 + 
     19 +type PatternIdGenerator struct {
     20 + ids map[string]uint32
     21 + idGenerator *Generator
     22 +}
     23 + 
    9 24  func NewGenerator() *Generator {
    10 25   return &Generator{}
    11 26  }
    skipped 2 lines
    14 29   next := generator.next
    15 30   generator.next++
    16 31   return next
    17  -}
    18  - 
    19  -type NodeIdGenerator struct {
    20  - ids map[*sitter.Node]uint32
    21  - inverseIds map[uint32]*sitter.Node
    22  - idGenerator *Generator
    23 32  }
    24 33   
    25 34  func NewNodeIdGenerator() *NodeIdGenerator {
    skipped 19 lines
    45 54   return generator.inverseIds[nodeId]
    46 55  }
    47 56   
     57 +func PatternId(ruleId string, patternIndex int) string {
     58 + return fmt.Sprintf("%s_%d", ruleId, patternIndex)
     59 +}
     60 + 
  • ■ ■ ■ ■ ■ ■
    pkg/ast/languages/ruby/patterns/patterns.go
    skipped 59 lines
    60 60  func CompileRule(
    61 61   walker *walker.Walker,
    62 62   inputParams *builderinput.InputParams,
    63  - ruleRelation,
    64  - variableRelation string,
    65  - patternIndex int,
     63 + patternId string,
    66 64   input []byte,
    67 65   rootNode *sitter.Node,
    68 66   writer *filewriter.Writer,
    skipped 13 lines
    82 80   return err
    83 81   }
    84 82   
    85  - var variablePredicates []writerbase.Predicate
    86  - for name, variables := range w.variableNodes {
    87  - for _, variable := range variables {
    88  - variablePredicates = append(variablePredicates, writer.Predicate(
    89  - variableRelation,
    90  - w.rootElement,
    91  - writer.Symbol(name),
    92  - variable,
    93  - ))
     83 + var variableTypes []string
     84 + var variableConstraints []writerbase.Literal
     85 + var variableElements []writerbase.LiteralElement
     86 + 
     87 + for _, variable := range inputParams.Variables {
     88 + souffleVariables := w.variableNodes[variable.Name]
     89 + 
     90 + if len(souffleVariables) == 0 {
     91 + continue
     92 + }
     93 + 
     94 + firstVariable := souffleVariables[0]
     95 + variableTypes = append(variableTypes, string(firstVariable)+": AST_NodeId")
     96 + variableElements = append(variableElements, firstVariable)
     97 + 
     98 + for _, souffleVariable := range souffleVariables[1:] {
     99 + variableConstraints = append(variableConstraints, writer.Constraint(souffleVariable, "=", firstVariable))
    94 100   }
    95 101   }
    96 102   
    skipped 2 lines
    99 105   return nil
    100 106   }
    101 107   log.Printf("#literals: %d", len(w.literals))
     108 + 
     109 + writer.WriteRelation(
     110 + fmt.Sprintf("Rule_Match_%s", patternId),
     111 + writerbase.Output,
     112 + append([]string{"node: AST_NodeId"}, variableTypes...)...,
     113 + )
    102 114   
    103 115   if err := writer.WriteRule(
    104  - // append(
    105  - // []writerbase.Predicate(nil), //variablePredicates,
    106  - // writer.Predicate(ruleRelation, w.rootElement),
    107  - // ),
    108  - []writerbase.Predicate{writer.Predicate(ruleRelation, writer.Unsigned(uint32(patternIndex)), w.rootElement)},
    109  - w.literals,
     116 + []writerbase.Predicate{writer.Predicate(
     117 + fmt.Sprintf("Rule_Match_%s", patternId),
     118 + append([]writerbase.LiteralElement{w.rootElement}, variableElements...)...,
     119 + )},
     120 + append(w.literals, variableConstraints...),
    110 121   ); err != nil {
    111 122   return err
    112 123   }
    skipped 169 lines
  • ■ ■ ■ ■ ■ ■
    pkg/ast/languages/ruby/ruby.go
    skipped 13 lines
    14 14   "github.com/bearer/bearer/pkg/ast/languages/ruby/patterns"
    15 15   "github.com/bearer/bearer/pkg/ast/sourcefacts"
    16 16   "github.com/bearer/bearer/pkg/ast/walker"
     17 + "github.com/bearer/bearer/pkg/commands/process/settings"
    17 18   "github.com/bearer/bearer/pkg/util/souffle/writer"
    18 19   filewriter "github.com/bearer/bearer/pkg/util/souffle/writer/file"
    19 20  )
    skipped 29 lines
    49 50   )
    50 51  }
    51 52   
    52  -func (language *Language) WriteRule(
    53  - ruleRelation,
    54  - variableRelation string,
    55  - patternIndex int,
    56  - input string,
    57  - writer *filewriter.Writer,
    58  -) error {
     53 +func (language *Language) WriteRules(rules []*settings.Rule, writer *filewriter.Writer) error {
     54 + for _, rule := range rules {
     55 + writer.WriteComment(fmt.Sprintf("rule %s", rule.Id))
     56 + 
     57 + for patternIndex, pattern := range rule.Patterns {
     58 + patternId := idgenerator.PatternId(rule.Id, patternIndex)
     59 + 
     60 + if err := language.WriteRule(patternId, pattern.Pattern, writer); err != nil {
     61 + return fmt.Errorf("pattern error (%s)': %w", pattern.Pattern, err)
     62 + }
     63 + }
     64 + }
     65 + 
     66 + return nil
     67 +}
     68 + 
     69 +func (language *Language) WriteRule(patternId string, input string, writer *filewriter.Writer) error {
    59 70   processedInput, inputParams, err := builderinput.Process(language.langImplementation, input)
    60 71   if err != nil {
    61 72   return fmt.Errorf("error parsing bearer syntax: %w", err)
    skipped 9 lines
    71 82   if err := patterns.CompileRule(
    72 83   language.walker,
    73 84   inputParams,
    74  - ruleRelation,
    75  - variableRelation,
    76  - patternIndex,
     85 + patternId,
    77 86   processedInputBytes,
    78 87   rootNode,
    79 88   writer,
    skipped 11 lines
  • ■ ■ ■ ■ ■ ■
    pkg/ast/sourcefacts/sourcefacts.go
    skipped 64 lines
    65 65   }
    66 66   }
    67 67   
    68  - if err := writer.WriteFact(
    69  - "AST_NodeLocation",
    70  - nodeElement,
    71  - writer.Record(
    72  - writer.Unsigned(node.StartByte()),
    73  - writer.Unsigned(node.StartPoint().Row+1),
    74  - writer.Unsigned(node.StartPoint().Column+1),
    75  - writer.Unsigned(node.EndPoint().Row+1),
    76  - writer.Unsigned(node.EndPoint().Column+1),
    77  - ),
    78  - ); err != nil {
    79  - return err
    80  - }
     68 + // if err := writer.WriteFact(
     69 + // "AST_NodeLocation",
     70 + // nodeElement,
     71 + // writer.Record(
     72 + // writer.Unsigned(node.StartByte()),
     73 + // writer.Unsigned(node.StartPoint().Row+1),
     74 + // writer.Unsigned(node.StartPoint().Column+1),
     75 + // writer.Unsigned(node.EndPoint().Row+1),
     76 + // writer.Unsigned(node.EndPoint().Column+1),
     77 + // ),
     78 + // ); err != nil {
     79 + // return err
     80 + // }
    81 81   
    82 82   oldChildIndex := writer.childIndex
    83 83   writer.childIndex = 0
    skipped 10 lines
  • ■ ■ ■ ■ ■
    pkg/commands/process/settings/rules.go
    skipped 225 lines
    226 226   
    227 227   for _, auxiliaryDefinition := range definition.Auxiliary {
    228 228   rules[auxiliaryDefinition.Id] = &Rule{
     229 + Id: auxiliaryDefinition.Id,
    229 230   Type: defaultAuxiliaryRuleType,
    230 231   Languages: definition.Languages,
    231 232   ParamParenting: auxiliaryDefinition.ParamParenting,
    skipped 10 lines
  • ■ ■ ■ ■ ■ ■
    pkg/souffle/query/query.go
    skipped 1 lines
    2 2   
    3 3  import (
    4 4   "fmt"
     5 + "reflect"
     6 + 
     7 + "github.com/rs/zerolog/log"
     8 + sitter "github.com/smacker/go-tree-sitter"
    5 9   
    6 10   "github.com/bearer/bearer/new/language/implementation"
    7 11   "github.com/bearer/bearer/new/language/tree"
    8 12   languagetypes "github.com/bearer/bearer/new/language/types"
    9 13   "github.com/bearer/bearer/pkg/ast/idgenerator"
    10 14   "github.com/bearer/bearer/pkg/ast/languages/ruby"
    11  - "github.com/bearer/bearer/pkg/souffle/relationtypes"
    12 15   "github.com/bearer/bearer/pkg/util/souffle"
    13 16   relationwriter "github.com/bearer/bearer/pkg/util/souffle/writer/relation"
    14  - sitter "github.com/smacker/go-tree-sitter"
    15 17  )
    16 18   
    17 19  type QueryContext struct {
    skipped 3 lines
    21 23   cache map[string]map[uint32][]*languagetypes.PatternQueryResult
    22 24   nodeIdGenerator *idgenerator.NodeIdGenerator
    23 25   tree *tree.Tree
     26 + patternTypes map[string]reflect.Type
    24 27  }
    25 28   
    26 29  func NewContext(
    skipped 2 lines
    29 32   langImplementation implementation.Implementation,
    30 33   tree *tree.Tree,
    31 34   input []byte,
     35 + patternVariables map[string][]string,
    32 36  ) (*QueryContext, error) {
    33 37   context := &QueryContext{
    34 38   souffle: souffle,
    skipped 2 lines
    37 41   cache: make(map[string]map[uint32][]*languagetypes.PatternQueryResult),
    38 42   nodeIdGenerator: idgenerator.NewNodeIdGenerator(),
    39 43   tree: tree,
     44 + patternTypes: makePatternTypes(patternVariables),
    40 45   }
    41 46   
    42 47   return context, context.run(tree.RootNode().SitterNode(), input)
    43 48  }
    44 49   
    45  -func (context *QueryContext) MatchAt(ruleName string, patternIndex int, node *tree.Node) []*languagetypes.PatternQueryResult {
    46  - nodeCache, ruleExists := context.cache[patternKey(ruleName, patternIndex)]
     50 +func (context *QueryContext) MatchAt(patternId string, node *tree.Node) []*languagetypes.PatternQueryResult {
     51 + nodeCache, ruleExists := context.cache[patternId]
    47 52   if !ruleExists {
    48 53   return nil
    49 54   }
    50 55   
    51  - return nodeCache[context.nodeIdGenerator.Get(node.SitterNode())]
     56 + r := nodeCache[context.nodeIdGenerator.Get(node.SitterNode())]
     57 + 
     58 + return r
    52 59  }
    53 60   
    54  -func (context *QueryContext) put(nodeId uint32, ruleName string, patternIndex int, result *languagetypes.PatternQueryResult) {
    55  - nodeCache, ruleExists := context.cache[patternKey(ruleName, patternIndex)]
     61 +func (context *QueryContext) put(nodeId uint32, patternId string, result *languagetypes.PatternQueryResult) {
     62 + log.Error().Msgf("putting result for %d: %#v", patternId, result)
     63 + 
     64 + nodeCache, ruleExists := context.cache[patternId]
    56 65   if !ruleExists {
    57 66   nodeCache = make(map[uint32][]*languagetypes.PatternQueryResult)
    58  - context.cache[ruleName] = nodeCache
     67 + context.cache[patternId] = nodeCache
    59 68   }
    60 69   
    61 70   nodeCache[nodeId] = append(nodeCache[nodeId], result)
    skipped 9 lines
    71 80   
    72 81   context.souffle.Run()
    73 82   
    74  - return context.readMatches()
     83 + if err := context.readMatches(); err != nil {
     84 + return fmt.Errorf("error reading matches: %w", err)
     85 + }
     86 + 
     87 + return nil
    75 88  }
    76 89   
    77 90  func (context *QueryContext) readMatches() error {
    78  - relation, err := context.souffle.Relation("Rule_Match")
    79  - if err != nil {
    80  - return err
    81  - }
     91 + for patternId, typ := range context.patternTypes {
     92 + // FIXME: Define dynamic names in a common place
     93 + relation, err := context.souffle.Relation(fmt.Sprintf("Rule_Match_%s", patternId))
     94 + if err != nil {
     95 + // FIXME: need to filter rules by ones we actually compiled
     96 + log.Error().Msgf("pattern relation error: %w", err)
     97 + continue
     98 + // return err
     99 + }
     100 + 
     101 + iterator := relation.NewIterator()
     102 + defer iterator.Close()
     103 + 
     104 + log.Error().Msgf("output count: %d", relation.Size())
     105 + 
     106 + for i := 0; iterator.HasNext(); i++ {
     107 + match := reflect.New(typ)
     108 + matchValue := reflect.Indirect(match)
     109 + if err := context.souffle.Unmarshal(match.Interface(), iterator.GetNext()); err != nil {
     110 + return fmt.Errorf("failed to read tuple %d: %w", i, err)
     111 + }
    82 112   
    83  - iterator := relation.NewIterator()
    84  - defer iterator.Close()
     113 + matchNodeId := uint32(matchValue.Field(0).Uint())
     114 + matchNode := context.resultNode(matchNodeId)
    85 115   
    86  - for i := 0; iterator.HasNext(); i++ {
    87  - var match relationtypes.Rule_Match
    88  - if err := context.souffle.Unmarshal(&match, iterator.GetNext()); err != nil {
    89  - return fmt.Errorf("failed to read tuple %d for Rule_Match: %w", i, err)
    90  - }
     116 + variables := make(map[string]*tree.Node)
    91 117   
    92  - context.put(match.Node, match.RuleName, int(match.PatternIndex), &languagetypes.PatternQueryResult{
    93  - MatchNode: context.tree.Wrap(context.nodeIdGenerator.InverseLookup(match.Node)),
    94  - Variables: make(map[string]*tree.Node),
    95  - })
     118 + for i := 1; i < typ.NumField(); i++ {
     119 + fieldType := typ.Field(i)
     120 + field := matchValue.Field(i)
     121 + 
     122 + variables[fieldType.Name] = context.resultNode(uint32(field.Uint()))
     123 + }
     124 + 
     125 + context.put(matchNodeId, patternId, &languagetypes.PatternQueryResult{
     126 + MatchNode: matchNode,
     127 + Variables: variables,
     128 + })
     129 + }
    96 130   }
    97 131   
    98 132   return nil
    99 133  }
    100 134   
    101  -func patternKey(ruleName string, patternIndex int) string {
    102  - return fmt.Sprintf("%s:%d", ruleName, patternIndex)
     135 +func (context *QueryContext) resultNode(nodeId uint32) *tree.Node {
     136 + return context.tree.Wrap(context.nodeIdGenerator.InverseLookup(nodeId))
     137 +}
     138 + 
     139 +func makePatternTypes(patternVariables map[string][]string) map[string]reflect.Type {
     140 + uint32_t := reflect.TypeOf(uint32(0))
     141 + result := make(map[string]reflect.Type)
     142 + 
     143 + for patternId, variables := range patternVariables {
     144 + fields := []reflect.StructField{{Name: "Match", Type: uint32_t}}
     145 + 
     146 + for i := range variables {
     147 + fields = append(fields, reflect.StructField{Name: fmt.Sprintf("Variable%d", i), Type: uint32_t})
     148 + }
     149 + 
     150 + result[patternId] = reflect.StructOf(fields)
     151 + }
     152 + 
     153 + return result
    103 154  }
    104 155   
  • pkg/souffle/rules/generated.cpp
    Unable to diff as the file is too large.
  • ■ ■ ■ ■ ■
    pkg/util/set/set.go
    skipped 5 lines
    6 6   return make(Set[T])
    7 7  }
    8 8   
    9  -func (set Set[T]) Add(item T) {
     9 +func (set Set[T]) Add(item T) bool {
     10 + if set.Has(item) {
     11 + return false
     12 + }
     13 + 
    10 14   set[item] = struct{}{}
     15 + return true
    11 16  }
    12 17   
    13 18  func (set Set[T]) Has(item T) bool {
    skipped 4 lines
  • ■ ■ ■ ■ ■ ■
    pkg/util/souffle/writer/base/base.go
    1 1  package base
    2 2   
     3 +type RelationType string
     4 + 
     5 +var (
     6 + Output RelationType = "output"
     7 + Input RelationType = "input"
     8 + Intermediate RelationType = ""
     9 +)
     10 + 
    3 11  type Base struct{}
    4 12   
    5 13  func (writer *Base) Symbol(value string) Symbol {
    skipped 11 lines
  • ■ ■ ■ ■ ■ ■
    pkg/util/souffle/writer/base/literal.go
    skipped 17 lines
    18 18   
    19 19  type NegativePredicate Predicate
    20 20   
     21 +type Constraint struct {
     22 + Left LiteralElement
     23 + Operator string
     24 + Right LiteralElement
     25 +}
     26 + 
    21 27  type Literal interface {
    22 28   String() string
    23 29   sealedLiteral()
    skipped 3 lines
    27 33  func (Disjunction) sealedLiteral() {}
    28 34  func (Predicate) sealedLiteral() {}
    29 35  func (NegativePredicate) sealedLiteral() {}
     36 +func (Constraint) sealedLiteral() {}
    30 37   
    31 38  type LiteralElement interface {
    32 39   String() string
    skipped 56 lines
    89 96   return "!" + Predicate(predicate).String()
    90 97  }
    91 98   
     99 +func (constraint Constraint) String() string {
     100 + return constraint.Left.String() + constraint.Operator + constraint.Right.String()
     101 +}
     102 + 
  • ■ ■ ■ ■ ■ ■
    pkg/util/souffle/writer/file/file.go
    skipped 31 lines
    32 32   return base.Disjunction(literals)
    33 33  }
    34 34   
     35 +func (writer *Writer) Constraint(left base.LiteralElement, operator string, right base.LiteralElement) base.Constraint {
     36 + return base.Constraint{Left: left, Operator: operator, Right: right}
     37 +}
     38 + 
    35 39  func (writer *Writer) Predicate(name string, elements ...base.LiteralElement) base.Predicate {
    36 40   return base.Predicate{Name: name, Elements: elements}
    37 41  }
    skipped 2 lines
    40 44   return base.NegativePredicate(base.Predicate{Name: name, Elements: elements})
    41 45  }
    42 46   
     47 +func (writer *Writer) WriteComment(text string) error {
     48 + return writer.write("// " + text + "\n")
     49 +}
     50 + 
    43 51  // FIXME: use proper attribute type
    44  -func (writer *Writer) WriteRelation(name string, attributes ...string) error {
     52 +func (writer *Writer) WriteRelation(name string, typ base.RelationType, attributes ...string) error {
    45 53   builder := strings.Builder{}
    46 54   builder.WriteString(".decl ")
    47 55   builder.WriteString(name)
    skipped 8 lines
    56 64   }
    57 65   
    58 66   builder.WriteString(")\n")
     67 + 
     68 + if typ != base.Intermediate {
     69 + builder.WriteString(".")
     70 + builder.WriteString(string(typ))
     71 + builder.WriteString(" ")
     72 + builder.WriteString(name)
     73 + builder.WriteString("\n")
     74 + }
    59 75   
    60 76   return writer.write(builder.String())
    61 77  }
    skipped 44 lines
  • ■ ■ ■ ■ ■ ■
    souffle/ast.dl
    1  -.type AST_FileId <: number
     1 +.type AST_FileId <: unsigned
    2 2  .type AST_Filename <: symbol
    3  -.type AST_FilePosition <: number
     3 +.type AST_FilePosition <: unsigned
    4 4   
    5  -.type AST_NodeId <: number
     5 +.type AST_NodeId <: unsigned
    6 6   
    7 7  .type AST_Type <: symbol
    8 8  .type AST_Field <: symbol
    skipped 26 lines
  • ■ ■ ■ ■ ■ ■
    souffle/generated/rules.dl
    1  -.decl Rule_Pattern_ruby_lang_regex_using_user_input_user_input(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    2  -Rule("ruby_lang_regex_using_user_input_user_input", patternIndex, node) :- Rule_Pattern_ruby_lang_regex_using_user_input_user_input(patternIndex, node).
    3  -Rule_Pattern_ruby_lang_regex_using_user_input_user_input(0, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
    4  -Rule_Pattern_ruby_lang_regex_using_user_input_user_input(1, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
    5  -Rule_Pattern_ruby_lang_regex_using_user_input_user_input(2, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
    6  -Rule_Pattern_ruby_lang_regex_using_user_input_user_input(3, node1) :- AST_NodeType(node1, "method"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "parameters"), AST_NodeType(node3, "method_parameters"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "keyword_parameter"), !AST_NodeField(node4, _, "value"), AST_NodeField(node4, node5, "name"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "event"), AST_ParentChild(node3, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "context").
    7  -.decl Rule_Pattern_ruby_third_parties_bigquery_insert_async(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    8  -Rule("ruby_third_parties_bigquery_insert_async", patternIndex, node) :- Rule_Pattern_ruby_third_parties_bigquery_insert_async(patternIndex, node).
    9  -Rule_Pattern_ruby_third_parties_bigquery_insert_async(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "insert_async").
    10  -Rule_Pattern_ruby_third_parties_bigquery_insert_async(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "insert_async").
    11  -Rule_Pattern_ruby_third_parties_bigquery_insert_async(2, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "insert_async").
    12  -.decl Rule_Pattern_ruby_third_parties_google_analytics(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    13  -Rule("ruby_third_parties_google_analytics", patternIndex, node) :- Rule_Pattern_ruby_third_parties_google_analytics(patternIndex, node).
    14  -.decl Rule_Pattern_ruby_lang_weak_encryption_with_data(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    15  -Rule("ruby_lang_weak_encryption_with_data", patternIndex, node) :- Rule_Pattern_ruby_lang_weak_encryption_with_data(patternIndex, node).
    16  -Rule_Pattern_ruby_lang_weak_encryption_with_data(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Digest"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "SHA1"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "hexidigest"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    17  -Rule_Pattern_ruby_lang_weak_encryption_with_data(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Digest"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "MD5"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "hexdigest"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    18  -Rule_Pattern_ruby_lang_weak_encryption_with_data(2, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    19  -Rule_Pattern_ruby_lang_weak_encryption_with_data(3, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    20  -Rule_Pattern_ruby_lang_weak_encryption_with_data(4, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
    21  -Rule_Pattern_ruby_lang_weak_encryption_with_data(5, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
    22  -Rule_Pattern_ruby_lang_weak_encryption_with_data(6, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    23  -Rule_Pattern_ruby_lang_weak_encryption_with_data(7, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
    24  -Rule_Pattern_ruby_lang_weak_encryption_with_data(8, node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "do_block"), !AST_NodeField(node4, _, "parameters"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    25  -.decl Rule_Pattern_ruby_third_parties_bigquery(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    26  -Rule("ruby_third_parties_bigquery", patternIndex, node) :- Rule_Pattern_ruby_third_parties_bigquery(patternIndex, node).
    27  -Rule_Pattern_ruby_third_parties_bigquery(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "insert"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    28  -.decl Rule_Pattern_ruby_third_parties_bugsnag(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    29  -Rule("ruby_third_parties_bugsnag", patternIndex, node) :- Rule_Pattern_ruby_third_parties_bugsnag(patternIndex, node).
    30  -Rule_Pattern_ruby_third_parties_bugsnag(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Bugsnag"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "leave_breadcrumb"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    31  -Rule_Pattern_ruby_third_parties_bugsnag(2, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Bugsnag"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "notify"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    32  -.decl Rule_Pattern_ruby_lang_ftp_using_user_input_user_input(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    33  -Rule("ruby_lang_ftp_using_user_input_user_input", patternIndex, node) :- Rule_Pattern_ruby_lang_ftp_using_user_input_user_input(patternIndex, node).
    34  -Rule_Pattern_ruby_lang_ftp_using_user_input_user_input(0, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
    35  -Rule_Pattern_ruby_lang_ftp_using_user_input_user_input(1, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
    36  -Rule_Pattern_ruby_lang_ftp_using_user_input_user_input(2, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
    37  -Rule_Pattern_ruby_lang_ftp_using_user_input_user_input(3, node1) :- AST_NodeType(node1, "method"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "parameters"), AST_NodeType(node3, "method_parameters"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "keyword_parameter"), !AST_NodeField(node4, _, "value"), AST_NodeField(node4, node5, "name"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "event"), AST_ParentChild(node3, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "context").
    38  -.decl Rule_Pattern_ruby_lang_weak_encryption(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    39  -Rule("ruby_lang_weak_encryption", patternIndex, node) :- Rule_Pattern_ruby_lang_weak_encryption(patternIndex, node).
    40  -Rule_Pattern_ruby_lang_weak_encryption(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Digest"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "SHA1"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "hexidigest").
    41  -Rule_Pattern_ruby_lang_weak_encryption(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Digest"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "MD5"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "hexdigest").
    42  -Rule_Pattern_ruby_lang_weak_encryption(2, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _).
    43  -Rule_Pattern_ruby_lang_weak_encryption(3, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _).
    44  -Rule_Pattern_ruby_lang_weak_encryption(4, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _).
    45  -Rule_Pattern_ruby_lang_weak_encryption(5, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _).
    46  -Rule_Pattern_ruby_lang_weak_encryption(6, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _).
    47  -Rule_Pattern_ruby_lang_weak_encryption(7, node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "do_block"), !AST_NodeField(node4, _, "parameters"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    48  -.decl Rule_Pattern_ruby_third_parties_elasticsearch(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    49  -Rule("ruby_third_parties_elasticsearch", patternIndex, node) :- Rule_Pattern_ruby_third_parties_elasticsearch(patternIndex, node).
    50  -Rule_Pattern_ruby_third_parties_elasticsearch(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "pair"), AST_NodeField(node5, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":body"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "body")), AST_NodeField(node5, node6, "value"), AST_NodeType(node6, _).
    51  -Rule_Pattern_ruby_third_parties_elasticsearch(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "hash"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "pair"), AST_NodeField(node6, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":body"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "body")), AST_NodeField(node6, node7, "value"), AST_NodeType(node7, _).
    52  -.decl Rule_Pattern_ruby_lang_weak_encryption_with_data_openssl_rsa_init(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    53  -Rule("ruby_lang_weak_encryption_with_data_openssl_rsa_init", patternIndex, node) :- Rule_Pattern_ruby_lang_weak_encryption_with_data_openssl_rsa_init(patternIndex, node).
    54  -Rule_Pattern_ruby_lang_weak_encryption_with_data_openssl_rsa_init(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "OpenSSL"), AST_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "PKey"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "RSA"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
    55  -.decl Rule_Pattern_ruby_lang_http_url_using_user_input_excon(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    56  -Rule("ruby_lang_http_url_using_user_input_excon", patternIndex, node) :- Rule_Pattern_ruby_lang_http_url_using_user_input_excon(patternIndex, node).
    57  -Rule_Pattern_ruby_lang_http_url_using_user_input_excon(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Excon"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "new").
    58  -Rule_Pattern_ruby_lang_http_url_using_user_input_excon(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Excon"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Connection"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
    59  -.decl Rule_Pattern_ruby_lang_hardcoded_secret(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    60  -Rule("ruby_lang_hardcoded_secret", patternIndex, node) :- Rule_Pattern_ruby_lang_hardcoded_secret(patternIndex, node).
    61  -Rule_Pattern_ruby_lang_hardcoded_secret(0, node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "right"), AST_NodeType(node3, _).
    62  -Rule_Pattern_ruby_lang_hardcoded_secret(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), !AST_NodeField(node1, _, "receiver"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "pair"), AST_NodeField(node4, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":CurioVar1"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "CurioVar1")), AST_NodeField(node4, node5, "value"), AST_NodeType(node5, _).
    63  -Rule_Pattern_ruby_lang_hardcoded_secret(2, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "pair"), AST_NodeField(node4, node5, "key"), AST_NodeType(node5, _), AST_NodeField(node4, node6, "value"), AST_NodeType(node6, _).
    64  -Rule_Pattern_ruby_lang_hardcoded_secret(3, node1) :- AST_NodeType(node1, "hash"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "pair"), AST_NodeField(node2, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":CurioVar0"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "CurioVar0")), AST_NodeField(node2, node3, "value"), AST_NodeType(node3, _).
    65  -Rule_Pattern_ruby_lang_hardcoded_secret(4, node1) :- AST_NodeType(node1, "hash"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "pair"), AST_NodeField(node2, node3, "key"), AST_NodeType(node3, _), AST_NodeField(node2, node4, "value"), AST_NodeType(node4, _).
    66  -.decl Rule_Pattern_ruby_rails_default_encryption(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    67  -Rule("ruby_rails_default_encryption", patternIndex, node) :- Rule_Pattern_ruby_rails_default_encryption(patternIndex, node).
    68  -Rule_Pattern_ruby_rails_default_encryption(0, node1) :- AST_NodeType(node1, "class"), !AST_NodeField(node1, _, "superclass"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "call"), !AST_NodeField(node3, _, "receiver"), !AST_NodeField(node3, _, "block"), AST_NodeField(node3, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "encrypts"), AST_NodeField(node3, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
    69  -.decl Rule_Pattern_ruby_third_parties_honeybadger(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    70  -Rule("ruby_third_parties_honeybadger", patternIndex, node) :- Rule_Pattern_ruby_third_parties_honeybadger(patternIndex, node).
    71  -Rule_Pattern_ruby_third_parties_honeybadger(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Honeybadger"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "notify"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    72  -Rule_Pattern_ruby_third_parties_honeybadger(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Honeybadger"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "context"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    73  -Rule_Pattern_ruby_third_parties_honeybadger(2, node1) :- AST_NodeType(node1, "method"), !AST_NodeField(node1, _, "parameters"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "to_honeybadger_context"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, _).
    74  -Rule_Pattern_ruby_third_parties_honeybadger(3, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Honeybadger"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "add_breadcrumb"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    75  -.decl Rule_Pattern_google_dataflow_templates_service_client_init(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    76  -Rule("google_dataflow_templates_service_client_init", patternIndex, node) :- Rule_Pattern_google_dataflow_templates_service_client_init(patternIndex, node).
    77  -Rule_Pattern_google_dataflow_templates_service_client_init(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Google"), AST_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Cloud"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Dataflow"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "templates_service").
    78  -.decl Rule_Pattern_ruby_rails_redirect_to_user_input(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    79  -Rule("ruby_rails_redirect_to_user_input", patternIndex, node) :- Rule_Pattern_ruby_rails_redirect_to_user_input(patternIndex, node).
    80  -Rule_Pattern_ruby_rails_redirect_to_user_input(0, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
    81  -Rule_Pattern_ruby_rails_redirect_to_user_input(1, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
    82  -Rule_Pattern_ruby_rails_redirect_to_user_input(2, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
    83  -.decl Rule_Pattern_ruby_rails_render_using_user_input(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    84  -Rule("ruby_rails_render_using_user_input", patternIndex, node) :- Rule_Pattern_ruby_rails_render_using_user_input(patternIndex, node).
    85  -Rule_Pattern_ruby_rails_render_using_user_input(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "render"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "pair"), AST_NodeField(node4, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":inline"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "inline")), AST_NodeField(node4, node5, "value"), AST_NodeType(node5, _).
    86  -Rule_Pattern_ruby_rails_render_using_user_input(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "render"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "pair"), AST_NodeField(node4, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":html"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "html")), AST_NodeField(node4, node5, "value"), AST_NodeType(node5, _).
    87  -.decl Rule_Pattern_google_dataflow_client_init(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    88  -Rule("google_dataflow_client_init", patternIndex, node) :- Rule_Pattern_google_dataflow_client_init(patternIndex, node).
    89  -Rule_Pattern_google_dataflow_client_init(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Google"), AST_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Cloud"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Dataflow"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, _).
    90  -.decl Rule_Pattern_google_dataflow_value_classes(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    91  -Rule("google_dataflow_value_classes", patternIndex, node) :- Rule_Pattern_google_dataflow_value_classes(patternIndex, node).
    92  -.decl Rule_Pattern_ruby_third_parties_bigquery_table(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    93  -Rule("ruby_third_parties_bigquery_table", patternIndex, node) :- Rule_Pattern_ruby_third_parties_bigquery_table(patternIndex, node).
    94  -Rule_Pattern_ruby_third_parties_bigquery_table(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "table").
    95  -Rule_Pattern_ruby_third_parties_bigquery_table(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "create_table").
    96  -.decl Rule_Pattern_ruby_third_parties_sentry(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    97  -Rule("ruby_third_parties_sentry", patternIndex, node) :- Rule_Pattern_ruby_third_parties_sentry(patternIndex, node).
    98  -Rule_Pattern_ruby_third_parties_sentry(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Sentry"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Breadcrumb"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    99  -Rule_Pattern_ruby_third_parties_sentry(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "capture_message"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    100  -Rule_Pattern_ruby_third_parties_sentry(3, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "set_context"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
    101  -Rule_Pattern_ruby_third_parties_sentry(8, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "set_extras"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    102  -Rule_Pattern_ruby_third_parties_sentry(13, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "set_tags"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    103  -Rule_Pattern_ruby_third_parties_sentry(16, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "set_user"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    104  -.decl Rule_Pattern_ruby_third_parties_clickhouse_insert_rows(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    105  -Rule("ruby_third_parties_clickhouse_insert_rows", patternIndex, node) :- Rule_Pattern_ruby_third_parties_clickhouse_insert_rows(patternIndex, node).
    106  -.decl Rule_Pattern_ruby_lang_exec_using_user_input_user_input(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    107  -Rule("ruby_lang_exec_using_user_input_user_input", patternIndex, node) :- Rule_Pattern_ruby_lang_exec_using_user_input_user_input(patternIndex, node).
    108  -Rule_Pattern_ruby_lang_exec_using_user_input_user_input(0, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
    109  -Rule_Pattern_ruby_lang_exec_using_user_input_user_input(1, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
    110  -Rule_Pattern_ruby_lang_exec_using_user_input_user_input(2, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
    111  -Rule_Pattern_ruby_lang_exec_using_user_input_user_input(3, node1) :- AST_NodeType(node1, "method"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "parameters"), AST_NodeType(node3, "method_parameters"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "keyword_parameter"), !AST_NodeField(node4, _, "value"), AST_NodeField(node4, node5, "name"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "event"), AST_ParentChild(node3, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "context").
    112  -.decl Rule_Pattern_ruby_lang_exception(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    113  -Rule("ruby_lang_exception", patternIndex, node) :- Rule_Pattern_ruby_lang_exception(patternIndex, node).
    114  -Rule_Pattern_ruby_lang_exception(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "raise"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
    115  -.decl Rule_Pattern_ruby_third_parties_rollbar(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    116  -Rule("ruby_third_parties_rollbar", patternIndex, node) :- Rule_Pattern_ruby_third_parties_rollbar(patternIndex, node).
    117  -Rule_Pattern_ruby_third_parties_rollbar(0, node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "rollbar_context"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
    118  -Rule_Pattern_ruby_third_parties_rollbar(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Rollbar"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    119  -Rule_Pattern_ruby_third_parties_rollbar(2, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Rollbar"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "log"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
    120  -Rule_Pattern_ruby_third_parties_rollbar(3, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "scope"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    121  -Rule_Pattern_ruby_third_parties_rollbar(4, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Rollbar"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "scoped"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    122  -.decl Rule_Pattern_ruby_rails_insecure_communication(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    123  -Rule("ruby_rails_insecure_communication", patternIndex, node) :- Rule_Pattern_ruby_rails_insecure_communication(patternIndex, node).
    124  -.decl Rule_Pattern_ruby_lang_deserialization_of_user_input_user_input(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    125  -Rule("ruby_lang_deserialization_of_user_input_user_input", patternIndex, node) :- Rule_Pattern_ruby_lang_deserialization_of_user_input_user_input(patternIndex, node).
    126  -Rule_Pattern_ruby_lang_deserialization_of_user_input_user_input(0, node1) :- AST_NodeType(node1, "method"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "parameters"), AST_NodeType(node3, "method_parameters"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "keyword_parameter"), !AST_NodeField(node4, _, "value"), AST_NodeField(node4, node5, "name"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "event"), AST_ParentChild(node3, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "context").
    127  -Rule_Pattern_ruby_lang_deserialization_of_user_input_user_input(1, node1) :- AST_NodeType(node1, _).
    128  -.decl Rule_Pattern_ruby_lang_http_url_using_user_input_net_http(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    129  -Rule("ruby_lang_http_url_using_user_input_net_http", patternIndex, node) :- Rule_Pattern_ruby_lang_http_url_using_user_input_net_http(patternIndex, node).
    130  -Rule_Pattern_ruby_lang_http_url_using_user_input_net_http(0, node1) :- AST_NodeType(node1, _).
    131  -Rule_Pattern_ruby_lang_http_url_using_user_input_net_http(1, node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "start"), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "block"), AST_NodeField(node4, node5, "parameters"), AST_NodeType(node5, "block_parameters"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
    132  -Rule_Pattern_ruby_lang_http_url_using_user_input_net_http(2, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "start").
    133  -.decl Rule_Pattern_ruby_lang_http_post_insecure_with_data(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    134  -Rule("ruby_lang_http_post_insecure_with_data", patternIndex, node) :- Rule_Pattern_ruby_lang_http_post_insecure_with_data(patternIndex, node).
    135  -Rule_Pattern_ruby_lang_http_post_insecure_with_data(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "HTTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "post_form"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _), AST_ParentChild(node6, 1, node8), AST_NodeType(node8, _).
    136  -Rule_Pattern_ruby_lang_http_post_insecure_with_data(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "post"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
    137  -.decl Rule_Pattern_ruby_lang_deserialization_of_user_input_sanitized_user_input(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    138  -Rule("ruby_lang_deserialization_of_user_input_sanitized_user_input", patternIndex, node) :- Rule_Pattern_ruby_lang_deserialization_of_user_input_sanitized_user_input(patternIndex, node).
    139  -Rule_Pattern_ruby_lang_deserialization_of_user_input_sanitized_user_input(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "JSON"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "parse").
    140  -Rule_Pattern_ruby_lang_deserialization_of_user_input_sanitized_user_input(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Nokogiri"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "XML").
    141  -.decl Rule_Pattern_open_telemetry_current_span(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    142  -Rule("open_telemetry_current_span", patternIndex, node) :- Rule_Pattern_open_telemetry_current_span(patternIndex, node).
    143  -Rule_Pattern_open_telemetry_current_span(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "OpenTelemetry"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Trace"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "current_span").
    144  -Rule_Pattern_open_telemetry_current_span(1, node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "in_span"), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "block"), AST_NodeField(node4, node5, "parameters"), AST_NodeType(node5, "block_parameters"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
    145  -.decl Rule_Pattern_ruby_third_parties_algolia(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    146  -Rule("ruby_third_parties_algolia", patternIndex, node) :- Rule_Pattern_ruby_third_parties_algolia(patternIndex, node).
    147  -Rule_Pattern_ruby_third_parties_algolia(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    148  -.decl Rule_Pattern_ruby_rails_render_using_user_input_sanitized(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    149  -Rule("ruby_rails_render_using_user_input_sanitized", patternIndex, node) :- Rule_Pattern_ruby_rails_render_using_user_input_sanitized(patternIndex, node).
    150  -Rule_Pattern_ruby_rails_render_using_user_input_sanitized(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), !AST_NodeField(node1, _, "receiver"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
    151  -.decl Rule_Pattern_ruby_lang_eval_using_user_input(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    152  -Rule("ruby_lang_eval_using_user_input", patternIndex, node) :- Rule_Pattern_ruby_lang_eval_using_user_input(patternIndex, node).
    153  -Rule_Pattern_ruby_lang_eval_using_user_input(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "RubyVM"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "InstructionSequence"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "compile"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    154  -Rule_Pattern_ruby_lang_eval_using_user_input(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    155  -Rule_Pattern_ruby_lang_eval_using_user_input(2, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
    156  -.decl Rule_Pattern_ruby_third_parties_rollbar_scope(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    157  -Rule("ruby_third_parties_rollbar_scope", patternIndex, node) :- Rule_Pattern_ruby_third_parties_rollbar_scope(patternIndex, node).
    158  -Rule_Pattern_ruby_third_parties_rollbar_scope(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Rollbar"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "scope").
    159  -.decl Rule_Pattern_ruby_lang_http_url_using_user_input_path_hash(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    160  -Rule("ruby_lang_http_url_using_user_input_path_hash", patternIndex, node) :- Rule_Pattern_ruby_lang_http_url_using_user_input_path_hash(patternIndex, node).
    161  -Rule_Pattern_ruby_lang_http_url_using_user_input_path_hash(0, node1) :- AST_NodeType(node1, "hash"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "pair"), AST_NodeField(node2, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":path"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "path")), AST_NodeField(node2, node3, "value"), AST_NodeType(node3, _).
    162  -.decl Rule_Pattern_ruby_rails_render_using_user_input_user_input(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    163  -Rule("ruby_rails_render_using_user_input_user_input", patternIndex, node) :- Rule_Pattern_ruby_rails_render_using_user_input_user_input(patternIndex, node).
    164  -Rule_Pattern_ruby_rails_render_using_user_input_user_input(0, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
    165  -Rule_Pattern_ruby_rails_render_using_user_input_user_input(1, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
    166  -Rule_Pattern_ruby_rails_render_using_user_input_user_input(2, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
    167  -.decl Rule_Pattern_ruby_rails_permissive_regex_validation(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    168  -Rule("ruby_rails_permissive_regex_validation", patternIndex, node) :- Rule_Pattern_ruby_rails_permissive_regex_validation(patternIndex, node).
    169  -Rule_Pattern_ruby_rails_permissive_regex_validation(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "validates"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "pair"), AST_NodeField(node4, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":format"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "format")), AST_NodeField(node4, node5, "value"), AST_NodeType(node5, "hash"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "pair"), AST_NodeField(node6, tmp1, "key"), (AST_NodeType(tmp1, "simple_symbol"), AST_NodeContent(tmp1, ":with"); AST_NodeType(tmp1, "hash_key_symbol"), AST_NodeContent(tmp1, "with")), AST_NodeField(node6, node7, "value"), AST_NodeType(node7, _).
    170  -Rule_Pattern_ruby_rails_permissive_regex_validation(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "validates_format_of"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "pair"), AST_NodeField(node4, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":with"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "with")), AST_NodeField(node4, node5, "value"), AST_NodeType(node5, _).
    171  -.decl Rule_Pattern_openssl_dsa_init(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    172  -Rule("openssl_dsa_init", patternIndex, node) :- Rule_Pattern_openssl_dsa_init(patternIndex, node).
    173  -Rule_Pattern_openssl_dsa_init(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "OpenSSL"), AST_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "PKey"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "DSA"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
    174  -.decl Rule_Pattern_ruby_third_parties_airbrake(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    175  -Rule("ruby_third_parties_airbrake", patternIndex, node) :- Rule_Pattern_ruby_third_parties_airbrake(patternIndex, node).
    176  -Rule_Pattern_ruby_third_parties_airbrake(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Airbrake"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    177  -Rule_Pattern_ruby_third_parties_airbrake(2, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Airbrake"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "merge_context"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    178  -Rule_Pattern_ruby_third_parties_airbrake(3, node1) :- AST_NodeType(node1, "method"), !AST_NodeField(node1, _, "parameters"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "to_airbrake"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, _).
    179  -.decl Rule_Pattern_rc4_init(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    180  -Rule("rc4_init", patternIndex, node) :- Rule_Pattern_rc4_init(patternIndex, node).
    181  -Rule_Pattern_rc4_init(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "RC4"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "new").
    182  -.decl Rule_Pattern_ruby_lang_exec_using_user_input_shell(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    183  -Rule("ruby_lang_exec_using_user_input_shell", patternIndex, node) :- Rule_Pattern_ruby_lang_exec_using_user_input_shell(patternIndex, node).
    184  -Rule_Pattern_ruby_lang_exec_using_user_input_shell(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Shell"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "new").
    185  -.decl Rule_Pattern_segment_init(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    186  -Rule("segment_init", patternIndex, node) :- Rule_Pattern_segment_init(patternIndex, node).
    187  -Rule_Pattern_segment_init(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Segment"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Analytics"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
    188  -.decl Rule_Pattern_ruby_third_parties_clickhouse(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    189  -Rule("ruby_third_parties_clickhouse", patternIndex, node) :- Rule_Pattern_ruby_third_parties_clickhouse(patternIndex, node).
    190  -Rule_Pattern_ruby_third_parties_clickhouse(0, node1) :- AST_NodeType(node1, "binary"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "operator"), AST_NodeType(node3, "<<"), AST_NodeField(node1, node4, "right"), AST_NodeType(node4, _).
    191  -.decl Rule_Pattern_ruby_third_parties_google_dataflow(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    192  -Rule("ruby_third_parties_google_dataflow", patternIndex, node) :- Rule_Pattern_ruby_third_parties_google_dataflow(patternIndex, node).
    193  -Rule_Pattern_ruby_third_parties_google_dataflow(0, node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "message_text"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
    194  -Rule_Pattern_ruby_third_parties_google_dataflow(1, node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "description"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
    195  -Rule_Pattern_ruby_third_parties_google_dataflow(2, node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "value"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
    196  -Rule_Pattern_ruby_third_parties_google_dataflow(3, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "create_job_from_template"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    197  -Rule_Pattern_ruby_third_parties_google_dataflow(4, node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, _), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
    198  -Rule_Pattern_ruby_third_parties_google_dataflow(5, node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "metadata"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
    199  -.decl Rule_Pattern_ruby_lang_file_generation_file(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    200  -Rule("ruby_lang_file_generation_file", patternIndex, node) :- Rule_Pattern_ruby_lang_file_generation_file(patternIndex, node).
    201  -Rule_Pattern_ruby_lang_file_generation_file(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "CSV"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "generate").
    202  -Rule_Pattern_ruby_lang_file_generation_file(1, node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "CSV"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "generate"), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "block"), AST_NodeField(node4, node5, "parameters"), AST_NodeType(node5, "block_parameters"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
    203  -Rule_Pattern_ruby_lang_file_generation_file(2, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "CSV"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "open").
    204  -Rule_Pattern_ruby_lang_file_generation_file(3, node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "CSV"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "open"), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "block"), AST_NodeField(node4, node5, "parameters"), AST_NodeType(node5, "block_parameters"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
    205  -Rule_Pattern_ruby_lang_file_generation_file(4, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "File"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "open").
    206  -Rule_Pattern_ruby_lang_file_generation_file(5, node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "File"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "open"), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "block"), AST_NodeField(node4, node5, "parameters"), AST_NodeType(node5, "block_parameters"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
    207  -Rule_Pattern_ruby_lang_file_generation_file(6, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "IO"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "open").
    208  -Rule_Pattern_ruby_lang_file_generation_file(7, node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "IO"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "open"), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "block"), AST_NodeField(node4, node5, "parameters"), AST_NodeType(node5, "block_parameters"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
    209  -.decl Rule_Pattern_ruby_rails_http_verb_confusion(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    210  -Rule("ruby_rails_http_verb_confusion", patternIndex, node) :- Rule_Pattern_ruby_rails_http_verb_confusion(patternIndex, node).
    211  -Rule_Pattern_ruby_rails_http_verb_confusion(0, node1) :- AST_NodeType(node1, "if"), !AST_NodeField(node1, _, "consequence"), AST_NodeField(node1, node2, "condition"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "request"), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "get?"), AST_NodeField(node1, node5, "alternative"), AST_NodeType(node5, "else").
    212  -Rule_Pattern_ruby_rails_http_verb_confusion(1, node1) :- AST_NodeType(node1, "unless"), !AST_NodeField(node1, _, "consequence"), !AST_NodeField(node1, _, "alternative"), AST_NodeField(node1, node2, "condition"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "request"), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "get?").
    213  -Rule_Pattern_ruby_rails_http_verb_confusion(2, node1) :- AST_NodeType(node1, "unless_modifier"), AST_NodeField(node1, node2, "body"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "condition"), AST_NodeType(node3, "call"), !AST_NodeField(node3, _, "block"), (!AST_NodeField(node3, _, "arguments"); AST_NodeField(node3, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node3, node4, "receiver"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "request"), AST_NodeField(node3, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "get?").
    214  -.decl Rule_Pattern_ruby_lang_eval_using_user_input_user_input(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    215  -Rule("ruby_lang_eval_using_user_input_user_input", patternIndex, node) :- Rule_Pattern_ruby_lang_eval_using_user_input_user_input(patternIndex, node).
    216  -Rule_Pattern_ruby_lang_eval_using_user_input_user_input(0, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
    217  -Rule_Pattern_ruby_lang_eval_using_user_input_user_input(1, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
    218  -Rule_Pattern_ruby_lang_eval_using_user_input_user_input(2, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
    219  -Rule_Pattern_ruby_lang_eval_using_user_input_user_input(3, node1) :- AST_NodeType(node1, "method"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "parameters"), AST_NodeType(node3, "method_parameters"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "keyword_parameter"), !AST_NodeField(node4, _, "value"), AST_NodeField(node4, node5, "name"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "event"), AST_ParentChild(node3, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "context").
    220  -.decl Rule_Pattern_ruby_lang_exec_using_user_input(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    221  -Rule("ruby_lang_exec_using_user_input", patternIndex, node) :- Rule_Pattern_ruby_lang_exec_using_user_input(patternIndex, node).
    222  -Rule_Pattern_ruby_lang_exec_using_user_input(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Kernel"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    223  -Rule_Pattern_ruby_lang_exec_using_user_input(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
    224  -Rule_Pattern_ruby_lang_exec_using_user_input(2, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "IO"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "popen"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    225  -Rule_Pattern_ruby_lang_exec_using_user_input(3, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Process"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    226  -Rule_Pattern_ruby_lang_exec_using_user_input(4, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Open3"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    227  -Rule_Pattern_ruby_lang_exec_using_user_input(5, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Gem"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Util"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    228  -Rule_Pattern_ruby_lang_exec_using_user_input(6, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "PTY"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "spawn"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    229  -Rule_Pattern_ruby_lang_exec_using_user_input(7, node1) :- AST_NodeType(node1, "subshell"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, _).
    230  -Rule_Pattern_ruby_lang_exec_using_user_input(8, node1) :- AST_NodeType(node1, "subshell"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "string_content"), AST_NodeContent(node2, "{CurioVar0").
    231  -Rule_Pattern_ruby_lang_exec_using_user_input(9, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Shell"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    232  -Rule_Pattern_ruby_lang_exec_using_user_input(10, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Shell"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "CommandProcessor"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    233  -Rule_Pattern_ruby_lang_exec_using_user_input(11, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "system"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    234  -.decl Rule_Pattern_ruby_lang_cookies(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    235  -Rule("ruby_lang_cookies", patternIndex, node) :- Rule_Pattern_ruby_lang_cookies(patternIndex, node).
    236  -Rule_Pattern_ruby_lang_cookies(0, node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "element_reference"), AST_NodeField(node2, node3, "object"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "cookies"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, _), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
    237  -Rule_Pattern_ruby_lang_cookies(1, node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "element_reference"), AST_NodeField(node2, node3, "object"), AST_NodeType(node3, "call"), !AST_NodeField(node3, _, "block"), (!AST_NodeField(node3, _, "arguments"); AST_NodeField(node3, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node3, node4, "receiver"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "cookies"), AST_NodeField(node3, node5, "method"), AST_NodeType(node5, _), AST_ParentChild(node2, 0, node6), AST_NodeType(node6, _), AST_NodeField(node1, node7, "right"), AST_NodeType(node7, _).
    238  -.decl Rule_Pattern_blowfish_init(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    239  -Rule("blowfish_init", patternIndex, node) :- Rule_Pattern_blowfish_init(patternIndex, node).
    240  -Rule_Pattern_blowfish_init(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Crypt"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Blowfish"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
    241  -.decl Rule_Pattern_ruby_third_parties_open_telemetry(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    242  -Rule("ruby_third_parties_open_telemetry", patternIndex, node) :- Rule_Pattern_ruby_third_parties_open_telemetry(patternIndex, node).
    243  -Rule_Pattern_ruby_third_parties_open_telemetry(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    244  -Rule_Pattern_ruby_third_parties_open_telemetry(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "in_span"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
    245  -.decl Rule_Pattern_google_dataflow_snapshots_client_init(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    246  -Rule("google_dataflow_snapshots_client_init", patternIndex, node) :- Rule_Pattern_google_dataflow_snapshots_client_init(patternIndex, node).
    247  -Rule_Pattern_google_dataflow_snapshots_client_init(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Google"), AST_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Cloud"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Dataflow"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "snapshots").
    248  -.decl Rule_Pattern_ruby_rails_session(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    249  -Rule("ruby_rails_session", patternIndex, node) :- Rule_Pattern_ruby_rails_session(patternIndex, node).
    250  -Rule_Pattern_ruby_rails_session(0, node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "element_reference"), AST_NodeField(node2, node3, "object"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "session"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, _), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
    251  -.decl Rule_Pattern_ruby_rails_insecure_http_password(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    252  -Rule("ruby_rails_insecure_http_password", patternIndex, node) :- Rule_Pattern_ruby_rails_insecure_http_password(patternIndex, node).
    253  -.decl Rule_Pattern_ruby_lang_http_get_params(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    254  -Rule("ruby_lang_http_get_params", patternIndex, node) :- Rule_Pattern_ruby_lang_http_get_params(patternIndex, node).
    255  -Rule_Pattern_ruby_lang_http_get_params(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "URI"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "encode_www_form"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    256  -Rule_Pattern_ruby_lang_http_get_params(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), !AST_NodeField(node1, _, "receiver"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "URI"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
    257  -Rule_Pattern_ruby_lang_http_get_params(2, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "get"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    258  -.decl Rule_Pattern_ruby_lang_path_using_user_input_pathname(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    259  -Rule("ruby_lang_path_using_user_input_pathname", patternIndex, node) :- Rule_Pattern_ruby_lang_path_using_user_input_pathname(patternIndex, node).
    260  -Rule_Pattern_ruby_lang_path_using_user_input_pathname(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Rails"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "root").
    261  -Rule_Pattern_ruby_lang_path_using_user_input_pathname(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Pathname"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _).
    262  -.decl Rule_Pattern_ruby_rails_password_length(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    263  -Rule("ruby_rails_password_length", patternIndex, node) :- Rule_Pattern_ruby_rails_password_length(patternIndex, node).
    264  -.decl Rule_Pattern_ruby_lang_path_using_user_input_user_input(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    265  -Rule("ruby_lang_path_using_user_input_user_input", patternIndex, node) :- Rule_Pattern_ruby_lang_path_using_user_input_user_input(patternIndex, node).
    266  -Rule_Pattern_ruby_lang_path_using_user_input_user_input(0, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
    267  -Rule_Pattern_ruby_lang_path_using_user_input_user_input(1, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
    268  -Rule_Pattern_ruby_lang_path_using_user_input_user_input(2, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
    269  -Rule_Pattern_ruby_lang_path_using_user_input_user_input(3, node1) :- AST_NodeType(node1, "method"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "parameters"), AST_NodeType(node3, "method_parameters"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "keyword_parameter"), !AST_NodeField(node4, _, "value"), AST_NodeField(node4, node5, "name"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "event"), AST_ParentChild(node3, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "context").
    270  -.decl Rule_Pattern_google_dataflow_template_metadata_init(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    271  -Rule("google_dataflow_template_metadata_init", patternIndex, node) :- Rule_Pattern_google_dataflow_template_metadata_init(patternIndex, node).
    272  -.decl Rule_Pattern_ruby_third_parties_algolia_client(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    273  -Rule("ruby_third_parties_algolia_client", patternIndex, node) :- Rule_Pattern_ruby_third_parties_algolia_client(patternIndex, node).
    274  -Rule_Pattern_ruby_third_parties_algolia_client(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Algolia"), AST_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Search"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Client"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "create").
    275  -.decl Rule_Pattern_ruby_third_parties_algolia_index(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    276  -Rule("ruby_third_parties_algolia_index", patternIndex, node) :- Rule_Pattern_ruby_third_parties_algolia_index(patternIndex, node).
    277  -Rule_Pattern_ruby_third_parties_algolia_index(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "init_index").
    278  -.decl Rule_Pattern_ruby_lang_deserialization_of_user_input(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    279  -Rule("ruby_lang_deserialization_of_user_input", patternIndex, node) :- Rule_Pattern_ruby_lang_deserialization_of_user_input(patternIndex, node).
    280  -Rule_Pattern_ruby_lang_deserialization_of_user_input(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "load"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    281  -Rule_Pattern_ruby_lang_deserialization_of_user_input(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Marshal"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "restore"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    282  -Rule_Pattern_ruby_lang_deserialization_of_user_input(2, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Oj"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "object_load"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    283  -.decl Rule_Pattern_ruby_lang_weak_encryption_with_data_rc4_init(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    284  -Rule("ruby_lang_weak_encryption_with_data_rc4_init", patternIndex, node) :- Rule_Pattern_ruby_lang_weak_encryption_with_data_rc4_init(patternIndex, node).
    285  -Rule_Pattern_ruby_lang_weak_encryption_with_data_rc4_init(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "RC4"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "new").
    286  -.decl Rule_Pattern_ruby_lang_http_url_using_user_input_net_http_new(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    287  -Rule("ruby_lang_http_url_using_user_input_net_http_new", patternIndex, node) :- Rule_Pattern_ruby_lang_http_url_using_user_input_net_http_new(patternIndex, node).
    288  -Rule_Pattern_ruby_lang_http_url_using_user_input_net_http_new(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "HTTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    289  -.decl Rule_Pattern_google_dataflow_config(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    290  -Rule("google_dataflow_config", patternIndex, node) :- Rule_Pattern_google_dataflow_config(patternIndex, node).
    291  -Rule_Pattern_google_dataflow_config(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "configure").
    292  -Rule_Pattern_google_dataflow_config(1, node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "configure"), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "block"), AST_NodeField(node4, node5, "parameters"), AST_NodeType(node5, "block_parameters"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
    293  -.decl Rule_Pattern_ruby_lang_insecure_ftp(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    294  -Rule("ruby_lang_insecure_ftp", patternIndex, node) :- Rule_Pattern_ruby_lang_insecure_ftp(patternIndex, node).
    295  -Rule_Pattern_ruby_lang_insecure_ftp(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "FTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
    296  -Rule_Pattern_ruby_lang_insecure_ftp(1, node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "FTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "open"), AST_NodeField(node1, node6, "block"), AST_NodeType(node6, "do_block"), !AST_NodeField(node6, _, "parameters"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    297  -Rule_Pattern_ruby_lang_insecure_ftp(2, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "FTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "open").
    298  -.decl Rule_Pattern_ruby_third_parties_segment(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    299  -Rule("ruby_third_parties_segment", patternIndex, node) :- Rule_Pattern_ruby_third_parties_segment(patternIndex, node).
    300  -Rule_Pattern_ruby_third_parties_segment(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    301  -.decl Rule_Pattern_ruby_lang_path_using_user_input(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    302  -Rule("ruby_lang_path_using_user_input", patternIndex, node) :- Rule_Pattern_ruby_lang_path_using_user_input(patternIndex, node).
    303  -Rule_Pattern_ruby_lang_path_using_user_input(0, node1) :- AST_NodeType(node1, "element_reference"), AST_NodeField(node1, node2, "object"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Dir"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, _).
    304  -Rule_Pattern_ruby_lang_path_using_user_input(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    305  -Rule_Pattern_ruby_lang_path_using_user_input(2, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "IO"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    306  -Rule_Pattern_ruby_lang_path_using_user_input(3, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Kernel"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "open"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    307  -Rule_Pattern_ruby_lang_path_using_user_input(4, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "open"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
    308  -Rule_Pattern_ruby_lang_path_using_user_input(5, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "PStore"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "new"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    309  -Rule_Pattern_ruby_lang_path_using_user_input(6, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Gem"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Util"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    310  -Rule_Pattern_ruby_lang_path_using_user_input(7, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    311  -Rule_Pattern_ruby_lang_path_using_user_input(8, node1) :- AST_NodeType(node1, "binary"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "operator"), AST_NodeType(node3, "+"), AST_NodeField(node1, node4, "right"), AST_NodeType(node4, _).
    312  -Rule_Pattern_ruby_lang_path_using_user_input(9, node1) :- AST_NodeType(node1, "binary"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "operator"), AST_NodeType(node3, "/"), AST_NodeField(node1, node4, "right"), AST_NodeType(node4, _).
    313  -Rule_Pattern_ruby_lang_path_using_user_input(10, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Shell"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "cd"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    314  -Rule_Pattern_ruby_lang_path_using_user_input(11, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Shell"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "new"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    315  -Rule_Pattern_ruby_lang_path_using_user_input(12, node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Shell"), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "default_system_path"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
    316  -Rule_Pattern_ruby_lang_path_using_user_input(13, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    317  -Rule_Pattern_ruby_lang_path_using_user_input(14, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    318  -Rule_Pattern_ruby_lang_path_using_user_input(15, node1) :- AST_NodeType(node1, "element_reference"), AST_NodeField(node1, node2, "object"), AST_NodeType(node2, _), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, _), AST_ParentChild(node1, 1, node4), AST_NodeType(node4, _).
    319  -Rule_Pattern_ruby_lang_path_using_user_input(16, node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "transact"), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "do_block"), !AST_NodeField(node4, _, "parameters"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    320  -Rule_Pattern_ruby_lang_path_using_user_input(17, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "pair"), AST_NodeField(node4, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":CurioVar1"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "CurioVar1")), AST_NodeField(node4, node5, "value"), AST_NodeType(node5, _).
    321  -Rule_Pattern_ruby_lang_path_using_user_input(18, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "hash"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "pair"), AST_NodeField(node5, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":CurioVar1"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "CurioVar1")), AST_NodeField(node5, node6, "value"), AST_NodeType(node6, _).
    322  -Rule_Pattern_ruby_lang_path_using_user_input(19, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "send_file"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
    323  -.decl Rule_Pattern_openssl_rsa_init(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    324  -Rule("openssl_rsa_init", patternIndex, node) :- Rule_Pattern_openssl_rsa_init(patternIndex, node).
    325  -.decl Rule_Pattern_ruby_third_parties_elasticsearch_client(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    326  -Rule("ruby_third_parties_elasticsearch_client", patternIndex, node) :- Rule_Pattern_ruby_third_parties_elasticsearch_client(patternIndex, node).
    327  -Rule_Pattern_ruby_third_parties_elasticsearch_client(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Elasticsearch"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Client"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
    328  -Rule_Pattern_ruby_third_parties_elasticsearch_client(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Elasticsearch"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Client"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
    329  -.decl Rule_Pattern_ruby_third_parties_datadog(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    330  -Rule("ruby_third_parties_datadog", patternIndex, node) :- Rule_Pattern_ruby_third_parties_datadog(patternIndex, node).
    331  -Rule_Pattern_ruby_third_parties_datadog(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "set_tag"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
    332  -Rule_Pattern_ruby_third_parties_datadog(2, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Datadog"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Tracing"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "trace"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _), AST_ParentChild(node6, 1, node8), AST_NodeType(node8, _).
    333  -.decl Rule_Pattern_ruby_lang_jwt(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    334  -Rule("ruby_lang_jwt", patternIndex, node) :- Rule_Pattern_ruby_lang_jwt(patternIndex, node).
    335  -Rule_Pattern_ruby_lang_jwt(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "JWT"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "encode"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    336  -.decl Rule_Pattern_google_dataflow_description_classes(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    337  -Rule("google_dataflow_description_classes", patternIndex, node) :- Rule_Pattern_google_dataflow_description_classes(patternIndex, node).
    338  -Rule_Pattern_google_dataflow_description_classes(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "get_snapshot").
    339  -.decl Rule_Pattern_ruby_lang_reflection_using_user_input(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    340  -Rule("ruby_lang_reflection_using_user_input", patternIndex, node) :- Rule_Pattern_ruby_lang_reflection_using_user_input(patternIndex, node).
    341  -Rule_Pattern_ruby_lang_reflection_using_user_input(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    342  -Rule_Pattern_ruby_lang_reflection_using_user_input(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    343  -Rule_Pattern_ruby_lang_reflection_using_user_input(2, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
    344  -Rule_Pattern_ruby_lang_reflection_using_user_input(3, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "to_proc").
    345  -Rule_Pattern_ruby_lang_reflection_using_user_input(4, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "block_argument"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    346  -Rule_Pattern_ruby_lang_reflection_using_user_input(5, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "block_argument"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
    347  -Rule_Pattern_ruby_lang_reflection_using_user_input(6, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _).
    348  -.decl Rule_Pattern_ruby_lang_exec_using_user_input_shell_cmd_proc(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    349  -Rule("ruby_lang_exec_using_user_input_shell_cmd_proc", patternIndex, node) :- Rule_Pattern_ruby_lang_exec_using_user_input_shell_cmd_proc(patternIndex, node).
    350  -Rule_Pattern_ruby_lang_exec_using_user_input_shell_cmd_proc(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "command_processor").
    351  -Rule_Pattern_ruby_lang_exec_using_user_input_shell_cmd_proc(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Shell"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "CommandProcessor"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
    352  -.decl Rule_Pattern_ruby_lang_regex_using_user_input(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    353  -Rule("ruby_lang_regex_using_user_input", patternIndex, node) :- Rule_Pattern_ruby_lang_regex_using_user_input(patternIndex, node).
    354  -Rule_Pattern_ruby_lang_regex_using_user_input(0, node1) :- AST_NodeType(node1, "regex"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "interpolation"), AST_ParentChild(node2, 0, node3), AST_NodeType(node3, _).
    355  -Rule_Pattern_ruby_lang_regex_using_user_input(1, node1) :- AST_NodeType(node1, "regex"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "interpolation"), AST_ParentChild(node2, 0, node3), AST_NodeType(node3, _).
    356  -Rule_Pattern_ruby_lang_regex_using_user_input(2, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Regexp"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    357  -.decl Rule_Pattern_ruby_lang_file_generation(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    358  -Rule("ruby_lang_file_generation", patternIndex, node) :- Rule_Pattern_ruby_lang_file_generation(patternIndex, node).
    359  -Rule_Pattern_ruby_lang_file_generation(0, node1) :- AST_NodeType(node1, "binary"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "operator"), AST_NodeType(node3, "<<"), AST_NodeField(node1, node4, "right"), AST_NodeType(node4, _).
    360  -Rule_Pattern_ruby_lang_file_generation(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    361  -.decl Rule_Pattern_ruby_lang_http_url_using_user_input(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    362  -Rule("ruby_lang_http_url_using_user_input", patternIndex, node) :- Rule_Pattern_ruby_lang_http_url_using_user_input(patternIndex, node).
    363  -Rule_Pattern_ruby_lang_http_url_using_user_input(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "HTTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    364  -Rule_Pattern_ruby_lang_http_url_using_user_input(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "HTTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    365  -Rule_Pattern_ruby_lang_http_url_using_user_input(3, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    366  -Rule_Pattern_ruby_lang_http_url_using_user_input(4, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "send_request"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
    367  -Rule_Pattern_ruby_lang_http_url_using_user_input(5, node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "ipaddr"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
    368  -Rule_Pattern_ruby_lang_http_url_using_user_input(6, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), !AST_NodeField(node1, _, "receiver"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "URI"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
    369  -Rule_Pattern_ruby_lang_http_url_using_user_input(7, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Curl"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "http"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
    370  -Rule_Pattern_ruby_lang_http_url_using_user_input(8, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Curl"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    371  -Rule_Pattern_ruby_lang_http_url_using_user_input(9, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Curl"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Easy"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    372  -Rule_Pattern_ruby_lang_http_url_using_user_input(10, node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "url"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
    373  -Rule_Pattern_ruby_lang_http_url_using_user_input(11, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Curl"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Multi"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    374  -Rule_Pattern_ruby_lang_http_url_using_user_input(12, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Curl"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Multi"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    375  -Rule_Pattern_ruby_lang_http_url_using_user_input(13, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Excon"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Connection"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    376  -Rule_Pattern_ruby_lang_http_url_using_user_input(14, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Excon"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    377  -Rule_Pattern_ruby_lang_http_url_using_user_input(15, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Excon"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "pair"), AST_NodeField(node5, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":path"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "path")), AST_NodeField(node5, node6, "value"), AST_NodeType(node6, _).
    378  -Rule_Pattern_ruby_lang_http_url_using_user_input(16, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "pair"), AST_NodeField(node5, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":path"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "path")), AST_NodeField(node5, node6, "value"), AST_NodeType(node6, _).
    379  -Rule_Pattern_ruby_lang_http_url_using_user_input(17, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "requests"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    380  -Rule_Pattern_ruby_lang_http_url_using_user_input(18, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "get"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    381  -Rule_Pattern_ruby_lang_http_url_using_user_input(19, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "post"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    382  -.decl Rule_Pattern_ruby_lang_path_using_user_input_shell_cmd_trans_user_input(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    383  -Rule("ruby_lang_path_using_user_input_shell_cmd_trans_user_input", patternIndex, node) :- Rule_Pattern_ruby_lang_path_using_user_input_shell_cmd_trans_user_input(patternIndex, node).
    384  -Rule_Pattern_ruby_lang_path_using_user_input_shell_cmd_trans_user_input(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
    385  -.decl Rule_Pattern_ruby_lang_http_insecure_url_hash(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    386  -Rule("ruby_lang_http_insecure_url_hash", patternIndex, node) :- Rule_Pattern_ruby_lang_http_insecure_url_hash(patternIndex, node).
    387  -Rule_Pattern_ruby_lang_http_insecure_url_hash(0, node1) :- AST_NodeType(node1, "hash"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "pair"), AST_NodeField(node2, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":url"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "url")), AST_NodeField(node2, node3, "value"), AST_NodeType(node3, _).
    388  -.decl Rule_Pattern_ruby_lang_http_url_using_user_input_curb(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    389  -Rule("ruby_lang_http_url_using_user_input_curb", patternIndex, node) :- Rule_Pattern_ruby_lang_http_url_using_user_input_curb(patternIndex, node).
    390  -Rule_Pattern_ruby_lang_http_url_using_user_input_curb(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Curl"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Easy"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
    391  -.decl Rule_Pattern_ruby_lang_http_url_using_user_input_url_hash(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    392  -Rule("ruby_lang_http_url_using_user_input_url_hash", patternIndex, node) :- Rule_Pattern_ruby_lang_http_url_using_user_input_url_hash(patternIndex, node).
    393  -Rule_Pattern_ruby_lang_http_url_using_user_input_url_hash(0, node1) :- AST_NodeType(node1, "hash"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "pair"), AST_NodeField(node2, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":url"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "url")), AST_NodeField(node2, node3, "value"), AST_NodeType(node3, _).
    394  -.decl Rule_Pattern_ruby_lang_weak_encryption_with_data_blowfish_init(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    395  -Rule("ruby_lang_weak_encryption_with_data_blowfish_init", patternIndex, node) :- Rule_Pattern_ruby_lang_weak_encryption_with_data_blowfish_init(patternIndex, node).
    396  -Rule_Pattern_ruby_lang_weak_encryption_with_data_blowfish_init(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Crypt"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Blowfish"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
    397  -.decl Rule_Pattern_ruby_lang_http_insecure(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    398  -Rule("ruby_lang_http_insecure", patternIndex, node) :- Rule_Pattern_ruby_lang_http_insecure(patternIndex, node).
    399  -Rule_Pattern_ruby_lang_http_insecure(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "HTTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    400  -Rule_Pattern_ruby_lang_http_insecure(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "HTTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    401  -Rule_Pattern_ruby_lang_http_insecure(3, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "URI"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
    402  -Rule_Pattern_ruby_lang_http_insecure(4, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Curl"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "http"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
    403  -Rule_Pattern_ruby_lang_http_insecure(5, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Curl"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    404  -Rule_Pattern_ruby_lang_http_insecure(6, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Curl"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Easy"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    405  -Rule_Pattern_ruby_lang_http_insecure(7, node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "url"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
    406  -Rule_Pattern_ruby_lang_http_insecure(8, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Curl"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Multi"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    407  -Rule_Pattern_ruby_lang_http_insecure(9, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Curl"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Multi"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    408  -Rule_Pattern_ruby_lang_http_insecure(10, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Excon"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    409  -Rule_Pattern_ruby_lang_http_insecure(11, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "get"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    410  -Rule_Pattern_ruby_lang_http_insecure(12, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "post"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    411  -.decl Rule_Pattern_ruby_third_parties_new_relic(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    412  -Rule("ruby_third_parties_new_relic", patternIndex, node) :- Rule_Pattern_ruby_third_parties_new_relic(patternIndex, node).
    413  -Rule_Pattern_ruby_third_parties_new_relic(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "NewRelic"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Agent"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "add_custom_attributes"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    414  -Rule_Pattern_ruby_third_parties_new_relic(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "NewRelic"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Agent"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "add_custom_parameters"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    415  -Rule_Pattern_ruby_third_parties_new_relic(2, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "NewRelic"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Agent"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "notice_error"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    416  -.decl Rule_Pattern_ruby_rails_session_key_using_user_input_user_input(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    417  -Rule("ruby_rails_session_key_using_user_input_user_input", patternIndex, node) :- Rule_Pattern_ruby_rails_session_key_using_user_input_user_input(patternIndex, node).
    418  -Rule_Pattern_ruby_rails_session_key_using_user_input_user_input(0, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
    419  -Rule_Pattern_ruby_rails_session_key_using_user_input_user_input(1, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
    420  -Rule_Pattern_ruby_rails_session_key_using_user_input_user_input(2, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
    421  -.decl Rule_Pattern_ruby_rails_redirect_to(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    422  -Rule("ruby_rails_redirect_to", patternIndex, node) :- Rule_Pattern_ruby_rails_redirect_to(patternIndex, node).
    423  -Rule_Pattern_ruby_rails_redirect_to(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "redirect_to"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
    424  -.decl Rule_Pattern_ruby_lang_http_insecure_curb(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    425  -Rule("ruby_lang_http_insecure_curb", patternIndex, node) :- Rule_Pattern_ruby_lang_http_insecure_curb(patternIndex, node).
    426  -Rule_Pattern_ruby_lang_http_insecure_curb(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Curl"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Easy"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
    427  -.decl Rule_Pattern_ruby_lang_weak_encryption_with_data_openssl_dsa_init(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    428  -Rule("ruby_lang_weak_encryption_with_data_openssl_dsa_init", patternIndex, node) :- Rule_Pattern_ruby_lang_weak_encryption_with_data_openssl_dsa_init(patternIndex, node).
    429  -Rule_Pattern_ruby_lang_weak_encryption_with_data_openssl_dsa_init(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "OpenSSL"), AST_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "PKey"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "DSA"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
    430  -.decl Rule_Pattern_ruby_lang_http_url_using_user_input_user_input(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    431  -Rule("ruby_lang_http_url_using_user_input_user_input", patternIndex, node) :- Rule_Pattern_ruby_lang_http_url_using_user_input_user_input(patternIndex, node).
    432  -Rule_Pattern_ruby_lang_http_url_using_user_input_user_input(0, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
    433  -Rule_Pattern_ruby_lang_http_url_using_user_input_user_input(1, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
    434  -Rule_Pattern_ruby_lang_http_url_using_user_input_user_input(2, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
    435  -Rule_Pattern_ruby_lang_http_url_using_user_input_user_input(3, node1) :- AST_NodeType(node1, "method"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "parameters"), AST_NodeType(node3, "method_parameters"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "keyword_parameter"), !AST_NodeField(node4, _, "value"), AST_NodeField(node4, node5, "name"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "event"), AST_ParentChild(node3, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "context").
    436  -.decl Rule_Pattern_google_dataflow_message_text_classes(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    437  -Rule("google_dataflow_message_text_classes", patternIndex, node) :- Rule_Pattern_google_dataflow_message_text_classes(patternIndex, node).
    438  -.decl Rule_Pattern_ruby_lang_path_using_user_input_shell_cmd_proc(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    439  -Rule("ruby_lang_path_using_user_input_shell_cmd_proc", patternIndex, node) :- Rule_Pattern_ruby_lang_path_using_user_input_shell_cmd_proc(patternIndex, node).
    440  -Rule_Pattern_ruby_lang_path_using_user_input_shell_cmd_proc(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "command_processor").
    441  -Rule_Pattern_ruby_lang_path_using_user_input_shell_cmd_proc(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Shell"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "CommandProcessor"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
    442  -.decl Rule_Pattern_ruby_third_parties_bigquery_dataset(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    443  -Rule("ruby_third_parties_bigquery_dataset", patternIndex, node) :- Rule_Pattern_ruby_third_parties_bigquery_dataset(patternIndex, node).
    444  -Rule_Pattern_ruby_third_parties_bigquery_dataset(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "dataset").
    445  -.decl Rule_Pattern_ruby_lang_path_using_user_input_shell(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    446  -Rule("ruby_lang_path_using_user_input_shell", patternIndex, node) :- Rule_Pattern_ruby_lang_path_using_user_input_shell(patternIndex, node).
    447  -Rule_Pattern_ruby_lang_path_using_user_input_shell(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Shell"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "new").
    448  -.decl Rule_Pattern_ruby_lang_ftp_using_user_input_ftp(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    449  -Rule("ruby_lang_ftp_using_user_input_ftp", patternIndex, node) :- Rule_Pattern_ruby_lang_ftp_using_user_input_ftp(patternIndex, node).
    450  -Rule_Pattern_ruby_lang_ftp_using_user_input_ftp(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "FTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
    451  -Rule_Pattern_ruby_lang_ftp_using_user_input_ftp(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "FTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "open").
    452  -Rule_Pattern_ruby_lang_ftp_using_user_input_ftp(2, node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "FTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "open"), AST_NodeField(node1, node6, "block"), AST_NodeType(node6, "block"), AST_NodeField(node6, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, _).
    453  -.decl Rule_Pattern_ruby_lang_ftp_using_user_input(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    454  -Rule("ruby_lang_ftp_using_user_input", patternIndex, node) :- Rule_Pattern_ruby_lang_ftp_using_user_input(patternIndex, node).
    455  -Rule_Pattern_ruby_lang_ftp_using_user_input(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "FTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    456  -Rule_Pattern_ruby_lang_ftp_using_user_input(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "FTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "open"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    457  -Rule_Pattern_ruby_lang_ftp_using_user_input(2, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    458  -.decl Rule_Pattern_ruby_third_parties_datadog_span(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    459  -Rule("ruby_third_parties_datadog_span", patternIndex, node) :- Rule_Pattern_ruby_third_parties_datadog_span(patternIndex, node).
    460  -Rule_Pattern_ruby_third_parties_datadog_span(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Datadog"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Tracing"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "active_span").
    461  -Rule_Pattern_ruby_third_parties_datadog_span(2, node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Datadog"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Tracing"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "trace"), AST_NodeField(node1, node6, "block"), AST_NodeType(node6, "block"), AST_NodeField(node6, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, _).
    462  -.decl Rule_Pattern_ruby_third_parties_scout_apm(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    463  -Rule("ruby_third_parties_scout_apm", patternIndex, node) :- Rule_Pattern_ruby_third_parties_scout_apm(patternIndex, node).
    464  -Rule_Pattern_ruby_third_parties_scout_apm(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "ScoutApm"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Context"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "add_user"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    465  -Rule_Pattern_ruby_third_parties_scout_apm(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "ScoutApm"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Context"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "add"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    466  -.decl Rule_Pattern_ruby_rails_session_key_using_user_input(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    467  -Rule("ruby_rails_session_key_using_user_input", patternIndex, node) :- Rule_Pattern_ruby_rails_session_key_using_user_input(patternIndex, node).
    468  -Rule_Pattern_ruby_rails_session_key_using_user_input(0, node1) :- AST_NodeType(node1, "element_reference"), AST_NodeField(node1, node2, "object"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "session"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, _).
    469  -.decl Rule_Pattern_ruby_rails_logger(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    470  -Rule("ruby_rails_logger", patternIndex, node) :- Rule_Pattern_ruby_rails_logger(patternIndex, node).
    471  -Rule_Pattern_ruby_rails_logger(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Rails"), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "logger"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
    472  -.decl Rule_Pattern_ruby_rails_insecure_smtp(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    473  -Rule("ruby_rails_insecure_smtp", patternIndex, node) :- Rule_Pattern_ruby_rails_insecure_smtp(patternIndex, node).
    474  -.decl Rule_Pattern_ruby_lang_ssl_verification(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    475  -Rule("ruby_lang_ssl_verification", patternIndex, node) :- Rule_Pattern_ruby_lang_ssl_verification(patternIndex, node).
    476  -.decl Rule_Pattern_ruby_rails_insecure_disabling_of_callback(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    477  -Rule("ruby_rails_insecure_disabling_of_callback", patternIndex, node) :- Rule_Pattern_ruby_rails_insecure_disabling_of_callback(patternIndex, node).
    478  -Rule_Pattern_ruby_rails_insecure_disabling_of_callback(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), !AST_NodeField(node1, _, "receiver"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "pair"), AST_NodeField(node4, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":CurioVar1"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "CurioVar1")), AST_NodeField(node4, node5, "value"), AST_NodeType(node5, _).
    479  -.decl Rule_Pattern_ruby_third_parties_bigquery_client(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    480  -Rule("ruby_third_parties_bigquery_client", patternIndex, node) :- Rule_Pattern_ruby_third_parties_bigquery_client(patternIndex, node).
    481  -Rule_Pattern_ruby_third_parties_bigquery_client(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Google"), AST_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Cloud"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Bigquery"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
    482  -Rule_Pattern_ruby_third_parties_bigquery_client(1, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Google"), AST_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Cloud"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Bigquery"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
    483  -.decl Rule_Pattern_ruby_lang_reflection_using_user_input_user_input(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    484  -Rule("ruby_lang_reflection_using_user_input_user_input", patternIndex, node) :- Rule_Pattern_ruby_lang_reflection_using_user_input_user_input(patternIndex, node).
    485  -Rule_Pattern_ruby_lang_reflection_using_user_input_user_input(0, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
    486  -Rule_Pattern_ruby_lang_reflection_using_user_input_user_input(1, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
    487  -Rule_Pattern_ruby_lang_reflection_using_user_input_user_input(2, node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
    488  -Rule_Pattern_ruby_lang_reflection_using_user_input_user_input(3, node1) :- AST_NodeType(node1, "method"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "parameters"), AST_NodeType(node3, "method_parameters"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "keyword_parameter"), !AST_NodeField(node4, _, "value"), AST_NodeField(node4, node5, "name"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "event"), AST_ParentChild(node3, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "context").
    489  -.decl Rule_Pattern_ruby_lang_logger(patternIndex: Rule_PatternIndex, node: AST_NodeId)
    490  -Rule("ruby_lang_logger", patternIndex, node) :- Rule_Pattern_ruby_lang_logger(patternIndex, node).
    491  -Rule_Pattern_ruby_lang_logger(0, node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "logger"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     1 +// rule openssl_dsa_init
     2 +.decl Rule_Match_openssl_dsa_init_0(node: AST_NodeId)
     3 +.output Rule_Match_openssl_dsa_init_0
     4 +Rule_Match_openssl_dsa_init_0(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "OpenSSL"), AST_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "PKey"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "DSA"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
     5 +// rule ruby_lang_exec_using_user_input_shell_cmd_proc
     6 +.decl Rule_Match_ruby_lang_exec_using_user_input_shell_cmd_proc_0(node: AST_NodeId, node2: AST_NodeId)
     7 +.output Rule_Match_ruby_lang_exec_using_user_input_shell_cmd_proc_0
     8 +Rule_Match_ruby_lang_exec_using_user_input_shell_cmd_proc_0(node1, node2) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "command_processor").
     9 +.decl Rule_Match_ruby_lang_exec_using_user_input_shell_cmd_proc_1(node: AST_NodeId)
     10 +.output Rule_Match_ruby_lang_exec_using_user_input_shell_cmd_proc_1
     11 +Rule_Match_ruby_lang_exec_using_user_input_shell_cmd_proc_1(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Shell"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "CommandProcessor"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
     12 +// rule ruby_third_parties_scout_apm
     13 +.decl Rule_Match_ruby_third_parties_scout_apm_0(node: AST_NodeId, node7: AST_NodeId)
     14 +.output Rule_Match_ruby_third_parties_scout_apm_0
     15 +Rule_Match_ruby_third_parties_scout_apm_0(node1, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "ScoutApm"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Context"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "add_user"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     16 +.decl Rule_Match_ruby_third_parties_scout_apm_1(node: AST_NodeId, node7: AST_NodeId)
     17 +.output Rule_Match_ruby_third_parties_scout_apm_1
     18 +Rule_Match_ruby_third_parties_scout_apm_1(node1, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "ScoutApm"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Context"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "add"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     19 +// rule ruby_third_parties_elasticsearch
     20 +.decl Rule_Match_ruby_third_parties_elasticsearch_0(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId, node6: AST_NodeId)
     21 +.output Rule_Match_ruby_third_parties_elasticsearch_0
     22 +Rule_Match_ruby_third_parties_elasticsearch_0(node1, node2, node3, node6) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "pair"), AST_NodeField(node5, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":body"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "body")), AST_NodeField(node5, node6, "value"), AST_NodeType(node6, _).
     23 +.decl Rule_Match_ruby_third_parties_elasticsearch_1(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId, node7: AST_NodeId)
     24 +.output Rule_Match_ruby_third_parties_elasticsearch_1
     25 +Rule_Match_ruby_third_parties_elasticsearch_1(node1, node2, node3, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "hash"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "pair"), AST_NodeField(node6, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":body"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "body")), AST_NodeField(node6, node7, "value"), AST_NodeType(node7, _).
     26 +// rule ruby_lang_http_insecure_curb
     27 +.decl Rule_Match_ruby_lang_http_insecure_curb_0(node: AST_NodeId)
     28 +.output Rule_Match_ruby_lang_http_insecure_curb_0
     29 +Rule_Match_ruby_lang_http_insecure_curb_0(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Curl"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Easy"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
     30 +// rule ruby_lang_reflection_using_user_input_user_input
     31 +.decl Rule_Match_ruby_lang_reflection_using_user_input_user_input_0(node: AST_NodeId)
     32 +.output Rule_Match_ruby_lang_reflection_using_user_input_user_input_0
     33 +Rule_Match_ruby_lang_reflection_using_user_input_user_input_0(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     34 +.decl Rule_Match_ruby_lang_reflection_using_user_input_user_input_1(node: AST_NodeId)
     35 +.output Rule_Match_ruby_lang_reflection_using_user_input_user_input_1
     36 +Rule_Match_ruby_lang_reflection_using_user_input_user_input_1(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     37 +.decl Rule_Match_ruby_lang_reflection_using_user_input_user_input_2(node: AST_NodeId)
     38 +.output Rule_Match_ruby_lang_reflection_using_user_input_user_input_2
     39 +Rule_Match_ruby_lang_reflection_using_user_input_user_input_2(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     40 +.decl Rule_Match_ruby_lang_reflection_using_user_input_user_input_3(node: AST_NodeId)
     41 +.output Rule_Match_ruby_lang_reflection_using_user_input_user_input_3
     42 +Rule_Match_ruby_lang_reflection_using_user_input_user_input_3(node1) :- AST_NodeType(node1, "method"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "parameters"), AST_NodeType(node3, "method_parameters"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "keyword_parameter"), !AST_NodeField(node4, _, "value"), AST_NodeField(node4, node5, "name"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "event"), AST_ParentChild(node3, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "context").
     43 +// rule google_dataflow_config
     44 +.decl Rule_Match_google_dataflow_config_0(node: AST_NodeId, node2: AST_NodeId)
     45 +.output Rule_Match_google_dataflow_config_0
     46 +Rule_Match_google_dataflow_config_0(node1, node2) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "configure").
     47 +.decl Rule_Match_google_dataflow_config_1(node: AST_NodeId, node2: AST_NodeId)
     48 +.output Rule_Match_google_dataflow_config_1
     49 +Rule_Match_google_dataflow_config_1(node1, node2) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "configure"), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "block"), AST_NodeField(node4, node5, "parameters"), AST_NodeType(node5, "block_parameters"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
     50 +// rule ruby_rails_insecure_disabling_of_callback
     51 +.decl Rule_Match_ruby_rails_insecure_disabling_of_callback_0(node: AST_NodeId, node2: AST_NodeId)
     52 +.output Rule_Match_ruby_rails_insecure_disabling_of_callback_0
     53 +Rule_Match_ruby_rails_insecure_disabling_of_callback_0(node1, node2) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "pair"), AST_NodeField(node4, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":CurioVar1"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "CurioVar1")), AST_NodeField(node4, node5, "value"), AST_NodeType(node5, _).
     54 +// rule blowfish_init
     55 +.decl Rule_Match_blowfish_init_0(node: AST_NodeId)
     56 +.output Rule_Match_blowfish_init_0
     57 +Rule_Match_blowfish_init_0(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Crypt"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Blowfish"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
     58 +// rule ruby_lang_exec_using_user_input_shell
     59 +.decl Rule_Match_ruby_lang_exec_using_user_input_shell_0(node: AST_NodeId)
     60 +.output Rule_Match_ruby_lang_exec_using_user_input_shell_0
     61 +Rule_Match_ruby_lang_exec_using_user_input_shell_0(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Shell"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "new").
     62 +// rule ruby_lang_http_insecure_url_hash
     63 +.decl Rule_Match_ruby_lang_http_insecure_url_hash_0(node: AST_NodeId, node3: AST_NodeId)
     64 +.output Rule_Match_ruby_lang_http_insecure_url_hash_0
     65 +Rule_Match_ruby_lang_http_insecure_url_hash_0(node1, node3) :- AST_NodeType(node1, "hash"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "pair"), AST_NodeField(node2, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":url"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "url")), AST_NodeField(node2, node3, "value"), AST_NodeType(node3, _).
     66 +// rule ruby_lang_weak_encryption_with_data
     67 +.decl Rule_Match_ruby_lang_weak_encryption_with_data_0(node: AST_NodeId, node7: AST_NodeId)
     68 +.output Rule_Match_ruby_lang_weak_encryption_with_data_0
     69 +Rule_Match_ruby_lang_weak_encryption_with_data_0(node1, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Digest"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "SHA1"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "hexidigest"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     70 +.decl Rule_Match_ruby_lang_weak_encryption_with_data_1(node: AST_NodeId, node7: AST_NodeId)
     71 +.output Rule_Match_ruby_lang_weak_encryption_with_data_1
     72 +Rule_Match_ruby_lang_weak_encryption_with_data_1(node1, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Digest"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "MD5"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "hexdigest"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     73 +.decl Rule_Match_ruby_lang_weak_encryption_with_data_2(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     74 +.output Rule_Match_ruby_lang_weak_encryption_with_data_2
     75 +Rule_Match_ruby_lang_weak_encryption_with_data_2(node1, node2, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     76 +.decl Rule_Match_ruby_lang_weak_encryption_with_data_3(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     77 +.output Rule_Match_ruby_lang_weak_encryption_with_data_3
     78 +Rule_Match_ruby_lang_weak_encryption_with_data_3(node1, node2, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     79 +.decl Rule_Match_ruby_lang_weak_encryption_with_data_4(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId, node6: AST_NodeId)
     80 +.output Rule_Match_ruby_lang_weak_encryption_with_data_4
     81 +Rule_Match_ruby_lang_weak_encryption_with_data_4(node1, node2, node3, node6) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
     82 +.decl Rule_Match_ruby_lang_weak_encryption_with_data_5(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId, node6: AST_NodeId)
     83 +.output Rule_Match_ruby_lang_weak_encryption_with_data_5
     84 +Rule_Match_ruby_lang_weak_encryption_with_data_5(node1, node2, node3, node6) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
     85 +.decl Rule_Match_ruby_lang_weak_encryption_with_data_6(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     86 +.output Rule_Match_ruby_lang_weak_encryption_with_data_6
     87 +Rule_Match_ruby_lang_weak_encryption_with_data_6(node1, node2, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     88 +.decl Rule_Match_ruby_lang_weak_encryption_with_data_7(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId, node6: AST_NodeId)
     89 +.output Rule_Match_ruby_lang_weak_encryption_with_data_7
     90 +Rule_Match_ruby_lang_weak_encryption_with_data_7(node1, node2, node3, node6) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
     91 +.decl Rule_Match_ruby_lang_weak_encryption_with_data_8(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     92 +.output Rule_Match_ruby_lang_weak_encryption_with_data_8
     93 +Rule_Match_ruby_lang_weak_encryption_with_data_8(node1, node2, node3, node5) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "do_block"), !AST_NodeField(node4, _, "parameters"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     94 +// rule ruby_third_parties_clickhouse
     95 +.decl Rule_Match_ruby_third_parties_clickhouse_0(node: AST_NodeId, node2: AST_NodeId, node4: AST_NodeId)
     96 +.output Rule_Match_ruby_third_parties_clickhouse_0
     97 +Rule_Match_ruby_third_parties_clickhouse_0(node1, node2, node4) :- AST_NodeType(node1, "binary"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "operator"), AST_NodeType(node3, "<<"), AST_NodeField(node1, node4, "right"), AST_NodeType(node4, _).
     98 +// rule ruby_lang_exec_using_user_input_user_input
     99 +.decl Rule_Match_ruby_lang_exec_using_user_input_user_input_0(node: AST_NodeId)
     100 +.output Rule_Match_ruby_lang_exec_using_user_input_user_input_0
     101 +Rule_Match_ruby_lang_exec_using_user_input_user_input_0(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     102 +.decl Rule_Match_ruby_lang_exec_using_user_input_user_input_1(node: AST_NodeId)
     103 +.output Rule_Match_ruby_lang_exec_using_user_input_user_input_1
     104 +Rule_Match_ruby_lang_exec_using_user_input_user_input_1(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     105 +.decl Rule_Match_ruby_lang_exec_using_user_input_user_input_2(node: AST_NodeId)
     106 +.output Rule_Match_ruby_lang_exec_using_user_input_user_input_2
     107 +Rule_Match_ruby_lang_exec_using_user_input_user_input_2(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     108 +.decl Rule_Match_ruby_lang_exec_using_user_input_user_input_3(node: AST_NodeId)
     109 +.output Rule_Match_ruby_lang_exec_using_user_input_user_input_3
     110 +Rule_Match_ruby_lang_exec_using_user_input_user_input_3(node1) :- AST_NodeType(node1, "method"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "parameters"), AST_NodeType(node3, "method_parameters"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "keyword_parameter"), !AST_NodeField(node4, _, "value"), AST_NodeField(node4, node5, "name"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "event"), AST_ParentChild(node3, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "context").
     111 +// rule ruby_lang_deserialization_of_user_input_sanitized_user_input
     112 +.decl Rule_Match_ruby_lang_deserialization_of_user_input_sanitized_user_input_0(node: AST_NodeId)
     113 +.output Rule_Match_ruby_lang_deserialization_of_user_input_sanitized_user_input_0
     114 +Rule_Match_ruby_lang_deserialization_of_user_input_sanitized_user_input_0(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "JSON"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "parse").
     115 +.decl Rule_Match_ruby_lang_deserialization_of_user_input_sanitized_user_input_1(node: AST_NodeId)
     116 +.output Rule_Match_ruby_lang_deserialization_of_user_input_sanitized_user_input_1
     117 +Rule_Match_ruby_lang_deserialization_of_user_input_sanitized_user_input_1(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), !AST_NodeField(node1, _, "receiver"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Nokogiri"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "XML").
     118 +// rule ruby_lang_path_using_user_input_user_input
     119 +.decl Rule_Match_ruby_lang_path_using_user_input_user_input_0(node: AST_NodeId)
     120 +.output Rule_Match_ruby_lang_path_using_user_input_user_input_0
     121 +Rule_Match_ruby_lang_path_using_user_input_user_input_0(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     122 +.decl Rule_Match_ruby_lang_path_using_user_input_user_input_1(node: AST_NodeId)
     123 +.output Rule_Match_ruby_lang_path_using_user_input_user_input_1
     124 +Rule_Match_ruby_lang_path_using_user_input_user_input_1(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     125 +.decl Rule_Match_ruby_lang_path_using_user_input_user_input_2(node: AST_NodeId)
     126 +.output Rule_Match_ruby_lang_path_using_user_input_user_input_2
     127 +Rule_Match_ruby_lang_path_using_user_input_user_input_2(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     128 +.decl Rule_Match_ruby_lang_path_using_user_input_user_input_3(node: AST_NodeId)
     129 +.output Rule_Match_ruby_lang_path_using_user_input_user_input_3
     130 +Rule_Match_ruby_lang_path_using_user_input_user_input_3(node1) :- AST_NodeType(node1, "method"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "parameters"), AST_NodeType(node3, "method_parameters"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "keyword_parameter"), !AST_NodeField(node4, _, "value"), AST_NodeField(node4, node5, "name"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "event"), AST_ParentChild(node3, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "context").
     131 +// rule segment_init
     132 +.decl Rule_Match_segment_init_0(node: AST_NodeId)
     133 +.output Rule_Match_segment_init_0
     134 +Rule_Match_segment_init_0(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Segment"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Analytics"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
     135 +// rule ruby_lang_eval_using_user_input_user_input
     136 +.decl Rule_Match_ruby_lang_eval_using_user_input_user_input_0(node: AST_NodeId)
     137 +.output Rule_Match_ruby_lang_eval_using_user_input_user_input_0
     138 +Rule_Match_ruby_lang_eval_using_user_input_user_input_0(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     139 +.decl Rule_Match_ruby_lang_eval_using_user_input_user_input_1(node: AST_NodeId)
     140 +.output Rule_Match_ruby_lang_eval_using_user_input_user_input_1
     141 +Rule_Match_ruby_lang_eval_using_user_input_user_input_1(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     142 +.decl Rule_Match_ruby_lang_eval_using_user_input_user_input_2(node: AST_NodeId)
     143 +.output Rule_Match_ruby_lang_eval_using_user_input_user_input_2
     144 +Rule_Match_ruby_lang_eval_using_user_input_user_input_2(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     145 +.decl Rule_Match_ruby_lang_eval_using_user_input_user_input_3(node: AST_NodeId)
     146 +.output Rule_Match_ruby_lang_eval_using_user_input_user_input_3
     147 +Rule_Match_ruby_lang_eval_using_user_input_user_input_3(node1) :- AST_NodeType(node1, "method"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "parameters"), AST_NodeType(node3, "method_parameters"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "keyword_parameter"), !AST_NodeField(node4, _, "value"), AST_NodeField(node4, node5, "name"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "event"), AST_ParentChild(node3, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "context").
     148 +// rule ruby_lang_path_using_user_input_shell_cmd_trans_user_input
     149 +.decl Rule_Match_ruby_lang_path_using_user_input_shell_cmd_trans_user_input_0(node: AST_NodeId, node2: AST_NodeId, node4: AST_NodeId)
     150 +.output Rule_Match_ruby_lang_path_using_user_input_shell_cmd_trans_user_input_0
     151 +Rule_Match_ruby_lang_path_using_user_input_shell_cmd_trans_user_input_0(node1, node2, node4) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
     152 +// rule ruby_rails_insecure_http_password
     153 +// rule ruby_lang_cookies
     154 +.decl Rule_Match_ruby_lang_cookies_0(node: AST_NodeId, node5: AST_NodeId)
     155 +.output Rule_Match_ruby_lang_cookies_0
     156 +Rule_Match_ruby_lang_cookies_0(node1, node5) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "element_reference"), AST_NodeField(node2, node3, "object"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "cookies"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, _), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
     157 +.decl Rule_Match_ruby_lang_cookies_1(node: AST_NodeId, node5: AST_NodeId, node7: AST_NodeId)
     158 +.output Rule_Match_ruby_lang_cookies_1
     159 +Rule_Match_ruby_lang_cookies_1(node1, node5, node7) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "element_reference"), AST_NodeField(node2, node3, "object"), AST_NodeType(node3, "call"), !AST_NodeField(node3, _, "block"), (!AST_NodeField(node3, _, "arguments"); AST_NodeField(node3, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node3, node4, "receiver"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "cookies"), AST_NodeField(node3, node5, "method"), AST_NodeType(node5, _), AST_ParentChild(node2, 0, node6), AST_NodeType(node6, _), AST_NodeField(node1, node7, "right"), AST_NodeType(node7, _).
     160 +// rule ruby_third_parties_new_relic
     161 +.decl Rule_Match_ruby_third_parties_new_relic_0(node: AST_NodeId, node7: AST_NodeId)
     162 +.output Rule_Match_ruby_third_parties_new_relic_0
     163 +Rule_Match_ruby_third_parties_new_relic_0(node1, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "NewRelic"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Agent"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "add_custom_attributes"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     164 +.decl Rule_Match_ruby_third_parties_new_relic_1(node: AST_NodeId, node7: AST_NodeId)
     165 +.output Rule_Match_ruby_third_parties_new_relic_1
     166 +Rule_Match_ruby_third_parties_new_relic_1(node1, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "NewRelic"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Agent"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "add_custom_parameters"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     167 +.decl Rule_Match_ruby_third_parties_new_relic_2(node: AST_NodeId, node7: AST_NodeId)
     168 +.output Rule_Match_ruby_third_parties_new_relic_2
     169 +Rule_Match_ruby_third_parties_new_relic_2(node1, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "NewRelic"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Agent"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "notice_error"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     170 +// rule google_dataflow_snapshots_client_init
     171 +.decl Rule_Match_google_dataflow_snapshots_client_init_1(node: AST_NodeId)
     172 +.output Rule_Match_google_dataflow_snapshots_client_init_1
     173 +Rule_Match_google_dataflow_snapshots_client_init_1(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Google"), AST_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Cloud"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Dataflow"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "snapshots").
     174 +// rule ruby_rails_default_encryption
     175 +.decl Rule_Match_ruby_rails_default_encryption_0(node: AST_NodeId, node6: AST_NodeId)
     176 +.output Rule_Match_ruby_rails_default_encryption_0
     177 +Rule_Match_ruby_rails_default_encryption_0(node1, node6) :- AST_NodeType(node1, "class"), !AST_NodeField(node1, _, "superclass"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "call"), !AST_NodeField(node3, _, "receiver"), !AST_NodeField(node3, _, "block"), AST_NodeField(node3, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "encrypts"), AST_NodeField(node3, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
     178 +// rule ruby_lang_file_generation
     179 +.decl Rule_Match_ruby_lang_file_generation_0(node: AST_NodeId, node2: AST_NodeId, node4: AST_NodeId)
     180 +.output Rule_Match_ruby_lang_file_generation_0
     181 +Rule_Match_ruby_lang_file_generation_0(node1, node2, node4) :- AST_NodeType(node1, "binary"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "operator"), AST_NodeType(node3, "<<"), AST_NodeField(node1, node4, "right"), AST_NodeType(node4, _).
     182 +.decl Rule_Match_ruby_lang_file_generation_1(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     183 +.output Rule_Match_ruby_lang_file_generation_1
     184 +Rule_Match_ruby_lang_file_generation_1(node1, node2, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     185 +// rule ruby_lang_weak_encryption_with_data_openssl_rsa_init
     186 +.decl Rule_Match_ruby_lang_weak_encryption_with_data_openssl_rsa_init_0(node: AST_NodeId)
     187 +.output Rule_Match_ruby_lang_weak_encryption_with_data_openssl_rsa_init_0
     188 +Rule_Match_ruby_lang_weak_encryption_with_data_openssl_rsa_init_0(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "OpenSSL"), AST_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "PKey"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "RSA"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
     189 +// rule ruby_lang_http_url_using_user_input_user_input
     190 +.decl Rule_Match_ruby_lang_http_url_using_user_input_user_input_0(node: AST_NodeId)
     191 +.output Rule_Match_ruby_lang_http_url_using_user_input_user_input_0
     192 +Rule_Match_ruby_lang_http_url_using_user_input_user_input_0(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     193 +.decl Rule_Match_ruby_lang_http_url_using_user_input_user_input_1(node: AST_NodeId)
     194 +.output Rule_Match_ruby_lang_http_url_using_user_input_user_input_1
     195 +Rule_Match_ruby_lang_http_url_using_user_input_user_input_1(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     196 +.decl Rule_Match_ruby_lang_http_url_using_user_input_user_input_2(node: AST_NodeId)
     197 +.output Rule_Match_ruby_lang_http_url_using_user_input_user_input_2
     198 +Rule_Match_ruby_lang_http_url_using_user_input_user_input_2(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     199 +.decl Rule_Match_ruby_lang_http_url_using_user_input_user_input_3(node: AST_NodeId)
     200 +.output Rule_Match_ruby_lang_http_url_using_user_input_user_input_3
     201 +Rule_Match_ruby_lang_http_url_using_user_input_user_input_3(node1) :- AST_NodeType(node1, "method"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "parameters"), AST_NodeType(node3, "method_parameters"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "keyword_parameter"), !AST_NodeField(node4, _, "value"), AST_NodeField(node4, node5, "name"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "event"), AST_ParentChild(node3, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "context").
     202 +// rule ruby_third_parties_sentry
     203 +.decl Rule_Match_ruby_third_parties_sentry_0(node: AST_NodeId, node7: AST_NodeId)
     204 +.output Rule_Match_ruby_third_parties_sentry_0
     205 +Rule_Match_ruby_third_parties_sentry_0(node1, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Sentry"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Breadcrumb"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     206 +.decl Rule_Match_ruby_third_parties_sentry_1(node: AST_NodeId, node5: AST_NodeId)
     207 +.output Rule_Match_ruby_third_parties_sentry_1
     208 +Rule_Match_ruby_third_parties_sentry_1(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "capture_message"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     209 +.decl Rule_Match_ruby_third_parties_sentry_3(node: AST_NodeId, node6: AST_NodeId)
     210 +.output Rule_Match_ruby_third_parties_sentry_3
     211 +Rule_Match_ruby_third_parties_sentry_3(node1, node6) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "set_context"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
     212 +.decl Rule_Match_ruby_third_parties_sentry_8(node: AST_NodeId, node5: AST_NodeId)
     213 +.output Rule_Match_ruby_third_parties_sentry_8
     214 +Rule_Match_ruby_third_parties_sentry_8(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "set_extras"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     215 +.decl Rule_Match_ruby_third_parties_sentry_13(node: AST_NodeId, node5: AST_NodeId)
     216 +.output Rule_Match_ruby_third_parties_sentry_13
     217 +Rule_Match_ruby_third_parties_sentry_13(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "set_tags"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     218 +.decl Rule_Match_ruby_third_parties_sentry_16(node: AST_NodeId, node5: AST_NodeId)
     219 +.output Rule_Match_ruby_third_parties_sentry_16
     220 +Rule_Match_ruby_third_parties_sentry_16(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "set_user"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     221 +// rule ruby_rails_http_verb_confusion
     222 +.decl Rule_Match_ruby_rails_http_verb_confusion_0(node: AST_NodeId)
     223 +.output Rule_Match_ruby_rails_http_verb_confusion_0
     224 +Rule_Match_ruby_rails_http_verb_confusion_0(node1) :- AST_NodeType(node1, "if"), !AST_NodeField(node1, _, "consequence"), AST_NodeField(node1, node2, "condition"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "request"), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "get?"), AST_NodeField(node1, node5, "alternative"), AST_NodeType(node5, "else").
     225 +.decl Rule_Match_ruby_rails_http_verb_confusion_1(node: AST_NodeId)
     226 +.output Rule_Match_ruby_rails_http_verb_confusion_1
     227 +Rule_Match_ruby_rails_http_verb_confusion_1(node1) :- AST_NodeType(node1, "unless"), !AST_NodeField(node1, _, "consequence"), !AST_NodeField(node1, _, "alternative"), AST_NodeField(node1, node2, "condition"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "request"), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "get?").
     228 +.decl Rule_Match_ruby_rails_http_verb_confusion_2(node: AST_NodeId)
     229 +.output Rule_Match_ruby_rails_http_verb_confusion_2
     230 +Rule_Match_ruby_rails_http_verb_confusion_2(node1) :- AST_NodeType(node1, "unless_modifier"), AST_NodeField(node1, node2, "body"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "condition"), AST_NodeType(node3, "call"), !AST_NodeField(node3, _, "block"), (!AST_NodeField(node3, _, "arguments"); AST_NodeField(node3, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node3, node4, "receiver"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "request"), AST_NodeField(node3, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "get?").
     231 +// rule ruby_rails_redirect_to_user_input
     232 +.decl Rule_Match_ruby_rails_redirect_to_user_input_0(node: AST_NodeId)
     233 +.output Rule_Match_ruby_rails_redirect_to_user_input_0
     234 +Rule_Match_ruby_rails_redirect_to_user_input_0(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     235 +.decl Rule_Match_ruby_rails_redirect_to_user_input_1(node: AST_NodeId)
     236 +.output Rule_Match_ruby_rails_redirect_to_user_input_1
     237 +Rule_Match_ruby_rails_redirect_to_user_input_1(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     238 +.decl Rule_Match_ruby_rails_redirect_to_user_input_2(node: AST_NodeId)
     239 +.output Rule_Match_ruby_rails_redirect_to_user_input_2
     240 +Rule_Match_ruby_rails_redirect_to_user_input_2(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     241 +// rule ruby_lang_http_url_using_user_input_net_http
     242 +.decl Rule_Match_ruby_lang_http_url_using_user_input_net_http_0(node: AST_NodeId, node1: AST_NodeId)
     243 +.output Rule_Match_ruby_lang_http_url_using_user_input_net_http_0
     244 +Rule_Match_ruby_lang_http_url_using_user_input_net_http_0(node1, node1) :- AST_NodeType(node1, _).
     245 +.decl Rule_Match_ruby_lang_http_url_using_user_input_net_http_1(node: AST_NodeId, node2: AST_NodeId)
     246 +.output Rule_Match_ruby_lang_http_url_using_user_input_net_http_1
     247 +Rule_Match_ruby_lang_http_url_using_user_input_net_http_1(node1, node2) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "start"), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "block"), AST_NodeField(node4, node5, "parameters"), AST_NodeType(node5, "block_parameters"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
     248 +.decl Rule_Match_ruby_lang_http_url_using_user_input_net_http_2(node: AST_NodeId, node2: AST_NodeId)
     249 +.output Rule_Match_ruby_lang_http_url_using_user_input_net_http_2
     250 +Rule_Match_ruby_lang_http_url_using_user_input_net_http_2(node1, node2) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "start").
     251 +// rule ruby_lang_ftp_using_user_input_ftp
     252 +.decl Rule_Match_ruby_lang_ftp_using_user_input_ftp_0(node: AST_NodeId)
     253 +.output Rule_Match_ruby_lang_ftp_using_user_input_ftp_0
     254 +Rule_Match_ruby_lang_ftp_using_user_input_ftp_0(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "FTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
     255 +.decl Rule_Match_ruby_lang_ftp_using_user_input_ftp_1(node: AST_NodeId)
     256 +.output Rule_Match_ruby_lang_ftp_using_user_input_ftp_1
     257 +Rule_Match_ruby_lang_ftp_using_user_input_ftp_1(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "FTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "open").
     258 +.decl Rule_Match_ruby_lang_ftp_using_user_input_ftp_2(node: AST_NodeId)
     259 +.output Rule_Match_ruby_lang_ftp_using_user_input_ftp_2
     260 +Rule_Match_ruby_lang_ftp_using_user_input_ftp_2(node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "FTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "open"), AST_NodeField(node1, node6, "block"), AST_NodeType(node6, "block"), AST_NodeField(node6, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, _).
     261 +// rule ruby_rails_session
     262 +.decl Rule_Match_ruby_rails_session_0(node: AST_NodeId, node5: AST_NodeId)
     263 +.output Rule_Match_ruby_rails_session_0
     264 +Rule_Match_ruby_rails_session_0(node1, node5) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "element_reference"), AST_NodeField(node2, node3, "object"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "session"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, _), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
     265 +// rule ruby_third_parties_airbrake
     266 +.decl Rule_Match_ruby_third_parties_airbrake_0(node: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     267 +.output Rule_Match_ruby_third_parties_airbrake_0
     268 +Rule_Match_ruby_third_parties_airbrake_0(node1, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Airbrake"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     269 +.decl Rule_Match_ruby_third_parties_airbrake_2(node: AST_NodeId, node5: AST_NodeId)
     270 +.output Rule_Match_ruby_third_parties_airbrake_2
     271 +Rule_Match_ruby_third_parties_airbrake_2(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Airbrake"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "merge_context"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     272 +.decl Rule_Match_ruby_third_parties_airbrake_3(node: AST_NodeId, node3: AST_NodeId)
     273 +.output Rule_Match_ruby_third_parties_airbrake_3
     274 +Rule_Match_ruby_third_parties_airbrake_3(node1, node3) :- AST_NodeType(node1, "method"), !AST_NodeField(node1, _, "parameters"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "to_airbrake"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, _).
     275 +// rule openssl_rsa_init
     276 +// rule google_dataflow_message_text_classes
     277 +// rule ruby_rails_insecure_smtp
     278 +// rule ruby_lang_deserialization_of_user_input
     279 +.decl Rule_Match_ruby_lang_deserialization_of_user_input_0(node: AST_NodeId, node2: AST_NodeId, node5: AST_NodeId)
     280 +.output Rule_Match_ruby_lang_deserialization_of_user_input_0
     281 +Rule_Match_ruby_lang_deserialization_of_user_input_0(node1, node2, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "load"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     282 +.decl Rule_Match_ruby_lang_deserialization_of_user_input_1(node: AST_NodeId, node5: AST_NodeId)
     283 +.output Rule_Match_ruby_lang_deserialization_of_user_input_1
     284 +Rule_Match_ruby_lang_deserialization_of_user_input_1(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Marshal"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "restore"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     285 +.decl Rule_Match_ruby_lang_deserialization_of_user_input_2(node: AST_NodeId, node5: AST_NodeId)
     286 +.output Rule_Match_ruby_lang_deserialization_of_user_input_2
     287 +Rule_Match_ruby_lang_deserialization_of_user_input_2(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Oj"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "object_load"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     288 +// rule ruby_third_parties_google_analytics
     289 +// rule ruby_third_parties_bigquery_dataset
     290 +.decl Rule_Match_ruby_third_parties_bigquery_dataset_0(node: AST_NodeId, node2: AST_NodeId)
     291 +.output Rule_Match_ruby_third_parties_bigquery_dataset_0
     292 +Rule_Match_ruby_third_parties_bigquery_dataset_0(node1, node2) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "dataset").
     293 +// rule ruby_lang_hardcoded_secret
     294 +.decl Rule_Match_ruby_lang_hardcoded_secret_0(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId)
     295 +.output Rule_Match_ruby_lang_hardcoded_secret_0
     296 +Rule_Match_ruby_lang_hardcoded_secret_0(node1, node2, node3) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "right"), AST_NodeType(node3, _).
     297 +.decl Rule_Match_ruby_lang_hardcoded_secret_1(node: AST_NodeId, node5: AST_NodeId)
     298 +.output Rule_Match_ruby_lang_hardcoded_secret_1
     299 +Rule_Match_ruby_lang_hardcoded_secret_1(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "pair"), AST_NodeField(node4, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":CurioVar1"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "CurioVar1")), AST_NodeField(node4, node5, "value"), AST_NodeType(node5, _).
     300 +.decl Rule_Match_ruby_lang_hardcoded_secret_2(node: AST_NodeId, node5: AST_NodeId, node6: AST_NodeId)
     301 +.output Rule_Match_ruby_lang_hardcoded_secret_2
     302 +Rule_Match_ruby_lang_hardcoded_secret_2(node1, node5, node6) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "pair"), AST_NodeField(node4, node5, "key"), AST_NodeType(node5, _), AST_NodeField(node4, node6, "value"), AST_NodeType(node6, _).
     303 +.decl Rule_Match_ruby_lang_hardcoded_secret_3(node: AST_NodeId, node3: AST_NodeId)
     304 +.output Rule_Match_ruby_lang_hardcoded_secret_3
     305 +Rule_Match_ruby_lang_hardcoded_secret_3(node1, node3) :- AST_NodeType(node1, "hash"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "pair"), AST_NodeField(node2, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":CurioVar0"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "CurioVar0")), AST_NodeField(node2, node3, "value"), AST_NodeType(node3, _).
     306 +.decl Rule_Match_ruby_lang_hardcoded_secret_4(node: AST_NodeId, node3: AST_NodeId, node4: AST_NodeId)
     307 +.output Rule_Match_ruby_lang_hardcoded_secret_4
     308 +Rule_Match_ruby_lang_hardcoded_secret_4(node1, node3, node4) :- AST_NodeType(node1, "hash"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "pair"), AST_NodeField(node2, node3, "key"), AST_NodeType(node3, _), AST_NodeField(node2, node4, "value"), AST_NodeType(node4, _).
     309 +// rule ruby_lang_ftp_using_user_input_user_input
     310 +.decl Rule_Match_ruby_lang_ftp_using_user_input_user_input_0(node: AST_NodeId)
     311 +.output Rule_Match_ruby_lang_ftp_using_user_input_user_input_0
     312 +Rule_Match_ruby_lang_ftp_using_user_input_user_input_0(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     313 +.decl Rule_Match_ruby_lang_ftp_using_user_input_user_input_1(node: AST_NodeId)
     314 +.output Rule_Match_ruby_lang_ftp_using_user_input_user_input_1
     315 +Rule_Match_ruby_lang_ftp_using_user_input_user_input_1(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     316 +.decl Rule_Match_ruby_lang_ftp_using_user_input_user_input_2(node: AST_NodeId)
     317 +.output Rule_Match_ruby_lang_ftp_using_user_input_user_input_2
     318 +Rule_Match_ruby_lang_ftp_using_user_input_user_input_2(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     319 +.decl Rule_Match_ruby_lang_ftp_using_user_input_user_input_3(node: AST_NodeId)
     320 +.output Rule_Match_ruby_lang_ftp_using_user_input_user_input_3
     321 +Rule_Match_ruby_lang_ftp_using_user_input_user_input_3(node1) :- AST_NodeType(node1, "method"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "parameters"), AST_NodeType(node3, "method_parameters"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "keyword_parameter"), !AST_NodeField(node4, _, "value"), AST_NodeField(node4, node5, "name"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "event"), AST_ParentChild(node3, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "context").
     322 +// rule ruby_rails_render_using_user_input
     323 +.decl Rule_Match_ruby_rails_render_using_user_input_0(node: AST_NodeId, node5: AST_NodeId)
     324 +.output Rule_Match_ruby_rails_render_using_user_input_0
     325 +Rule_Match_ruby_rails_render_using_user_input_0(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "render"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "pair"), AST_NodeField(node4, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":inline"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "inline")), AST_NodeField(node4, node5, "value"), AST_NodeType(node5, _).
     326 +.decl Rule_Match_ruby_rails_render_using_user_input_1(node: AST_NodeId, node5: AST_NodeId)
     327 +.output Rule_Match_ruby_rails_render_using_user_input_1
     328 +Rule_Match_ruby_rails_render_using_user_input_1(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "render"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "pair"), AST_NodeField(node4, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":html"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "html")), AST_NodeField(node4, node5, "value"), AST_NodeType(node5, _).
     329 +// rule ruby_lang_http_insecure
     330 +.decl Rule_Match_ruby_lang_http_insecure_0(node: AST_NodeId, node5: AST_NodeId, node7: AST_NodeId)
     331 +.output Rule_Match_ruby_lang_http_insecure_0
     332 +Rule_Match_ruby_lang_http_insecure_0(node1, node5, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "HTTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     333 +.decl Rule_Match_ruby_lang_http_insecure_1(node: AST_NodeId, node5: AST_NodeId, node7: AST_NodeId)
     334 +.output Rule_Match_ruby_lang_http_insecure_1
     335 +Rule_Match_ruby_lang_http_insecure_1(node1, node5, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "HTTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     336 +.decl Rule_Match_ruby_lang_http_insecure_3(node: AST_NodeId, node4: AST_NodeId)
     337 +.output Rule_Match_ruby_lang_http_insecure_3
     338 +Rule_Match_ruby_lang_http_insecure_3(node1, node4) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "URI"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
     339 +.decl Rule_Match_ruby_lang_http_insecure_4(node: AST_NodeId, node6: AST_NodeId)
     340 +.output Rule_Match_ruby_lang_http_insecure_4
     341 +Rule_Match_ruby_lang_http_insecure_4(node1, node6) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Curl"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "http"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
     342 +.decl Rule_Match_ruby_lang_http_insecure_5(node: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     343 +.output Rule_Match_ruby_lang_http_insecure_5
     344 +Rule_Match_ruby_lang_http_insecure_5(node1, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Curl"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     345 +.decl Rule_Match_ruby_lang_http_insecure_6(node: AST_NodeId, node5: AST_NodeId, node7: AST_NodeId)
     346 +.output Rule_Match_ruby_lang_http_insecure_6
     347 +Rule_Match_ruby_lang_http_insecure_6(node1, node5, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Curl"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Easy"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     348 +.decl Rule_Match_ruby_lang_http_insecure_7(node: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     349 +.output Rule_Match_ruby_lang_http_insecure_7
     350 +Rule_Match_ruby_lang_http_insecure_7(node1, node3, node5) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "url"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
     351 +.decl Rule_Match_ruby_lang_http_insecure_8(node: AST_NodeId, node5: AST_NodeId, node7: AST_NodeId)
     352 +.output Rule_Match_ruby_lang_http_insecure_8
     353 +Rule_Match_ruby_lang_http_insecure_8(node1, node5, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Curl"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Multi"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     354 +.decl Rule_Match_ruby_lang_http_insecure_9(node: AST_NodeId, node5: AST_NodeId, node7: AST_NodeId)
     355 +.output Rule_Match_ruby_lang_http_insecure_9
     356 +Rule_Match_ruby_lang_http_insecure_9(node1, node5, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Curl"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Multi"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     357 +.decl Rule_Match_ruby_lang_http_insecure_10(node: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     358 +.output Rule_Match_ruby_lang_http_insecure_10
     359 +Rule_Match_ruby_lang_http_insecure_10(node1, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Excon"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     360 +.decl Rule_Match_ruby_lang_http_insecure_11(node: AST_NodeId, node2: AST_NodeId, node5: AST_NodeId)
     361 +.output Rule_Match_ruby_lang_http_insecure_11
     362 +Rule_Match_ruby_lang_http_insecure_11(node1, node2, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "get"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     363 +.decl Rule_Match_ruby_lang_http_insecure_12(node: AST_NodeId, node2: AST_NodeId, node5: AST_NodeId)
     364 +.output Rule_Match_ruby_lang_http_insecure_12
     365 +Rule_Match_ruby_lang_http_insecure_12(node1, node2, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "post"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     366 +// rule ruby_third_parties_rollbar_scope
     367 +.decl Rule_Match_ruby_third_parties_rollbar_scope_0(node: AST_NodeId)
     368 +.output Rule_Match_ruby_third_parties_rollbar_scope_0
     369 +Rule_Match_ruby_third_parties_rollbar_scope_0(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Rollbar"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "scope").
     370 +// rule ruby_lang_weak_encryption
     371 +.decl Rule_Match_ruby_lang_weak_encryption_0(node: AST_NodeId)
     372 +.output Rule_Match_ruby_lang_weak_encryption_0
     373 +Rule_Match_ruby_lang_weak_encryption_0(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Digest"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "SHA1"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "hexidigest").
     374 +.decl Rule_Match_ruby_lang_weak_encryption_1(node: AST_NodeId)
     375 +.output Rule_Match_ruby_lang_weak_encryption_1
     376 +Rule_Match_ruby_lang_weak_encryption_1(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Digest"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "MD5"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "hexdigest").
     377 +.decl Rule_Match_ruby_lang_weak_encryption_2(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId)
     378 +.output Rule_Match_ruby_lang_weak_encryption_2
     379 +Rule_Match_ruby_lang_weak_encryption_2(node1, node2, node3) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _).
     380 +.decl Rule_Match_ruby_lang_weak_encryption_3(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId)
     381 +.output Rule_Match_ruby_lang_weak_encryption_3
     382 +Rule_Match_ruby_lang_weak_encryption_3(node1, node2, node3) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _).
     383 +.decl Rule_Match_ruby_lang_weak_encryption_4(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId)
     384 +.output Rule_Match_ruby_lang_weak_encryption_4
     385 +Rule_Match_ruby_lang_weak_encryption_4(node1, node2, node3) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _).
     386 +.decl Rule_Match_ruby_lang_weak_encryption_5(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId)
     387 +.output Rule_Match_ruby_lang_weak_encryption_5
     388 +Rule_Match_ruby_lang_weak_encryption_5(node1, node2, node3) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _).
     389 +.decl Rule_Match_ruby_lang_weak_encryption_6(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId)
     390 +.output Rule_Match_ruby_lang_weak_encryption_6
     391 +Rule_Match_ruby_lang_weak_encryption_6(node1, node2, node3) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _).
     392 +.decl Rule_Match_ruby_lang_weak_encryption_7(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId)
     393 +.output Rule_Match_ruby_lang_weak_encryption_7
     394 +Rule_Match_ruby_lang_weak_encryption_7(node1, node2, node3) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "do_block"), !AST_NodeField(node4, _, "parameters"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     395 +// rule ruby_third_parties_algolia_client
     396 +.decl Rule_Match_ruby_third_parties_algolia_client_0(node: AST_NodeId)
     397 +.output Rule_Match_ruby_third_parties_algolia_client_0
     398 +Rule_Match_ruby_third_parties_algolia_client_0(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Algolia"), AST_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Search"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Client"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "create").
     399 +// rule ruby_lang_path_using_user_input_pathname
     400 +.decl Rule_Match_ruby_lang_path_using_user_input_pathname_0(node: AST_NodeId)
     401 +.output Rule_Match_ruby_lang_path_using_user_input_pathname_0
     402 +Rule_Match_ruby_lang_path_using_user_input_pathname_0(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Rails"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "root").
     403 +.decl Rule_Match_ruby_lang_path_using_user_input_pathname_1(node: AST_NodeId)
     404 +.output Rule_Match_ruby_lang_path_using_user_input_pathname_1
     405 +Rule_Match_ruby_lang_path_using_user_input_pathname_1(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Pathname"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _).
     406 +// rule google_dataflow_description_classes
     407 +.decl Rule_Match_google_dataflow_description_classes_1(node: AST_NodeId, node2: AST_NodeId)
     408 +.output Rule_Match_google_dataflow_description_classes_1
     409 +Rule_Match_google_dataflow_description_classes_1(node1, node2) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "get_snapshot").
     410 +// rule google_dataflow_template_metadata_init
     411 +// rule ruby_lang_http_url_using_user_input_excon
     412 +.decl Rule_Match_ruby_lang_http_url_using_user_input_excon_0(node: AST_NodeId)
     413 +.output Rule_Match_ruby_lang_http_url_using_user_input_excon_0
     414 +Rule_Match_ruby_lang_http_url_using_user_input_excon_0(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Excon"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "new").
     415 +.decl Rule_Match_ruby_lang_http_url_using_user_input_excon_1(node: AST_NodeId)
     416 +.output Rule_Match_ruby_lang_http_url_using_user_input_excon_1
     417 +Rule_Match_ruby_lang_http_url_using_user_input_excon_1(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Excon"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Connection"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
     418 +// rule google_dataflow_client_init
     419 +.decl Rule_Match_google_dataflow_client_init_1(node: AST_NodeId, node7: AST_NodeId)
     420 +.output Rule_Match_google_dataflow_client_init_1
     421 +Rule_Match_google_dataflow_client_init_1(node1, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Google"), AST_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Cloud"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Dataflow"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, _).
     422 +// rule ruby_lang_path_using_user_input
     423 +.decl Rule_Match_ruby_lang_path_using_user_input_0(node: AST_NodeId, node3: AST_NodeId)
     424 +.output Rule_Match_ruby_lang_path_using_user_input_0
     425 +Rule_Match_ruby_lang_path_using_user_input_0(node1, node3) :- AST_NodeType(node1, "element_reference"), AST_NodeField(node1, node2, "object"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Dir"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, _).
     426 +.decl Rule_Match_ruby_lang_path_using_user_input_1(node: AST_NodeId, node2: AST_NodeId, node5: AST_NodeId)
     427 +.output Rule_Match_ruby_lang_path_using_user_input_1
     428 +Rule_Match_ruby_lang_path_using_user_input_1(node1, node2, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     429 +.decl Rule_Match_ruby_lang_path_using_user_input_2(node: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     430 +.output Rule_Match_ruby_lang_path_using_user_input_2
     431 +Rule_Match_ruby_lang_path_using_user_input_2(node1, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "IO"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     432 +.decl Rule_Match_ruby_lang_path_using_user_input_3(node: AST_NodeId, node5: AST_NodeId)
     433 +.output Rule_Match_ruby_lang_path_using_user_input_3
     434 +Rule_Match_ruby_lang_path_using_user_input_3(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Kernel"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "open"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     435 +.decl Rule_Match_ruby_lang_path_using_user_input_4(node: AST_NodeId, node4: AST_NodeId)
     436 +.output Rule_Match_ruby_lang_path_using_user_input_4
     437 +Rule_Match_ruby_lang_path_using_user_input_4(node1, node4) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "open"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
     438 +.decl Rule_Match_ruby_lang_path_using_user_input_5(node: AST_NodeId, node5: AST_NodeId)
     439 +.output Rule_Match_ruby_lang_path_using_user_input_5
     440 +Rule_Match_ruby_lang_path_using_user_input_5(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "PStore"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "new"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     441 +.decl Rule_Match_ruby_lang_path_using_user_input_6(node: AST_NodeId, node5: AST_NodeId, node7: AST_NodeId)
     442 +.output Rule_Match_ruby_lang_path_using_user_input_6
     443 +Rule_Match_ruby_lang_path_using_user_input_6(node1, node5, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Gem"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Util"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     444 +.decl Rule_Match_ruby_lang_path_using_user_input_7(node: AST_NodeId, node2: AST_NodeId, node5: AST_NodeId)
     445 +.output Rule_Match_ruby_lang_path_using_user_input_7
     446 +Rule_Match_ruby_lang_path_using_user_input_7(node1, node2, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     447 +.decl Rule_Match_ruby_lang_path_using_user_input_8(node: AST_NodeId, node2: AST_NodeId, node4: AST_NodeId)
     448 +.output Rule_Match_ruby_lang_path_using_user_input_8
     449 +Rule_Match_ruby_lang_path_using_user_input_8(node1, node2, node4) :- AST_NodeType(node1, "binary"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "operator"), AST_NodeType(node3, "+"), AST_NodeField(node1, node4, "right"), AST_NodeType(node4, _).
     450 +.decl Rule_Match_ruby_lang_path_using_user_input_9(node: AST_NodeId, node2: AST_NodeId, node4: AST_NodeId)
     451 +.output Rule_Match_ruby_lang_path_using_user_input_9
     452 +Rule_Match_ruby_lang_path_using_user_input_9(node1, node2, node4) :- AST_NodeType(node1, "binary"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "operator"), AST_NodeType(node3, "/"), AST_NodeField(node1, node4, "right"), AST_NodeType(node4, _).
     453 +.decl Rule_Match_ruby_lang_path_using_user_input_10(node: AST_NodeId, node5: AST_NodeId)
     454 +.output Rule_Match_ruby_lang_path_using_user_input_10
     455 +Rule_Match_ruby_lang_path_using_user_input_10(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Shell"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "cd"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     456 +.decl Rule_Match_ruby_lang_path_using_user_input_11(node: AST_NodeId, node5: AST_NodeId)
     457 +.output Rule_Match_ruby_lang_path_using_user_input_11
     458 +Rule_Match_ruby_lang_path_using_user_input_11(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Shell"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "new"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     459 +.decl Rule_Match_ruby_lang_path_using_user_input_12(node: AST_NodeId, node5: AST_NodeId)
     460 +.output Rule_Match_ruby_lang_path_using_user_input_12
     461 +Rule_Match_ruby_lang_path_using_user_input_12(node1, node5) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Shell"), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "default_system_path"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
     462 +.decl Rule_Match_ruby_lang_path_using_user_input_13(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     463 +.output Rule_Match_ruby_lang_path_using_user_input_13
     464 +Rule_Match_ruby_lang_path_using_user_input_13(node1, node2, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     465 +.decl Rule_Match_ruby_lang_path_using_user_input_14(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     466 +.output Rule_Match_ruby_lang_path_using_user_input_14
     467 +Rule_Match_ruby_lang_path_using_user_input_14(node1, node2, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     468 +.decl Rule_Match_ruby_lang_path_using_user_input_15(node: AST_NodeId, node2: AST_NodeId, node4: AST_NodeId)
     469 +.output Rule_Match_ruby_lang_path_using_user_input_15
     470 +Rule_Match_ruby_lang_path_using_user_input_15(node1, node2, node4) :- AST_NodeType(node1, "element_reference"), AST_NodeField(node1, node2, "object"), AST_NodeType(node2, _), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, _), AST_ParentChild(node1, 1, node4), AST_NodeType(node4, _).
     471 +.decl Rule_Match_ruby_lang_path_using_user_input_16(node: AST_NodeId, node2: AST_NodeId, node5: AST_NodeId)
     472 +.output Rule_Match_ruby_lang_path_using_user_input_16
     473 +Rule_Match_ruby_lang_path_using_user_input_16(node1, node2, node5) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "transact"), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "do_block"), !AST_NodeField(node4, _, "parameters"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     474 +.decl Rule_Match_ruby_lang_path_using_user_input_17(node: AST_NodeId, node2: AST_NodeId, node5: AST_NodeId)
     475 +.output Rule_Match_ruby_lang_path_using_user_input_17
     476 +Rule_Match_ruby_lang_path_using_user_input_17(node1, node2, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), !AST_NodeField(node1, _, "receiver"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "pair"), AST_NodeField(node4, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":CurioVar1"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "CurioVar1")), AST_NodeField(node4, node5, "value"), AST_NodeType(node5, _).
     477 +.decl Rule_Match_ruby_lang_path_using_user_input_18(node: AST_NodeId, node2: AST_NodeId, node6: AST_NodeId)
     478 +.output Rule_Match_ruby_lang_path_using_user_input_18
     479 +Rule_Match_ruby_lang_path_using_user_input_18(node1, node2, node6) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "hash"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "pair"), AST_NodeField(node5, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":CurioVar1"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "CurioVar1")), AST_NodeField(node5, node6, "value"), AST_NodeType(node6, _).
     480 +.decl Rule_Match_ruby_lang_path_using_user_input_19(node: AST_NodeId, node4: AST_NodeId)
     481 +.output Rule_Match_ruby_lang_path_using_user_input_19
     482 +Rule_Match_ruby_lang_path_using_user_input_19(node1, node4) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "send_file"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
     483 +// rule ruby_lang_http_url_using_user_input
     484 +.decl Rule_Match_ruby_lang_http_url_using_user_input_0(node: AST_NodeId, node5: AST_NodeId, node7: AST_NodeId)
     485 +.output Rule_Match_ruby_lang_http_url_using_user_input_0
     486 +Rule_Match_ruby_lang_http_url_using_user_input_0(node1, node5, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "HTTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     487 +.decl Rule_Match_ruby_lang_http_url_using_user_input_1(node: AST_NodeId, node5: AST_NodeId, node7: AST_NodeId)
     488 +.output Rule_Match_ruby_lang_http_url_using_user_input_1
     489 +Rule_Match_ruby_lang_http_url_using_user_input_1(node1, node5, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "HTTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     490 +.decl Rule_Match_ruby_lang_http_url_using_user_input_3(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     491 +.output Rule_Match_ruby_lang_http_url_using_user_input_3
     492 +Rule_Match_ruby_lang_http_url_using_user_input_3(node1, node2, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     493 +.decl Rule_Match_ruby_lang_http_url_using_user_input_4(node: AST_NodeId, node2: AST_NodeId, node6: AST_NodeId)
     494 +.output Rule_Match_ruby_lang_http_url_using_user_input_4
     495 +Rule_Match_ruby_lang_http_url_using_user_input_4(node1, node2, node6) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "send_request"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
     496 +.decl Rule_Match_ruby_lang_http_url_using_user_input_5(node: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     497 +.output Rule_Match_ruby_lang_http_url_using_user_input_5
     498 +Rule_Match_ruby_lang_http_url_using_user_input_5(node1, node3, node5) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "ipaddr"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
     499 +.decl Rule_Match_ruby_lang_http_url_using_user_input_6(node: AST_NodeId, node4: AST_NodeId)
     500 +.output Rule_Match_ruby_lang_http_url_using_user_input_6
     501 +Rule_Match_ruby_lang_http_url_using_user_input_6(node1, node4) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), !AST_NodeField(node1, _, "receiver"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "URI"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
     502 +.decl Rule_Match_ruby_lang_http_url_using_user_input_7(node: AST_NodeId, node6: AST_NodeId)
     503 +.output Rule_Match_ruby_lang_http_url_using_user_input_7
     504 +Rule_Match_ruby_lang_http_url_using_user_input_7(node1, node6) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Curl"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "http"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
     505 +.decl Rule_Match_ruby_lang_http_url_using_user_input_8(node: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     506 +.output Rule_Match_ruby_lang_http_url_using_user_input_8
     507 +Rule_Match_ruby_lang_http_url_using_user_input_8(node1, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Curl"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     508 +.decl Rule_Match_ruby_lang_http_url_using_user_input_9(node: AST_NodeId, node5: AST_NodeId, node7: AST_NodeId)
     509 +.output Rule_Match_ruby_lang_http_url_using_user_input_9
     510 +Rule_Match_ruby_lang_http_url_using_user_input_9(node1, node5, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Curl"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Easy"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     511 +.decl Rule_Match_ruby_lang_http_url_using_user_input_10(node: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     512 +.output Rule_Match_ruby_lang_http_url_using_user_input_10
     513 +Rule_Match_ruby_lang_http_url_using_user_input_10(node1, node3, node5) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "url"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
     514 +.decl Rule_Match_ruby_lang_http_url_using_user_input_11(node: AST_NodeId, node5: AST_NodeId, node7: AST_NodeId)
     515 +.output Rule_Match_ruby_lang_http_url_using_user_input_11
     516 +Rule_Match_ruby_lang_http_url_using_user_input_11(node1, node5, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Curl"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Multi"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     517 +.decl Rule_Match_ruby_lang_http_url_using_user_input_12(node: AST_NodeId, node5: AST_NodeId, node7: AST_NodeId)
     518 +.output Rule_Match_ruby_lang_http_url_using_user_input_12
     519 +Rule_Match_ruby_lang_http_url_using_user_input_12(node1, node5, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Curl"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Multi"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     520 +.decl Rule_Match_ruby_lang_http_url_using_user_input_13(node: AST_NodeId, node7: AST_NodeId)
     521 +.output Rule_Match_ruby_lang_http_url_using_user_input_13
     522 +Rule_Match_ruby_lang_http_url_using_user_input_13(node1, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Excon"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Connection"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     523 +.decl Rule_Match_ruby_lang_http_url_using_user_input_14(node: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     524 +.output Rule_Match_ruby_lang_http_url_using_user_input_14
     525 +Rule_Match_ruby_lang_http_url_using_user_input_14(node1, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Excon"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     526 +.decl Rule_Match_ruby_lang_http_url_using_user_input_15(node: AST_NodeId, node3: AST_NodeId, node6: AST_NodeId)
     527 +.output Rule_Match_ruby_lang_http_url_using_user_input_15
     528 +Rule_Match_ruby_lang_http_url_using_user_input_15(node1, node3, node6) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Excon"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "pair"), AST_NodeField(node5, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":path"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "path")), AST_NodeField(node5, node6, "value"), AST_NodeType(node6, _).
     529 +.decl Rule_Match_ruby_lang_http_url_using_user_input_16(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId, node6: AST_NodeId)
     530 +.output Rule_Match_ruby_lang_http_url_using_user_input_16
     531 +Rule_Match_ruby_lang_http_url_using_user_input_16(node1, node2, node3, node6) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "pair"), AST_NodeField(node5, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":path"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "path")), AST_NodeField(node5, node6, "value"), AST_NodeType(node6, _).
     532 +.decl Rule_Match_ruby_lang_http_url_using_user_input_17(node: AST_NodeId, node2: AST_NodeId, node5: AST_NodeId)
     533 +.output Rule_Match_ruby_lang_http_url_using_user_input_17
     534 +Rule_Match_ruby_lang_http_url_using_user_input_17(node1, node2, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "requests"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     535 +.decl Rule_Match_ruby_lang_http_url_using_user_input_18(node: AST_NodeId, node2: AST_NodeId, node5: AST_NodeId)
     536 +.output Rule_Match_ruby_lang_http_url_using_user_input_18
     537 +Rule_Match_ruby_lang_http_url_using_user_input_18(node1, node2, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "get"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     538 +.decl Rule_Match_ruby_lang_http_url_using_user_input_19(node: AST_NodeId, node2: AST_NodeId, node5: AST_NodeId)
     539 +.output Rule_Match_ruby_lang_http_url_using_user_input_19
     540 +Rule_Match_ruby_lang_http_url_using_user_input_19(node1, node2, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "post"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     541 +// rule ruby_lang_http_url_using_user_input_net_http_new
     542 +.decl Rule_Match_ruby_lang_http_url_using_user_input_net_http_new_1(node: AST_NodeId, node5: AST_NodeId)
     543 +.output Rule_Match_ruby_lang_http_url_using_user_input_net_http_new_1
     544 +Rule_Match_ruby_lang_http_url_using_user_input_net_http_new_1(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "HTTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     545 +// rule ruby_rails_logger
     546 +.decl Rule_Match_ruby_rails_logger_0(node: AST_NodeId, node5: AST_NodeId, node7: AST_NodeId)
     547 +.output Rule_Match_ruby_rails_logger_0
     548 +Rule_Match_ruby_rails_logger_0(node1, node5, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Rails"), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "logger"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     549 +// rule ruby_lang_insecure_ftp
     550 +.decl Rule_Match_ruby_lang_insecure_ftp_0(node: AST_NodeId)
     551 +.output Rule_Match_ruby_lang_insecure_ftp_0
     552 +Rule_Match_ruby_lang_insecure_ftp_0(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "FTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
     553 +.decl Rule_Match_ruby_lang_insecure_ftp_1(node: AST_NodeId, node7: AST_NodeId)
     554 +.output Rule_Match_ruby_lang_insecure_ftp_1
     555 +Rule_Match_ruby_lang_insecure_ftp_1(node1, node7) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "FTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "open"), AST_NodeField(node1, node6, "block"), AST_NodeType(node6, "do_block"), !AST_NodeField(node6, _, "parameters"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     556 +.decl Rule_Match_ruby_lang_insecure_ftp_2(node: AST_NodeId)
     557 +.output Rule_Match_ruby_lang_insecure_ftp_2
     558 +Rule_Match_ruby_lang_insecure_ftp_2(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "FTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "open").
     559 +// rule ruby_third_parties_elasticsearch_client
     560 +.decl Rule_Match_ruby_third_parties_elasticsearch_client_0(node: AST_NodeId)
     561 +.output Rule_Match_ruby_third_parties_elasticsearch_client_0
     562 +Rule_Match_ruby_third_parties_elasticsearch_client_0(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Elasticsearch"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Client"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
     563 +.decl Rule_Match_ruby_third_parties_elasticsearch_client_1(node: AST_NodeId)
     564 +.output Rule_Match_ruby_third_parties_elasticsearch_client_1
     565 +Rule_Match_ruby_third_parties_elasticsearch_client_1(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Elasticsearch"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Client"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
     566 +// rule ruby_lang_http_post_insecure_with_data
     567 +.decl Rule_Match_ruby_lang_http_post_insecure_with_data_0(node: AST_NodeId, node7: AST_NodeId, node8: AST_NodeId)
     568 +.output Rule_Match_ruby_lang_http_post_insecure_with_data_0
     569 +Rule_Match_ruby_lang_http_post_insecure_with_data_0(node1, node7, node8) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "HTTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "post_form"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _), AST_ParentChild(node6, 1, node8), AST_NodeType(node8, _).
     570 +.decl Rule_Match_ruby_lang_http_post_insecure_with_data_1(node: AST_NodeId, node2: AST_NodeId, node5: AST_NodeId, node6: AST_NodeId)
     571 +.output Rule_Match_ruby_lang_http_post_insecure_with_data_1
     572 +Rule_Match_ruby_lang_http_post_insecure_with_data_1(node1, node2, node5, node6) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "post"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
     573 +// rule rc4_init
     574 +.decl Rule_Match_rc4_init_0(node: AST_NodeId)
     575 +.output Rule_Match_rc4_init_0
     576 +Rule_Match_rc4_init_0(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "RC4"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "new").
     577 +// rule ruby_rails_password_length
     578 +// rule ruby_lang_reflection_using_user_input
     579 +.decl Rule_Match_ruby_lang_reflection_using_user_input_0(node: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     580 +.output Rule_Match_ruby_lang_reflection_using_user_input_0
     581 +Rule_Match_ruby_lang_reflection_using_user_input_0(node1, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     582 +.decl Rule_Match_ruby_lang_reflection_using_user_input_1(node: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     583 +.output Rule_Match_ruby_lang_reflection_using_user_input_1
     584 +Rule_Match_ruby_lang_reflection_using_user_input_1(node1, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     585 +.decl Rule_Match_ruby_lang_reflection_using_user_input_2(node: AST_NodeId, node2: AST_NodeId, node4: AST_NodeId)
     586 +.output Rule_Match_ruby_lang_reflection_using_user_input_2
     587 +Rule_Match_ruby_lang_reflection_using_user_input_2(node1, node2, node4) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
     588 +.decl Rule_Match_ruby_lang_reflection_using_user_input_3(node: AST_NodeId, node2: AST_NodeId)
     589 +.output Rule_Match_ruby_lang_reflection_using_user_input_3
     590 +Rule_Match_ruby_lang_reflection_using_user_input_3(node1, node2) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "to_proc").
     591 +.decl Rule_Match_ruby_lang_reflection_using_user_input_4(node: AST_NodeId, node5: AST_NodeId)
     592 +.output Rule_Match_ruby_lang_reflection_using_user_input_4
     593 +Rule_Match_ruby_lang_reflection_using_user_input_4(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "block_argument"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     594 +.decl Rule_Match_ruby_lang_reflection_using_user_input_5(node: AST_NodeId, node6: AST_NodeId)
     595 +.output Rule_Match_ruby_lang_reflection_using_user_input_5
     596 +Rule_Match_ruby_lang_reflection_using_user_input_5(node1, node6) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "block_argument"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
     597 +.decl Rule_Match_ruby_lang_reflection_using_user_input_6(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId)
     598 +.output Rule_Match_ruby_lang_reflection_using_user_input_6
     599 +Rule_Match_ruby_lang_reflection_using_user_input_6(node1, node2, node3) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _).
     600 +// rule ruby_third_parties_bigquery_insert_async
     601 +.decl Rule_Match_ruby_third_parties_bigquery_insert_async_0(node: AST_NodeId, node2: AST_NodeId)
     602 +.output Rule_Match_ruby_third_parties_bigquery_insert_async_0
     603 +Rule_Match_ruby_third_parties_bigquery_insert_async_0(node1, node2) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "insert_async").
     604 +.decl Rule_Match_ruby_third_parties_bigquery_insert_async_1(node: AST_NodeId, node2: AST_NodeId)
     605 +.output Rule_Match_ruby_third_parties_bigquery_insert_async_1
     606 +Rule_Match_ruby_third_parties_bigquery_insert_async_1(node1, node2) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "insert_async").
     607 +.decl Rule_Match_ruby_third_parties_bigquery_insert_async_2(node: AST_NodeId, node2: AST_NodeId)
     608 +.output Rule_Match_ruby_third_parties_bigquery_insert_async_2
     609 +Rule_Match_ruby_third_parties_bigquery_insert_async_2(node1, node2) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "insert_async").
     610 +// rule ruby_rails_permissive_regex_validation
     611 +.decl Rule_Match_ruby_rails_permissive_regex_validation_0(node: AST_NodeId, node7: AST_NodeId)
     612 +.output Rule_Match_ruby_rails_permissive_regex_validation_0
     613 +Rule_Match_ruby_rails_permissive_regex_validation_0(node1, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "validates"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "pair"), AST_NodeField(node4, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":format"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "format")), AST_NodeField(node4, node5, "value"), AST_NodeType(node5, "hash"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "pair"), AST_NodeField(node6, tmp1, "key"), (AST_NodeType(tmp1, "simple_symbol"), AST_NodeContent(tmp1, ":with"); AST_NodeType(tmp1, "hash_key_symbol"), AST_NodeContent(tmp1, "with")), AST_NodeField(node6, node7, "value"), AST_NodeType(node7, _).
     614 +.decl Rule_Match_ruby_rails_permissive_regex_validation_1(node: AST_NodeId, node5: AST_NodeId)
     615 +.output Rule_Match_ruby_rails_permissive_regex_validation_1
     616 +Rule_Match_ruby_rails_permissive_regex_validation_1(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "validates_format_of"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "pair"), AST_NodeField(node4, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":with"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "with")), AST_NodeField(node4, node5, "value"), AST_NodeType(node5, _).
     617 +// rule ruby_lang_jwt
     618 +.decl Rule_Match_ruby_lang_jwt_0(node: AST_NodeId, node5: AST_NodeId)
     619 +.output Rule_Match_ruby_lang_jwt_0
     620 +Rule_Match_ruby_lang_jwt_0(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "JWT"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "encode"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     621 +// rule ruby_third_parties_algolia_index
     622 +.decl Rule_Match_ruby_third_parties_algolia_index_0(node: AST_NodeId, node2: AST_NodeId)
     623 +.output Rule_Match_ruby_third_parties_algolia_index_0
     624 +Rule_Match_ruby_third_parties_algolia_index_0(node1, node2) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "init_index").
     625 +// rule ruby_rails_render_using_user_input_user_input
     626 +.decl Rule_Match_ruby_rails_render_using_user_input_user_input_0(node: AST_NodeId)
     627 +.output Rule_Match_ruby_rails_render_using_user_input_user_input_0
     628 +Rule_Match_ruby_rails_render_using_user_input_user_input_0(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     629 +.decl Rule_Match_ruby_rails_render_using_user_input_user_input_1(node: AST_NodeId)
     630 +.output Rule_Match_ruby_rails_render_using_user_input_user_input_1
     631 +Rule_Match_ruby_rails_render_using_user_input_user_input_1(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     632 +.decl Rule_Match_ruby_rails_render_using_user_input_user_input_2(node: AST_NodeId)
     633 +.output Rule_Match_ruby_rails_render_using_user_input_user_input_2
     634 +Rule_Match_ruby_rails_render_using_user_input_user_input_2(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     635 +// rule ruby_lang_eval_using_user_input
     636 +.decl Rule_Match_ruby_lang_eval_using_user_input_0(node: AST_NodeId, node7: AST_NodeId)
     637 +.output Rule_Match_ruby_lang_eval_using_user_input_0
     638 +Rule_Match_ruby_lang_eval_using_user_input_0(node1, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "RubyVM"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "InstructionSequence"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "compile"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     639 +.decl Rule_Match_ruby_lang_eval_using_user_input_1(node: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     640 +.output Rule_Match_ruby_lang_eval_using_user_input_1
     641 +Rule_Match_ruby_lang_eval_using_user_input_1(node1, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     642 +.decl Rule_Match_ruby_lang_eval_using_user_input_2(node: AST_NodeId, node2: AST_NodeId, node4: AST_NodeId)
     643 +.output Rule_Match_ruby_lang_eval_using_user_input_2
     644 +Rule_Match_ruby_lang_eval_using_user_input_2(node1, node2, node4) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
     645 +// rule ruby_third_parties_algolia
     646 +.decl Rule_Match_ruby_third_parties_algolia_0(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     647 +.output Rule_Match_ruby_third_parties_algolia_0
     648 +Rule_Match_ruby_third_parties_algolia_0(node1, node2, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     649 +// rule ruby_third_parties_honeybadger
     650 +.decl Rule_Match_ruby_third_parties_honeybadger_0(node: AST_NodeId, node5: AST_NodeId)
     651 +.output Rule_Match_ruby_third_parties_honeybadger_0
     652 +Rule_Match_ruby_third_parties_honeybadger_0(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Honeybadger"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "notify"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     653 +.decl Rule_Match_ruby_third_parties_honeybadger_1(node: AST_NodeId, node5: AST_NodeId)
     654 +.output Rule_Match_ruby_third_parties_honeybadger_1
     655 +Rule_Match_ruby_third_parties_honeybadger_1(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Honeybadger"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "context"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     656 +.decl Rule_Match_ruby_third_parties_honeybadger_2(node: AST_NodeId, node3: AST_NodeId)
     657 +.output Rule_Match_ruby_third_parties_honeybadger_2
     658 +Rule_Match_ruby_third_parties_honeybadger_2(node1, node3) :- AST_NodeType(node1, "method"), !AST_NodeField(node1, _, "parameters"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "to_honeybadger_context"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, _).
     659 +.decl Rule_Match_ruby_third_parties_honeybadger_3(node: AST_NodeId, node5: AST_NodeId)
     660 +.output Rule_Match_ruby_third_parties_honeybadger_3
     661 +Rule_Match_ruby_third_parties_honeybadger_3(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Honeybadger"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "add_breadcrumb"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     662 +// rule open_telemetry_current_span
     663 +.decl Rule_Match_open_telemetry_current_span_0(node: AST_NodeId)
     664 +.output Rule_Match_open_telemetry_current_span_0
     665 +Rule_Match_open_telemetry_current_span_0(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "OpenTelemetry"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Trace"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "current_span").
     666 +.decl Rule_Match_open_telemetry_current_span_1(node: AST_NodeId)
     667 +.output Rule_Match_open_telemetry_current_span_1
     668 +Rule_Match_open_telemetry_current_span_1(node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "in_span"), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "block"), AST_NodeField(node4, node5, "parameters"), AST_NodeType(node5, "block_parameters"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
     669 +// rule ruby_lang_exec_using_user_input
     670 +.decl Rule_Match_ruby_lang_exec_using_user_input_0(node: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     671 +.output Rule_Match_ruby_lang_exec_using_user_input_0
     672 +Rule_Match_ruby_lang_exec_using_user_input_0(node1, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Kernel"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     673 +.decl Rule_Match_ruby_lang_exec_using_user_input_1(node: AST_NodeId, node2: AST_NodeId, node4: AST_NodeId)
     674 +.output Rule_Match_ruby_lang_exec_using_user_input_1
     675 +Rule_Match_ruby_lang_exec_using_user_input_1(node1, node2, node4) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
     676 +.decl Rule_Match_ruby_lang_exec_using_user_input_2(node: AST_NodeId, node5: AST_NodeId)
     677 +.output Rule_Match_ruby_lang_exec_using_user_input_2
     678 +Rule_Match_ruby_lang_exec_using_user_input_2(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "IO"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "popen"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     679 +.decl Rule_Match_ruby_lang_exec_using_user_input_3(node: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     680 +.output Rule_Match_ruby_lang_exec_using_user_input_3
     681 +Rule_Match_ruby_lang_exec_using_user_input_3(node1, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Process"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     682 +.decl Rule_Match_ruby_lang_exec_using_user_input_4(node: AST_NodeId, node5: AST_NodeId)
     683 +.output Rule_Match_ruby_lang_exec_using_user_input_4
     684 +Rule_Match_ruby_lang_exec_using_user_input_4(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Open3"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     685 +.decl Rule_Match_ruby_lang_exec_using_user_input_5(node: AST_NodeId, node5: AST_NodeId, node7: AST_NodeId)
     686 +.output Rule_Match_ruby_lang_exec_using_user_input_5
     687 +Rule_Match_ruby_lang_exec_using_user_input_5(node1, node5, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Gem"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Util"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     688 +.decl Rule_Match_ruby_lang_exec_using_user_input_6(node: AST_NodeId, node5: AST_NodeId)
     689 +.output Rule_Match_ruby_lang_exec_using_user_input_6
     690 +Rule_Match_ruby_lang_exec_using_user_input_6(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "PTY"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "spawn"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     691 +.decl Rule_Match_ruby_lang_exec_using_user_input_7(node: AST_NodeId, node2: AST_NodeId)
     692 +.output Rule_Match_ruby_lang_exec_using_user_input_7
     693 +Rule_Match_ruby_lang_exec_using_user_input_7(node1, node2) :- AST_NodeType(node1, "subshell"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, _).
     694 +.decl Rule_Match_ruby_lang_exec_using_user_input_8(node: AST_NodeId)
     695 +.output Rule_Match_ruby_lang_exec_using_user_input_8
     696 +Rule_Match_ruby_lang_exec_using_user_input_8(node1) :- AST_NodeType(node1, "subshell"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "string_content"), AST_NodeContent(node2, "{CurioVar0").
     697 +.decl Rule_Match_ruby_lang_exec_using_user_input_9(node: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     698 +.output Rule_Match_ruby_lang_exec_using_user_input_9
     699 +Rule_Match_ruby_lang_exec_using_user_input_9(node1, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Shell"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     700 +.decl Rule_Match_ruby_lang_exec_using_user_input_10(node: AST_NodeId, node5: AST_NodeId, node7: AST_NodeId)
     701 +.output Rule_Match_ruby_lang_exec_using_user_input_10
     702 +Rule_Match_ruby_lang_exec_using_user_input_10(node1, node5, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Shell"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "CommandProcessor"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     703 +.decl Rule_Match_ruby_lang_exec_using_user_input_11(node: AST_NodeId, node2: AST_NodeId, node5: AST_NodeId)
     704 +.output Rule_Match_ruby_lang_exec_using_user_input_11
     705 +Rule_Match_ruby_lang_exec_using_user_input_11(node1, node2, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "system"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     706 +// rule ruby_third_parties_bigquery_client
     707 +.decl Rule_Match_ruby_third_parties_bigquery_client_0(node: AST_NodeId)
     708 +.output Rule_Match_ruby_third_parties_bigquery_client_0
     709 +Rule_Match_ruby_third_parties_bigquery_client_0(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Google"), AST_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Cloud"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Bigquery"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
     710 +.decl Rule_Match_ruby_third_parties_bigquery_client_1(node: AST_NodeId)
     711 +.output Rule_Match_ruby_third_parties_bigquery_client_1
     712 +Rule_Match_ruby_third_parties_bigquery_client_1(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Google"), AST_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Cloud"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Bigquery"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
     713 +// rule ruby_lang_http_url_using_user_input_url_hash
     714 +.decl Rule_Match_ruby_lang_http_url_using_user_input_url_hash_0(node: AST_NodeId, node3: AST_NodeId)
     715 +.output Rule_Match_ruby_lang_http_url_using_user_input_url_hash_0
     716 +Rule_Match_ruby_lang_http_url_using_user_input_url_hash_0(node1, node3) :- AST_NodeType(node1, "hash"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "pair"), AST_NodeField(node2, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":url"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "url")), AST_NodeField(node2, node3, "value"), AST_NodeType(node3, _).
     717 +// rule ruby_lang_http_url_using_user_input_path_hash
     718 +.decl Rule_Match_ruby_lang_http_url_using_user_input_path_hash_0(node: AST_NodeId, node3: AST_NodeId)
     719 +.output Rule_Match_ruby_lang_http_url_using_user_input_path_hash_0
     720 +Rule_Match_ruby_lang_http_url_using_user_input_path_hash_0(node1, node3) :- AST_NodeType(node1, "hash"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "pair"), AST_NodeField(node2, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":path"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "path")), AST_NodeField(node2, node3, "value"), AST_NodeType(node3, _).
     721 +// rule ruby_third_parties_datadog
     722 +.decl Rule_Match_ruby_third_parties_datadog_1(node: AST_NodeId, node2: AST_NodeId, node6: AST_NodeId)
     723 +.output Rule_Match_ruby_third_parties_datadog_1
     724 +Rule_Match_ruby_third_parties_datadog_1(node1, node2, node6) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "set_tag"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
     725 +.decl Rule_Match_ruby_third_parties_datadog_2(node: AST_NodeId, node8: AST_NodeId)
     726 +.output Rule_Match_ruby_third_parties_datadog_2
     727 +Rule_Match_ruby_third_parties_datadog_2(node1, node8) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Datadog"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Tracing"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "trace"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _), AST_ParentChild(node6, 1, node8), AST_NodeType(node8, _).
     728 +// rule ruby_rails_redirect_to
     729 +.decl Rule_Match_ruby_rails_redirect_to_0(node: AST_NodeId, node4: AST_NodeId)
     730 +.output Rule_Match_ruby_rails_redirect_to_0
     731 +Rule_Match_ruby_rails_redirect_to_0(node1, node4) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "redirect_to"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
     732 +// rule ruby_third_parties_bigquery_table
     733 +.decl Rule_Match_ruby_third_parties_bigquery_table_0(node: AST_NodeId, node2: AST_NodeId)
     734 +.output Rule_Match_ruby_third_parties_bigquery_table_0
     735 +Rule_Match_ruby_third_parties_bigquery_table_0(node1, node2) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "table").
     736 +.decl Rule_Match_ruby_third_parties_bigquery_table_1(node: AST_NodeId, node2: AST_NodeId)
     737 +.output Rule_Match_ruby_third_parties_bigquery_table_1
     738 +Rule_Match_ruby_third_parties_bigquery_table_1(node1, node2) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "create_table").
     739 +// rule ruby_third_parties_segment
     740 +.decl Rule_Match_ruby_third_parties_segment_0(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     741 +.output Rule_Match_ruby_third_parties_segment_0
     742 +Rule_Match_ruby_third_parties_segment_0(node1, node2, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     743 +// rule ruby_lang_http_url_using_user_input_curb
     744 +.decl Rule_Match_ruby_lang_http_url_using_user_input_curb_0(node: AST_NodeId)
     745 +.output Rule_Match_ruby_lang_http_url_using_user_input_curb_0
     746 +Rule_Match_ruby_lang_http_url_using_user_input_curb_0(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Curl"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Easy"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
     747 +// rule ruby_lang_exception
     748 +.decl Rule_Match_ruby_lang_exception_0(node: AST_NodeId, node4: AST_NodeId)
     749 +.output Rule_Match_ruby_lang_exception_0
     750 +Rule_Match_ruby_lang_exception_0(node1, node4) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "raise"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
     751 +// rule ruby_lang_ssl_verification
     752 +// rule ruby_lang_regex_using_user_input
     753 +.decl Rule_Match_ruby_lang_regex_using_user_input_0(node: AST_NodeId, node3: AST_NodeId)
     754 +.output Rule_Match_ruby_lang_regex_using_user_input_0
     755 +Rule_Match_ruby_lang_regex_using_user_input_0(node1, node3) :- AST_NodeType(node1, "regex"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "interpolation"), AST_ParentChild(node2, 0, node3), AST_NodeType(node3, _).
     756 +.decl Rule_Match_ruby_lang_regex_using_user_input_1(node: AST_NodeId, node3: AST_NodeId)
     757 +.output Rule_Match_ruby_lang_regex_using_user_input_1
     758 +Rule_Match_ruby_lang_regex_using_user_input_1(node1, node3) :- AST_NodeType(node1, "regex"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "interpolation"), AST_ParentChild(node2, 0, node3), AST_NodeType(node3, _).
     759 +.decl Rule_Match_ruby_lang_regex_using_user_input_2(node: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     760 +.output Rule_Match_ruby_lang_regex_using_user_input_2
     761 +Rule_Match_ruby_lang_regex_using_user_input_2(node1, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Regexp"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     762 +// rule ruby_rails_insecure_communication
     763 +// rule ruby_lang_file_generation_file
     764 +.decl Rule_Match_ruby_lang_file_generation_file_0(node: AST_NodeId)
     765 +.output Rule_Match_ruby_lang_file_generation_file_0
     766 +Rule_Match_ruby_lang_file_generation_file_0(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "CSV"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "generate").
     767 +.decl Rule_Match_ruby_lang_file_generation_file_1(node: AST_NodeId)
     768 +.output Rule_Match_ruby_lang_file_generation_file_1
     769 +Rule_Match_ruby_lang_file_generation_file_1(node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "CSV"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "generate"), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "block"), AST_NodeField(node4, node5, "parameters"), AST_NodeType(node5, "block_parameters"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
     770 +.decl Rule_Match_ruby_lang_file_generation_file_2(node: AST_NodeId)
     771 +.output Rule_Match_ruby_lang_file_generation_file_2
     772 +Rule_Match_ruby_lang_file_generation_file_2(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "CSV"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "open").
     773 +.decl Rule_Match_ruby_lang_file_generation_file_3(node: AST_NodeId)
     774 +.output Rule_Match_ruby_lang_file_generation_file_3
     775 +Rule_Match_ruby_lang_file_generation_file_3(node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "CSV"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "open"), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "block"), AST_NodeField(node4, node5, "parameters"), AST_NodeType(node5, "block_parameters"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
     776 +.decl Rule_Match_ruby_lang_file_generation_file_4(node: AST_NodeId)
     777 +.output Rule_Match_ruby_lang_file_generation_file_4
     778 +Rule_Match_ruby_lang_file_generation_file_4(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "File"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "open").
     779 +.decl Rule_Match_ruby_lang_file_generation_file_5(node: AST_NodeId)
     780 +.output Rule_Match_ruby_lang_file_generation_file_5
     781 +Rule_Match_ruby_lang_file_generation_file_5(node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "File"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "open"), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "block"), AST_NodeField(node4, node5, "parameters"), AST_NodeType(node5, "block_parameters"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
     782 +.decl Rule_Match_ruby_lang_file_generation_file_6(node: AST_NodeId)
     783 +.output Rule_Match_ruby_lang_file_generation_file_6
     784 +Rule_Match_ruby_lang_file_generation_file_6(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "IO"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "open").
     785 +.decl Rule_Match_ruby_lang_file_generation_file_7(node: AST_NodeId)
     786 +.output Rule_Match_ruby_lang_file_generation_file_7
     787 +Rule_Match_ruby_lang_file_generation_file_7(node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "IO"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "open"), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "block"), AST_NodeField(node4, node5, "parameters"), AST_NodeType(node5, "block_parameters"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
     788 +// rule google_dataflow_templates_service_client_init
     789 +.decl Rule_Match_google_dataflow_templates_service_client_init_1(node: AST_NodeId)
     790 +.output Rule_Match_google_dataflow_templates_service_client_init_1
     791 +Rule_Match_google_dataflow_templates_service_client_init_1(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Google"), AST_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Cloud"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Dataflow"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "templates_service").
     792 +// rule ruby_lang_ftp_using_user_input
     793 +.decl Rule_Match_ruby_lang_ftp_using_user_input_0(node: AST_NodeId, node7: AST_NodeId)
     794 +.output Rule_Match_ruby_lang_ftp_using_user_input_0
     795 +Rule_Match_ruby_lang_ftp_using_user_input_0(node1, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "FTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     796 +.decl Rule_Match_ruby_lang_ftp_using_user_input_1(node: AST_NodeId, node7: AST_NodeId)
     797 +.output Rule_Match_ruby_lang_ftp_using_user_input_1
     798 +Rule_Match_ruby_lang_ftp_using_user_input_1(node1, node7) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "FTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "open"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     799 +.decl Rule_Match_ruby_lang_ftp_using_user_input_2(node: AST_NodeId, node2: AST_NodeId, node5: AST_NodeId)
     800 +.output Rule_Match_ruby_lang_ftp_using_user_input_2
     801 +Rule_Match_ruby_lang_ftp_using_user_input_2(node1, node2, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     802 +// rule ruby_third_parties_clickhouse_insert_rows
     803 +// rule ruby_lang_regex_using_user_input_user_input
     804 +.decl Rule_Match_ruby_lang_regex_using_user_input_user_input_0(node: AST_NodeId)
     805 +.output Rule_Match_ruby_lang_regex_using_user_input_user_input_0
     806 +Rule_Match_ruby_lang_regex_using_user_input_user_input_0(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     807 +.decl Rule_Match_ruby_lang_regex_using_user_input_user_input_1(node: AST_NodeId)
     808 +.output Rule_Match_ruby_lang_regex_using_user_input_user_input_1
     809 +Rule_Match_ruby_lang_regex_using_user_input_user_input_1(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     810 +.decl Rule_Match_ruby_lang_regex_using_user_input_user_input_2(node: AST_NodeId)
     811 +.output Rule_Match_ruby_lang_regex_using_user_input_user_input_2
     812 +Rule_Match_ruby_lang_regex_using_user_input_user_input_2(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     813 +.decl Rule_Match_ruby_lang_regex_using_user_input_user_input_3(node: AST_NodeId)
     814 +.output Rule_Match_ruby_lang_regex_using_user_input_user_input_3
     815 +Rule_Match_ruby_lang_regex_using_user_input_user_input_3(node1) :- AST_NodeType(node1, "method"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "parameters"), AST_NodeType(node3, "method_parameters"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "keyword_parameter"), !AST_NodeField(node4, _, "value"), AST_NodeField(node4, node5, "name"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "event"), AST_ParentChild(node3, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "context").
     816 +// rule ruby_third_parties_datadog_span
     817 +.decl Rule_Match_ruby_third_parties_datadog_span_1(node: AST_NodeId)
     818 +.output Rule_Match_ruby_third_parties_datadog_span_1
     819 +Rule_Match_ruby_third_parties_datadog_span_1(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Datadog"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Tracing"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "active_span").
     820 +.decl Rule_Match_ruby_third_parties_datadog_span_2(node: AST_NodeId, node8: AST_NodeId)
     821 +.output Rule_Match_ruby_third_parties_datadog_span_2
     822 +Rule_Match_ruby_third_parties_datadog_span_2(node1, node8) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Datadog"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Tracing"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "trace"), AST_NodeField(node1, node6, "block"), AST_NodeType(node6, "block"), AST_NodeField(node6, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, _).
     823 +// rule ruby_third_parties_open_telemetry
     824 +.decl Rule_Match_ruby_third_parties_open_telemetry_0(node: AST_NodeId, node2: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     825 +.output Rule_Match_ruby_third_parties_open_telemetry_0
     826 +Rule_Match_ruby_third_parties_open_telemetry_0(node1, node2, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     827 +.decl Rule_Match_ruby_third_parties_open_telemetry_1(node: AST_NodeId, node6: AST_NodeId)
     828 +.output Rule_Match_ruby_third_parties_open_telemetry_1
     829 +Rule_Match_ruby_third_parties_open_telemetry_1(node1, node6) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "in_span"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
     830 +// rule google_dataflow_value_classes
     831 +// rule ruby_rails_render_using_user_input_sanitized
     832 +.decl Rule_Match_ruby_rails_render_using_user_input_sanitized_0(node: AST_NodeId, node2: AST_NodeId, node4: AST_NodeId)
     833 +.output Rule_Match_ruby_rails_render_using_user_input_sanitized_0
     834 +Rule_Match_ruby_rails_render_using_user_input_sanitized_0(node1, node2, node4) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
     835 +// rule ruby_third_parties_rollbar
     836 +.decl Rule_Match_ruby_third_parties_rollbar_0(node: AST_NodeId, node5: AST_NodeId)
     837 +.output Rule_Match_ruby_third_parties_rollbar_0
     838 +Rule_Match_ruby_third_parties_rollbar_0(node1, node5) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "rollbar_context"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
     839 +.decl Rule_Match_ruby_third_parties_rollbar_1(node: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     840 +.output Rule_Match_ruby_third_parties_rollbar_1
     841 +Rule_Match_ruby_third_parties_rollbar_1(node1, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Rollbar"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     842 +.decl Rule_Match_ruby_third_parties_rollbar_2(node: AST_NodeId, node6: AST_NodeId)
     843 +.output Rule_Match_ruby_third_parties_rollbar_2
     844 +Rule_Match_ruby_third_parties_rollbar_2(node1, node6) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Rollbar"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "log"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
     845 +.decl Rule_Match_ruby_third_parties_rollbar_3(node: AST_NodeId, node2: AST_NodeId, node5: AST_NodeId)
     846 +.output Rule_Match_ruby_third_parties_rollbar_3
     847 +Rule_Match_ruby_third_parties_rollbar_3(node1, node2, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "scope"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     848 +.decl Rule_Match_ruby_third_parties_rollbar_4(node: AST_NodeId, node5: AST_NodeId)
     849 +.output Rule_Match_ruby_third_parties_rollbar_4
     850 +Rule_Match_ruby_third_parties_rollbar_4(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Rollbar"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "scoped"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     851 +// rule ruby_lang_deserialization_of_user_input_user_input
     852 +.decl Rule_Match_ruby_lang_deserialization_of_user_input_user_input_0(node: AST_NodeId)
     853 +.output Rule_Match_ruby_lang_deserialization_of_user_input_user_input_0
     854 +Rule_Match_ruby_lang_deserialization_of_user_input_user_input_0(node1) :- AST_NodeType(node1, "method"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "parameters"), AST_NodeType(node3, "method_parameters"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "keyword_parameter"), !AST_NodeField(node4, _, "value"), AST_NodeField(node4, node5, "name"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "event"), AST_ParentChild(node3, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "context").
     855 +.decl Rule_Match_ruby_lang_deserialization_of_user_input_user_input_1(node: AST_NodeId, node1: AST_NodeId)
     856 +.output Rule_Match_ruby_lang_deserialization_of_user_input_user_input_1
     857 +Rule_Match_ruby_lang_deserialization_of_user_input_user_input_1(node1, node1) :- AST_NodeType(node1, _).
     858 +// rule ruby_lang_weak_encryption_with_data_blowfish_init
     859 +.decl Rule_Match_ruby_lang_weak_encryption_with_data_blowfish_init_0(node: AST_NodeId)
     860 +.output Rule_Match_ruby_lang_weak_encryption_with_data_blowfish_init_0
     861 +Rule_Match_ruby_lang_weak_encryption_with_data_blowfish_init_0(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Crypt"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Blowfish"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
     862 +// rule ruby_lang_http_get_params
     863 +.decl Rule_Match_ruby_lang_http_get_params_0(node: AST_NodeId, node5: AST_NodeId)
     864 +.output Rule_Match_ruby_lang_http_get_params_0
     865 +Rule_Match_ruby_lang_http_get_params_0(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "URI"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "encode_www_form"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     866 +.decl Rule_Match_ruby_lang_http_get_params_1(node: AST_NodeId, node4: AST_NodeId)
     867 +.output Rule_Match_ruby_lang_http_get_params_1
     868 +Rule_Match_ruby_lang_http_get_params_1(node1, node4) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "URI"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
     869 +.decl Rule_Match_ruby_lang_http_get_params_2(node: AST_NodeId, node2: AST_NodeId, node5: AST_NodeId)
     870 +.output Rule_Match_ruby_lang_http_get_params_2
     871 +Rule_Match_ruby_lang_http_get_params_2(node1, node2, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "get"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     872 +// rule ruby_lang_weak_encryption_with_data_openssl_dsa_init
     873 +.decl Rule_Match_ruby_lang_weak_encryption_with_data_openssl_dsa_init_0(node: AST_NodeId)
     874 +.output Rule_Match_ruby_lang_weak_encryption_with_data_openssl_dsa_init_0
     875 +Rule_Match_ruby_lang_weak_encryption_with_data_openssl_dsa_init_0(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "OpenSSL"), AST_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "PKey"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "DSA"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
     876 +// rule ruby_lang_path_using_user_input_shell_cmd_proc
     877 +.decl Rule_Match_ruby_lang_path_using_user_input_shell_cmd_proc_0(node: AST_NodeId, node2: AST_NodeId)
     878 +.output Rule_Match_ruby_lang_path_using_user_input_shell_cmd_proc_0
     879 +Rule_Match_ruby_lang_path_using_user_input_shell_cmd_proc_0(node1, node2) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "command_processor").
     880 +.decl Rule_Match_ruby_lang_path_using_user_input_shell_cmd_proc_1(node: AST_NodeId)
     881 +.output Rule_Match_ruby_lang_path_using_user_input_shell_cmd_proc_1
     882 +Rule_Match_ruby_lang_path_using_user_input_shell_cmd_proc_1(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Shell"), AST_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "CommandProcessor"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
     883 +// rule ruby_rails_session_key_using_user_input
     884 +.decl Rule_Match_ruby_rails_session_key_using_user_input_0(node: AST_NodeId, node3: AST_NodeId)
     885 +.output Rule_Match_ruby_rails_session_key_using_user_input_0
     886 +Rule_Match_ruby_rails_session_key_using_user_input_0(node1, node3) :- AST_NodeType(node1, "element_reference"), AST_NodeField(node1, node2, "object"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "session"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, _).
     887 +// rule ruby_third_parties_google_dataflow
     888 +.decl Rule_Match_ruby_third_parties_google_dataflow_0(node: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     889 +.output Rule_Match_ruby_third_parties_google_dataflow_0
     890 +Rule_Match_ruby_third_parties_google_dataflow_0(node1, node3, node5) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "message_text"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
     891 +.decl Rule_Match_ruby_third_parties_google_dataflow_1(node: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     892 +.output Rule_Match_ruby_third_parties_google_dataflow_1
     893 +Rule_Match_ruby_third_parties_google_dataflow_1(node1, node3, node5) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "description"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
     894 +.decl Rule_Match_ruby_third_parties_google_dataflow_2(node: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     895 +.output Rule_Match_ruby_third_parties_google_dataflow_2
     896 +Rule_Match_ruby_third_parties_google_dataflow_2(node1, node3, node5) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "value"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
     897 +.decl Rule_Match_ruby_third_parties_google_dataflow_3(node: AST_NodeId, node2: AST_NodeId, node5: AST_NodeId)
     898 +.output Rule_Match_ruby_third_parties_google_dataflow_3
     899 +Rule_Match_ruby_third_parties_google_dataflow_3(node1, node2, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "create_job_from_template"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     900 +.decl Rule_Match_ruby_third_parties_google_dataflow_4(node: AST_NodeId, node3: AST_NodeId, node4: AST_NodeId, node5: AST_NodeId)
     901 +.output Rule_Match_ruby_third_parties_google_dataflow_4
     902 +Rule_Match_ruby_third_parties_google_dataflow_4(node1, node3, node4, node5) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, _), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
     903 +.decl Rule_Match_ruby_third_parties_google_dataflow_5(node: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     904 +.output Rule_Match_ruby_third_parties_google_dataflow_5
     905 +Rule_Match_ruby_third_parties_google_dataflow_5(node1, node3, node5) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "metadata"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
     906 +// rule ruby_lang_weak_encryption_with_data_rc4_init
     907 +.decl Rule_Match_ruby_lang_weak_encryption_with_data_rc4_init_0(node: AST_NodeId)
     908 +.output Rule_Match_ruby_lang_weak_encryption_with_data_rc4_init_0
     909 +Rule_Match_ruby_lang_weak_encryption_with_data_rc4_init_0(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "RC4"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "new").
     910 +// rule ruby_lang_logger
     911 +.decl Rule_Match_ruby_lang_logger_0(node: AST_NodeId, node3: AST_NodeId, node5: AST_NodeId)
     912 +.output Rule_Match_ruby_lang_logger_0
     913 +Rule_Match_ruby_lang_logger_0(node1, node3, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "logger"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     914 +// rule ruby_third_parties_bigquery
     915 +.decl Rule_Match_ruby_third_parties_bigquery_0(node: AST_NodeId, node2: AST_NodeId, node5: AST_NodeId)
     916 +.output Rule_Match_ruby_third_parties_bigquery_0
     917 +Rule_Match_ruby_third_parties_bigquery_0(node1, node2, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "insert"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     918 +// rule ruby_lang_path_using_user_input_shell
     919 +.decl Rule_Match_ruby_lang_path_using_user_input_shell_0(node: AST_NodeId)
     920 +.output Rule_Match_ruby_lang_path_using_user_input_shell_0
     921 +Rule_Match_ruby_lang_path_using_user_input_shell_0(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Shell"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "new").
     922 +// rule ruby_rails_session_key_using_user_input_user_input
     923 +.decl Rule_Match_ruby_rails_session_key_using_user_input_user_input_0(node: AST_NodeId)
     924 +.output Rule_Match_ruby_rails_session_key_using_user_input_user_input_0
     925 +Rule_Match_ruby_rails_session_key_using_user_input_user_input_0(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     926 +.decl Rule_Match_ruby_rails_session_key_using_user_input_user_input_1(node: AST_NodeId)
     927 +.output Rule_Match_ruby_rails_session_key_using_user_input_user_input_1
     928 +Rule_Match_ruby_rails_session_key_using_user_input_user_input_1(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     929 +.decl Rule_Match_ruby_rails_session_key_using_user_input_user_input_2(node: AST_NodeId)
     930 +.output Rule_Match_ruby_rails_session_key_using_user_input_user_input_2
     931 +Rule_Match_ruby_rails_session_key_using_user_input_user_input_2(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     932 +// rule ruby_third_parties_bugsnag
     933 +.decl Rule_Match_ruby_third_parties_bugsnag_1(node: AST_NodeId, node5: AST_NodeId)
     934 +.output Rule_Match_ruby_third_parties_bugsnag_1
     935 +Rule_Match_ruby_third_parties_bugsnag_1(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Bugsnag"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "leave_breadcrumb"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     936 +.decl Rule_Match_ruby_third_parties_bugsnag_2(node: AST_NodeId, node5: AST_NodeId)
     937 +.output Rule_Match_ruby_third_parties_bugsnag_2
     938 +Rule_Match_ruby_third_parties_bugsnag_2(node1, node5) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Bugsnag"), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "notify"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
    492 939   
  • ■ ■ ■ ■ ■ ■
    souffle/rules.dl
    skipped 5 lines
    6 6  .type Rule_PatternIndex <: unsigned
    7 7   
    8 8   
    9  -.decl Rule(rule: Rule_Name, patternIndex: Rule_PatternIndex, node: AST_NodeId)
    10  - 
    11  - 
    12  -.decl Rule_Match(rule: Rule_Name, patternIndex: Rule_PatternIndex, node: AST_NodeId, location: AST_Location)
    13  -.output Rule_Match
    14  - 
    15  -Rule_Match(rule, patternIndex, node, location) :- Rule(rule, patternIndex, node), AST_NodeLocation(node, location).
    16  - 
    17  - 
    18  -// .decl Rule_MatchVariable(rule: Rule_Name, node: AST_Node, variable: Rule_VariableName, variableNode: AST_Node)
    19  -// .output Rule_MatchVariable
    20  - 
    21  -// Rule_MatchVariable(rule, node, variable, variableNode) :- Rule(rule, node), AST_NodeLocation(node, location).
    22  - 
    23  - 
    24 9  #include "./generated/rules.dl"
    25 10   
Please wait...
Page is in error, reload to recover