How to use Not class

Best Mockery code snippet using Not

Fips181Generator.php

Source:Fips181Generator.php Github

copy

Full Screen

1<?php2namespace TweedeGolf\GeneratorBundle\Generator\Password;3use Symfony\Component\Security\Core\Util\SecureRandomInterface;4class Fips181Generator extends AbstractPasswordGenerator5{6    // flags7    const MAX_UNACCEPTABLE   = 20;8    // gram rules:9    const NOT_BEGIN_SYLLABLE = 0x08;10    const NO_FINAL_SPLIT     = 0x04;11    const VOWEL              = 0x02;12    const ALTERNATE_VOWEL    = 0x01;13    const NO_SPECIAL_RULE    = 0x00;14    // digram rules:15    const BEGIN              = 0x80;16    const NOT_BEGIN          = 0x40;17    const BREAK_GRAM         = 0x40;18    const PREFIX             = 0x20;19    const ILLEGAL_PAIR       = 0x10;20    const SUFFIX             = 0x04;21    const END                = 0x02;22    const NOT_END            = 0x01;23    const ANY_COMBINATION    = 0x00;24    private $grams;25    private $vowelGrams;26    private $gramRules;27    private $digramRules;28    private $separator;29    public function __construct(SecureRandomInterface $rng, $separator = '-')30    {31        parent::__construct($rng);32        $this->setSeparator($separator);33        $this->grams = [34            'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',35            'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u',36            'v', 'w', 'x', 'y', 'z', 'ch', 'gh', 'ph', 'rh',37            'sh', 'th', 'wh', 'qu', 'ck',38        ];39        $this->vowelGrams = [40            'a', 'e', 'i', 'o', 'u', 'y',41        ];42        $this->generateGramRules();43        $this->generateDigramRules();44    }45    public function generateGramRules()46    {47        // gram rules48        $this->gramRules = [];49        foreach ($this->grams as $gram) {50            $this->gramRules[$gram] = self::NO_SPECIAL_RULE;51        }52        foreach ($this->vowelGrams as $gram) {53            $this->gramRules[$gram] = self::VOWEL;54        }55        $this->gramRules['e'] |= self::NO_FINAL_SPLIT;56        $this->gramRules['y'] |= self::ALTERNATE_VOWEL;57        $this->gramRules['x'] = self::NOT_BEGIN_SYLLABLE;58        $this->gramRules['ck'] = self::NOT_BEGIN_SYLLABLE;59    }60    public function generateDigramRules()61    {62        // digram rules63        $this->digramRules = [];64        $this->digramRules['a'] = [];65        $this->digramRules['a']['a'] = self::ILLEGAL_PAIR;66        $this->digramRules['a']['b'] = self::ANY_COMBINATION;67        $this->digramRules['a']['c'] = self::ANY_COMBINATION;68        $this->digramRules['a']['d'] = self::ANY_COMBINATION;69        $this->digramRules['a']['e'] = self::ILLEGAL_PAIR;70        $this->digramRules['a']['f'] = self::ANY_COMBINATION;71        $this->digramRules['a']['g'] = self::ANY_COMBINATION;72        $this->digramRules['a']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;73        $this->digramRules['a']['i'] = self::ANY_COMBINATION;74        $this->digramRules['a']['j'] = self::ANY_COMBINATION;75        $this->digramRules['a']['k'] = self::ANY_COMBINATION;76        $this->digramRules['a']['l'] = self::ANY_COMBINATION;77        $this->digramRules['a']['m'] = self::ANY_COMBINATION;78        $this->digramRules['a']['n'] = self::ANY_COMBINATION;79        $this->digramRules['a']['o'] = self::ILLEGAL_PAIR;80        $this->digramRules['a']['p'] = self::ANY_COMBINATION;81        $this->digramRules['a']['r'] = self::ANY_COMBINATION;82        $this->digramRules['a']['s'] = self::ANY_COMBINATION;83        $this->digramRules['a']['t'] = self::ANY_COMBINATION;84        $this->digramRules['a']['u'] = self::ANY_COMBINATION;85        $this->digramRules['a']['v'] = self::ANY_COMBINATION;86        $this->digramRules['a']['w'] = self::ANY_COMBINATION;87        $this->digramRules['a']['x'] = self::ANY_COMBINATION;88        $this->digramRules['a']['y'] = self::ANY_COMBINATION;89        $this->digramRules['a']['z'] = self::ANY_COMBINATION;90        $this->digramRules['a']['ch'] = self::ANY_COMBINATION;91        $this->digramRules['a']['gh'] = self::ILLEGAL_PAIR;92        $this->digramRules['a']['ph'] = self::ANY_COMBINATION;93        $this->digramRules['a']['rh'] = self::ILLEGAL_PAIR;94        $this->digramRules['a']['sh'] = self::ANY_COMBINATION;95        $this->digramRules['a']['th'] = self::ANY_COMBINATION;96        $this->digramRules['a']['wh'] = self::ILLEGAL_PAIR;97        $this->digramRules['a']['qu'] = self::BREAK_GRAM | self::NOT_END;98        $this->digramRules['a']['ck'] = self::ANY_COMBINATION;99        $this->digramRules['b'] = [];100        $this->digramRules['b']['a'] = self::ANY_COMBINATION;101        $this->digramRules['b']['b'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;102        $this->digramRules['b']['c'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;103        $this->digramRules['b']['d'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;104        $this->digramRules['b']['e'] = self::ANY_COMBINATION;105        $this->digramRules['b']['f'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;106        $this->digramRules['b']['g'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;107        $this->digramRules['b']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;108        $this->digramRules['b']['i'] = self::ANY_COMBINATION;109        $this->digramRules['b']['j'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;110        $this->digramRules['b']['k'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;111        $this->digramRules['b']['l'] = self::BEGIN | self::SUFFIX | self::NOT_END;112        $this->digramRules['b']['m'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;113        $this->digramRules['b']['n'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;114        $this->digramRules['b']['o'] = self::ANY_COMBINATION;115        $this->digramRules['b']['p'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;116        $this->digramRules['b']['r'] = self::BEGIN | self::END;117        $this->digramRules['b']['s'] = self::NOT_BEGIN;118        $this->digramRules['b']['t'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;119        $this->digramRules['b']['u'] = self::ANY_COMBINATION;120        $this->digramRules['b']['v'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;121        $this->digramRules['b']['w'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;122        $this->digramRules['b']['x'] = self::ILLEGAL_PAIR;123        $this->digramRules['b']['y'] = self::ANY_COMBINATION;124        $this->digramRules['b']['z'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;125        $this->digramRules['b']['ch'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;126        $this->digramRules['b']['gh'] = self::ILLEGAL_PAIR;127        $this->digramRules['b']['ph'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;128        $this->digramRules['b']['rh'] = self::ILLEGAL_PAIR;129        $this->digramRules['b']['sh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;130        $this->digramRules['b']['th'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;131        $this->digramRules['b']['wh'] = self::ILLEGAL_PAIR;132        $this->digramRules['b']['qu'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;133        $this->digramRules['b']['ck'] = self::ILLEGAL_PAIR;134        $this->digramRules['c'] = [];135        $this->digramRules['c']['a'] = self::ANY_COMBINATION;136        $this->digramRules['c']['b'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;137        $this->digramRules['c']['c'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;138        $this->digramRules['c']['d'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;139        $this->digramRules['c']['e'] = self::ANY_COMBINATION;140        $this->digramRules['c']['f'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;141        $this->digramRules['c']['g'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;142        $this->digramRules['c']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;143        $this->digramRules['c']['i'] = self::ANY_COMBINATION;144        $this->digramRules['c']['j'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;145        $this->digramRules['c']['k'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;146        $this->digramRules['c']['l'] = self::SUFFIX | self::NOT_END;147        $this->digramRules['c']['m'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;148        $this->digramRules['c']['n'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;149        $this->digramRules['c']['o'] = self::ANY_COMBINATION;150        $this->digramRules['c']['p'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;151        $this->digramRules['c']['r'] = self::NOT_END;152        $this->digramRules['c']['s'] = self::NOT_BEGIN | self::END;153        $this->digramRules['c']['t'] = self::NOT_BEGIN | self::PREFIX;154        $this->digramRules['c']['u'] = self::ANY_COMBINATION;155        $this->digramRules['c']['v'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;156        $this->digramRules['c']['w'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;157        $this->digramRules['c']['x'] = self::ILLEGAL_PAIR;158        $this->digramRules['c']['y'] = self::ANY_COMBINATION;159        $this->digramRules['c']['z'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;160        $this->digramRules['c']['ch'] = self::ILLEGAL_PAIR;161        $this->digramRules['c']['gh'] = self::ILLEGAL_PAIR;162        $this->digramRules['c']['ph'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;163        $this->digramRules['c']['rh'] = self::ILLEGAL_PAIR;164        $this->digramRules['c']['sh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;165        $this->digramRules['c']['th'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;166        $this->digramRules['c']['wh'] = self::ILLEGAL_PAIR;167        $this->digramRules['c']['qu'] = self::NOT_BEGIN | self::SUFFIX | self::NOT_END;168        $this->digramRules['c']['ck'] = self::ILLEGAL_PAIR;169        $this->digramRules['d'] = [];170        $this->digramRules['d']['a'] = self::ANY_COMBINATION;171        $this->digramRules['d']['b'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;172        $this->digramRules['d']['c'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;173        $this->digramRules['d']['d'] = self::NOT_BEGIN;174        $this->digramRules['d']['e'] = self::ANY_COMBINATION;175        $this->digramRules['d']['f'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;176        $this->digramRules['d']['g'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;177        $this->digramRules['d']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;178        $this->digramRules['d']['i'] = self::ANY_COMBINATION;179        $this->digramRules['d']['j'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;180        $this->digramRules['d']['k'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;181        $this->digramRules['d']['l'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;182        $this->digramRules['d']['m'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;183        $this->digramRules['d']['n'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;184        $this->digramRules['d']['o'] = self::ANY_COMBINATION;185        $this->digramRules['d']['p'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;186        $this->digramRules['d']['r'] = self::BEGIN | self::NOT_END;187        $this->digramRules['d']['s'] = self::NOT_BEGIN | self::END;188        $this->digramRules['d']['t'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;189        $this->digramRules['d']['u'] = self::ANY_COMBINATION;190        $this->digramRules['d']['v'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;191        $this->digramRules['d']['w'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;192        $this->digramRules['d']['x'] = self::ILLEGAL_PAIR;193        $this->digramRules['d']['y'] = self::ANY_COMBINATION;194        $this->digramRules['d']['z'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;195        $this->digramRules['d']['ch'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;196        $this->digramRules['d']['gh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;197        $this->digramRules['d']['ph'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;198        $this->digramRules['d']['rh'] = self::ILLEGAL_PAIR;199        $this->digramRules['d']['sh'] = self::NOT_BEGIN | self::NOT_END;200        $this->digramRules['d']['th'] = self::NOT_BEGIN | self::PREFIX;201        $this->digramRules['d']['wh'] = self::ILLEGAL_PAIR;202        $this->digramRules['d']['qu'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;203        $this->digramRules['d']['ck'] = self::ILLEGAL_PAIR;204        $this->digramRules['e'] = [];205        $this->digramRules['e']['a'] = self::ANY_COMBINATION;206        $this->digramRules['e']['b'] = self::ANY_COMBINATION;207        $this->digramRules['e']['c'] = self::ANY_COMBINATION;208        $this->digramRules['e']['d'] = self::ANY_COMBINATION;209        $this->digramRules['e']['e'] = self::ANY_COMBINATION;210        $this->digramRules['e']['f'] = self::ANY_COMBINATION;211        $this->digramRules['e']['g'] = self::ANY_COMBINATION;212        $this->digramRules['e']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;213        $this->digramRules['e']['i'] = self::NOT_END;214        $this->digramRules['e']['j'] = self::ANY_COMBINATION;215        $this->digramRules['e']['k'] = self::ANY_COMBINATION;216        $this->digramRules['e']['l'] = self::ANY_COMBINATION;217        $this->digramRules['e']['m'] = self::ANY_COMBINATION;218        $this->digramRules['e']['n'] = self::ANY_COMBINATION;219        $this->digramRules['e']['o'] = self::BREAK_GRAM;220        $this->digramRules['e']['p'] = self::ANY_COMBINATION;221        $this->digramRules['e']['r'] = self::ANY_COMBINATION;222        $this->digramRules['e']['s'] = self::ANY_COMBINATION;223        $this->digramRules['e']['t'] = self::ANY_COMBINATION;224        $this->digramRules['e']['u'] = self::ANY_COMBINATION;225        $this->digramRules['e']['v'] = self::ANY_COMBINATION;226        $this->digramRules['e']['w'] = self::ANY_COMBINATION;227        $this->digramRules['e']['x'] = self::ANY_COMBINATION;228        $this->digramRules['e']['y'] = self::ANY_COMBINATION;229        $this->digramRules['e']['z'] = self::ANY_COMBINATION;230        $this->digramRules['e']['ch'] = self::ANY_COMBINATION;231        $this->digramRules['e']['gh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;232        $this->digramRules['e']['ph'] = self::ANY_COMBINATION;233        $this->digramRules['e']['rh'] = self::ILLEGAL_PAIR;234        $this->digramRules['e']['sh'] = self::ANY_COMBINATION;235        $this->digramRules['e']['th'] = self::ANY_COMBINATION;236        $this->digramRules['e']['wh'] = self::ILLEGAL_PAIR;237        $this->digramRules['e']['qu'] = self::BREAK_GRAM | self::NOT_END;238        $this->digramRules['e']['ck'] = self::ANY_COMBINATION;239        $this->digramRules['f'] = [];240        $this->digramRules['f']['a'] = self::ANY_COMBINATION;241        $this->digramRules['f']['b'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;242        $this->digramRules['f']['c'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;243        $this->digramRules['f']['d'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;244        $this->digramRules['f']['e'] = self::ANY_COMBINATION;245        $this->digramRules['f']['f'] = self::NOT_BEGIN;246        $this->digramRules['f']['g'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;247        $this->digramRules['f']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;248        $this->digramRules['f']['i'] = self::ANY_COMBINATION;249        $this->digramRules['f']['j'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;250        $this->digramRules['f']['k'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;251        $this->digramRules['f']['l'] = self::BEGIN | self::SUFFIX | self::NOT_END;252        $this->digramRules['f']['m'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;253        $this->digramRules['f']['n'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;254        $this->digramRules['f']['o'] = self::ANY_COMBINATION;255        $this->digramRules['f']['p'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;256        $this->digramRules['f']['r'] = self::BEGIN | self::NOT_END;257        $this->digramRules['f']['s'] = self::NOT_BEGIN;258        $this->digramRules['f']['t'] = self::NOT_BEGIN;259        $this->digramRules['f']['u'] = self::ANY_COMBINATION;260        $this->digramRules['f']['v'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;261        $this->digramRules['f']['w'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;262        $this->digramRules['f']['x'] = self::ILLEGAL_PAIR;263        $this->digramRules['f']['y'] = self::NOT_BEGIN;264        $this->digramRules['f']['z'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;265        $this->digramRules['f']['ch'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;266        $this->digramRules['f']['gh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;267        $this->digramRules['f']['ph'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;268        $this->digramRules['f']['rh'] = self::ILLEGAL_PAIR;269        $this->digramRules['f']['sh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;270        $this->digramRules['f']['th'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;271        $this->digramRules['f']['wh'] = self::ILLEGAL_PAIR;272        $this->digramRules['f']['qu'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;273        $this->digramRules['f']['ck'] = self::ILLEGAL_PAIR;274        $this->digramRules['g'] = [];275        $this->digramRules['g']['a'] = self::ANY_COMBINATION;276        $this->digramRules['g']['b'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;277        $this->digramRules['g']['c'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;278        $this->digramRules['g']['d'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;279        $this->digramRules['g']['e'] = self::ANY_COMBINATION;280        $this->digramRules['g']['f'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;281        $this->digramRules['g']['g'] = self::NOT_BEGIN;282        $this->digramRules['g']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;283        $this->digramRules['g']['i'] = self::ANY_COMBINATION;284        $this->digramRules['g']['j'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;285        $this->digramRules['g']['k'] = self::ILLEGAL_PAIR;286        $this->digramRules['g']['l'] = self::BEGIN | self::SUFFIX | self::NOT_END;287        $this->digramRules['g']['m'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;288        $this->digramRules['g']['n'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;289        $this->digramRules['g']['o'] = self::ANY_COMBINATION;290        $this->digramRules['g']['p'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;291        $this->digramRules['g']['r'] = self::BEGIN | self::NOT_END;292        $this->digramRules['g']['s'] = self::NOT_BEGIN | self::END;293        $this->digramRules['g']['t'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;294        $this->digramRules['g']['u'] = self::ANY_COMBINATION;295        $this->digramRules['g']['v'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;296        $this->digramRules['g']['w'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;297        $this->digramRules['g']['x'] = self::ILLEGAL_PAIR;298        $this->digramRules['g']['y'] = self::NOT_BEGIN;299        $this->digramRules['g']['z'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;300        $this->digramRules['g']['ch'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;301        $this->digramRules['g']['gh'] = self::ILLEGAL_PAIR;302        $this->digramRules['g']['ph'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;303        $this->digramRules['g']['rh'] = self::ILLEGAL_PAIR;304        $this->digramRules['g']['sh'] = self::NOT_BEGIN;305        $this->digramRules['g']['th'] = self::NOT_BEGIN;306        $this->digramRules['g']['wh'] = self::ILLEGAL_PAIR;307        $this->digramRules['g']['qu'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;308        $this->digramRules['g']['ck'] = self::ILLEGAL_PAIR;309        $this->digramRules['h'] = [];310        $this->digramRules['h']['a'] = self::ANY_COMBINATION;311        $this->digramRules['h']['b'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;312        $this->digramRules['h']['c'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;313        $this->digramRules['h']['d'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;314        $this->digramRules['h']['e'] = self::ANY_COMBINATION;315        $this->digramRules['h']['f'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;316        $this->digramRules['h']['g'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;317        $this->digramRules['h']['h'] = self::ILLEGAL_PAIR;318        $this->digramRules['h']['i'] = self::ANY_COMBINATION;319        $this->digramRules['h']['j'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;320        $this->digramRules['h']['k'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;321        $this->digramRules['h']['l'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;322        $this->digramRules['h']['m'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;323        $this->digramRules['h']['n'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;324        $this->digramRules['h']['o'] = self::ANY_COMBINATION;325        $this->digramRules['h']['p'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;326        $this->digramRules['h']['r'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;327        $this->digramRules['h']['s'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;328        $this->digramRules['h']['t'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;329        $this->digramRules['h']['u'] = self::ANY_COMBINATION;330        $this->digramRules['h']['v'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;331        $this->digramRules['h']['w'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;332        $this->digramRules['h']['x'] = self::ILLEGAL_PAIR;333        $this->digramRules['h']['y'] = self::ANY_COMBINATION;334        $this->digramRules['h']['z'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;335        $this->digramRules['h']['ch'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;336        $this->digramRules['h']['gh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;337        $this->digramRules['h']['ph'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;338        $this->digramRules['h']['rh'] = self::ILLEGAL_PAIR;339        $this->digramRules['h']['sh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;340        $this->digramRules['h']['th'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;341        $this->digramRules['h']['wh'] = self::ILLEGAL_PAIR;342        $this->digramRules['h']['qu'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;343        $this->digramRules['h']['ck'] = self::ILLEGAL_PAIR;344        $this->digramRules['i'] = [];345        $this->digramRules['i']['a'] = self::ANY_COMBINATION;346        $this->digramRules['i']['b'] = self::ANY_COMBINATION;347        $this->digramRules['i']['c'] = self::ANY_COMBINATION;348        $this->digramRules['i']['d'] = self::ANY_COMBINATION;349        $this->digramRules['i']['e'] = self::NOT_BEGIN;350        $this->digramRules['i']['f'] = self::ANY_COMBINATION;351        $this->digramRules['i']['g'] = self::ANY_COMBINATION;352        $this->digramRules['i']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;353        $this->digramRules['i']['i'] = self::ILLEGAL_PAIR;354        $this->digramRules['i']['j'] = self::ANY_COMBINATION;355        $this->digramRules['i']['k'] = self::ANY_COMBINATION;356        $this->digramRules['i']['l'] = self::ANY_COMBINATION;357        $this->digramRules['i']['m'] = self::ANY_COMBINATION;358        $this->digramRules['i']['n'] = self::ANY_COMBINATION;359        $this->digramRules['i']['o'] = self::BREAK_GRAM;360        $this->digramRules['i']['p'] = self::ANY_COMBINATION;361        $this->digramRules['i']['r'] = self::ANY_COMBINATION;362        $this->digramRules['i']['s'] = self::ANY_COMBINATION;363        $this->digramRules['i']['t'] = self::ANY_COMBINATION;364        $this->digramRules['i']['u'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;365        $this->digramRules['i']['v'] = self::ANY_COMBINATION;366        $this->digramRules['i']['w'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;367        $this->digramRules['i']['x'] = self::ANY_COMBINATION;368        $this->digramRules['i']['y'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;369        $this->digramRules['i']['z'] = self::ANY_COMBINATION;370        $this->digramRules['i']['ch'] = self::ANY_COMBINATION;371        $this->digramRules['i']['gh'] = self::NOT_BEGIN;372        $this->digramRules['i']['ph'] = self::ANY_COMBINATION;373        $this->digramRules['i']['rh'] = self::ILLEGAL_PAIR;374        $this->digramRules['i']['sh'] = self::ANY_COMBINATION;375        $this->digramRules['i']['th'] = self::ANY_COMBINATION;376        $this->digramRules['i']['wh'] = self::ILLEGAL_PAIR;377        $this->digramRules['i']['qu'] = self::BREAK_GRAM | self::NOT_END;378        $this->digramRules['i']['ck'] = self::ANY_COMBINATION;379        $this->digramRules['j'] = [];380        $this->digramRules['j']['a'] = self::ANY_COMBINATION;381        $this->digramRules['j']['b'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;382        $this->digramRules['j']['c'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;383        $this->digramRules['j']['d'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;384        $this->digramRules['j']['e'] = self::ANY_COMBINATION;385        $this->digramRules['j']['f'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;386        $this->digramRules['j']['g'] = self::ILLEGAL_PAIR;387        $this->digramRules['j']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;388        $this->digramRules['j']['i'] = self::ANY_COMBINATION;389        $this->digramRules['j']['j'] = self::ILLEGAL_PAIR;390        $this->digramRules['j']['k'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;391        $this->digramRules['j']['l'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;392        $this->digramRules['j']['m'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;393        $this->digramRules['j']['n'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;394        $this->digramRules['j']['o'] = self::ANY_COMBINATION;395        $this->digramRules['j']['p'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;396        $this->digramRules['j']['r'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;397        $this->digramRules['j']['s'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;398        $this->digramRules['j']['t'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;399        $this->digramRules['j']['u'] = self::ANY_COMBINATION;400        $this->digramRules['j']['v'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;401        $this->digramRules['j']['w'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;402        $this->digramRules['j']['x'] = self::ILLEGAL_PAIR;403        $this->digramRules['j']['y'] = self::NOT_BEGIN;404        $this->digramRules['j']['z'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;405        $this->digramRules['j']['ch'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;406        $this->digramRules['j']['gh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;407        $this->digramRules['j']['ph'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;408        $this->digramRules['j']['rh'] = self::ILLEGAL_PAIR;409        $this->digramRules['j']['sh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;410        $this->digramRules['j']['th'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;411        $this->digramRules['j']['wh'] = self::ILLEGAL_PAIR;412        $this->digramRules['j']['qu'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;413        $this->digramRules['j']['ck'] = self::ILLEGAL_PAIR;414        $this->digramRules['k'] = [];415        $this->digramRules['k']['a'] = self::ANY_COMBINATION;416        $this->digramRules['k']['b'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;417        $this->digramRules['k']['c'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;418        $this->digramRules['k']['d'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;419        $this->digramRules['k']['e'] = self::ANY_COMBINATION;420        $this->digramRules['k']['f'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;421        $this->digramRules['k']['g'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;422        $this->digramRules['k']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;423        $this->digramRules['k']['i'] = self::ANY_COMBINATION;424        $this->digramRules['k']['j'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;425        $this->digramRules['k']['k'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;426        $this->digramRules['k']['l'] = self::SUFFIX | self::NOT_END;427        $this->digramRules['k']['m'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;428        $this->digramRules['k']['n'] = self::BEGIN | self::SUFFIX | self::NOT_END;429        $this->digramRules['k']['o'] = self::ANY_COMBINATION;430        $this->digramRules['k']['p'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;431        $this->digramRules['k']['r'] = self::SUFFIX | self::NOT_END;432        $this->digramRules['k']['s'] = self::NOT_BEGIN | self::END;433        $this->digramRules['k']['t'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;434        $this->digramRules['k']['u'] = self::ANY_COMBINATION;435        $this->digramRules['k']['v'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;436        $this->digramRules['k']['w'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;437        $this->digramRules['k']['x'] = self::ILLEGAL_PAIR;438        $this->digramRules['k']['y'] = self::NOT_BEGIN;439        $this->digramRules['k']['z'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;440        $this->digramRules['k']['ch'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;441        $this->digramRules['k']['gh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;442        $this->digramRules['k']['ph'] = self::NOT_BEGIN | self::PREFIX;443        $this->digramRules['k']['rh'] = self::ILLEGAL_PAIR;444        $this->digramRules['k']['sh'] = self::NOT_BEGIN;445        $this->digramRules['k']['th'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;446        $this->digramRules['k']['wh'] = self::ILLEGAL_PAIR;447        $this->digramRules['k']['qu'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;448        $this->digramRules['k']['ck'] = self::ILLEGAL_PAIR;449        $this->digramRules['l'] = [];450        $this->digramRules['l']['a'] = self::ANY_COMBINATION;451        $this->digramRules['l']['b'] = self::NOT_BEGIN | self::PREFIX;452        $this->digramRules['l']['c'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;453        $this->digramRules['l']['d'] = self::NOT_BEGIN | self::PREFIX;454        $this->digramRules['l']['e'] = self::ANY_COMBINATION;455        $this->digramRules['l']['f'] = self::NOT_BEGIN | self::PREFIX;456        $this->digramRules['l']['g'] = self::NOT_BEGIN | self::PREFIX;457        $this->digramRules['l']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;458        $this->digramRules['l']['i'] = self::ANY_COMBINATION;459        $this->digramRules['l']['j'] = self::NOT_BEGIN | self::PREFIX;460        $this->digramRules['l']['k'] = self::NOT_BEGIN | self::PREFIX;461        $this->digramRules['l']['l'] = self::NOT_BEGIN | self::PREFIX;462        $this->digramRules['l']['m'] = self::NOT_BEGIN | self::PREFIX;463        $this->digramRules['l']['n'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;464        $this->digramRules['l']['o'] = self::ANY_COMBINATION;465        $this->digramRules['l']['p'] = self::NOT_BEGIN | self::PREFIX;466        $this->digramRules['l']['r'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;467        $this->digramRules['l']['s'] = self::NOT_BEGIN;468        $this->digramRules['l']['t'] = self::NOT_BEGIN | self::PREFIX;469        $this->digramRules['l']['u'] = self::ANY_COMBINATION;470        $this->digramRules['l']['v'] = self::NOT_BEGIN | self::PREFIX;471        $this->digramRules['l']['w'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;472        $this->digramRules['l']['x'] = self::ILLEGAL_PAIR;473        $this->digramRules['l']['y'] = self::ANY_COMBINATION;474        $this->digramRules['l']['z'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;475        $this->digramRules['l']['ch'] = self::NOT_BEGIN | self::PREFIX;476        $this->digramRules['l']['gh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;477        $this->digramRules['l']['ph'] = self::NOT_BEGIN | self::PREFIX;478        $this->digramRules['l']['rh'] = self::ILLEGAL_PAIR;479        $this->digramRules['l']['sh'] = self::NOT_BEGIN | self::PREFIX;480        $this->digramRules['l']['th'] = self::NOT_BEGIN | self::PREFIX;481        $this->digramRules['l']['wh'] = self::ILLEGAL_PAIR;482        $this->digramRules['l']['qu'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;483        $this->digramRules['l']['ck'] = self::ILLEGAL_PAIR;484        $this->digramRules['m'] = [];485        $this->digramRules['m']['a'] = self::ANY_COMBINATION;486        $this->digramRules['m']['b'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;487        $this->digramRules['m']['c'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;488        $this->digramRules['m']['d'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;489        $this->digramRules['m']['e'] = self::ANY_COMBINATION;490        $this->digramRules['m']['f'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;491        $this->digramRules['m']['g'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;492        $this->digramRules['m']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;493        $this->digramRules['m']['i'] = self::ANY_COMBINATION;494        $this->digramRules['m']['j'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;495        $this->digramRules['m']['k'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;496        $this->digramRules['m']['l'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;497        $this->digramRules['m']['m'] = self::NOT_BEGIN;498        $this->digramRules['m']['n'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;499        $this->digramRules['m']['o'] = self::ANY_COMBINATION;500        $this->digramRules['m']['p'] = self::NOT_BEGIN;501        $this->digramRules['m']['r'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;502        $this->digramRules['m']['s'] = self::NOT_BEGIN;503        $this->digramRules['m']['t'] = self::NOT_BEGIN;504        $this->digramRules['m']['u'] = self::ANY_COMBINATION;505        $this->digramRules['m']['v'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;506        $this->digramRules['m']['w'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;507        $this->digramRules['m']['x'] = self::ILLEGAL_PAIR;508        $this->digramRules['m']['y'] = self::ANY_COMBINATION;509        $this->digramRules['m']['z'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;510        $this->digramRules['m']['ch'] = self::NOT_BEGIN | self::PREFIX;511        $this->digramRules['m']['gh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;512        $this->digramRules['m']['ph'] = self::NOT_BEGIN;513        $this->digramRules['m']['rh'] = self::ILLEGAL_PAIR;514        $this->digramRules['m']['sh'] = self::NOT_BEGIN;515        $this->digramRules['m']['th'] = self::NOT_BEGIN;516        $this->digramRules['m']['wh'] = self::ILLEGAL_PAIR;517        $this->digramRules['m']['qu'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;518        $this->digramRules['m']['ck'] = self::ILLEGAL_PAIR;519        $this->digramRules['n'] = [];520        $this->digramRules['n']['a'] = self::ANY_COMBINATION;521        $this->digramRules['n']['b'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;522        $this->digramRules['n']['c'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;523        $this->digramRules['n']['d'] = self::NOT_BEGIN;524        $this->digramRules['n']['e'] = self::ANY_COMBINATION;525        $this->digramRules['n']['f'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;526        $this->digramRules['n']['g'] = self::NOT_BEGIN | self::PREFIX;527        $this->digramRules['n']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;528        $this->digramRules['n']['i'] = self::ANY_COMBINATION;529        $this->digramRules['n']['j'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;530        $this->digramRules['n']['k'] = self::NOT_BEGIN | self::PREFIX;531        $this->digramRules['n']['l'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;532        $this->digramRules['n']['m'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;533        $this->digramRules['n']['n'] = self::NOT_BEGIN;534        $this->digramRules['n']['o'] = self::ANY_COMBINATION;535        $this->digramRules['n']['p'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;536        $this->digramRules['n']['r'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;537        $this->digramRules['n']['s'] = self::NOT_BEGIN;538        $this->digramRules['n']['t'] = self::NOT_BEGIN;539        $this->digramRules['n']['u'] = self::ANY_COMBINATION;540        $this->digramRules['n']['v'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;541        $this->digramRules['n']['w'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;542        $this->digramRules['n']['x'] = self::ILLEGAL_PAIR;543        $this->digramRules['n']['y'] = self::NOT_BEGIN;544        $this->digramRules['n']['z'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;545        $this->digramRules['n']['ch'] = self::NOT_BEGIN | self::PREFIX;546        $this->digramRules['n']['gh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;547        $this->digramRules['n']['ph'] = self::NOT_BEGIN | self::PREFIX;548        $this->digramRules['n']['rh'] = self::ILLEGAL_PAIR;549        $this->digramRules['n']['sh'] = self::NOT_BEGIN;550        $this->digramRules['n']['th'] = self::NOT_BEGIN;551        $this->digramRules['n']['wh'] = self::ILLEGAL_PAIR;552        $this->digramRules['n']['qu'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;553        $this->digramRules['n']['ck'] = self::NOT_BEGIN | self::PREFIX;554        $this->digramRules['o'] = [];555        $this->digramRules['o']['a'] = self::ANY_COMBINATION;556        $this->digramRules['o']['b'] = self::ANY_COMBINATION;557        $this->digramRules['o']['c'] = self::ANY_COMBINATION;558        $this->digramRules['o']['d'] = self::ANY_COMBINATION;559        $this->digramRules['o']['e'] = self::ILLEGAL_PAIR;560        $this->digramRules['o']['f'] = self::ANY_COMBINATION;561        $this->digramRules['o']['g'] = self::ANY_COMBINATION;562        $this->digramRules['o']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;563        $this->digramRules['o']['i'] = self::ANY_COMBINATION;564        $this->digramRules['o']['j'] = self::ANY_COMBINATION;565        $this->digramRules['o']['k'] = self::ANY_COMBINATION;566        $this->digramRules['o']['l'] = self::ANY_COMBINATION;567        $this->digramRules['o']['m'] = self::ANY_COMBINATION;568        $this->digramRules['o']['n'] = self::ANY_COMBINATION;569        $this->digramRules['o']['o'] = self::ANY_COMBINATION;570        $this->digramRules['o']['p'] = self::ANY_COMBINATION;571        $this->digramRules['o']['r'] = self::ANY_COMBINATION;572        $this->digramRules['o']['s'] = self::ANY_COMBINATION;573        $this->digramRules['o']['t'] = self::ANY_COMBINATION;574        $this->digramRules['o']['u'] = self::ANY_COMBINATION;575        $this->digramRules['o']['v'] = self::ANY_COMBINATION;576        $this->digramRules['o']['w'] = self::ANY_COMBINATION;577        $this->digramRules['o']['x'] = self::ANY_COMBINATION;578        $this->digramRules['o']['y'] = self::ANY_COMBINATION;579        $this->digramRules['o']['z'] = self::ANY_COMBINATION;580        $this->digramRules['o']['ch'] = self::ANY_COMBINATION;581        $this->digramRules['o']['gh'] = self::NOT_BEGIN;582        $this->digramRules['o']['ph'] = self::ANY_COMBINATION;583        $this->digramRules['o']['rh'] = self::ILLEGAL_PAIR;584        $this->digramRules['o']['sh'] = self::ANY_COMBINATION;585        $this->digramRules['o']['th'] = self::ANY_COMBINATION;586        $this->digramRules['o']['wh'] = self::ILLEGAL_PAIR;587        $this->digramRules['o']['qu'] = self::BREAK_GRAM | self::NOT_END;588        $this->digramRules['o']['ck'] = self::ANY_COMBINATION;589        $this->digramRules['p'] = [];590        $this->digramRules['p']['a'] = self::ANY_COMBINATION;591        $this->digramRules['p']['b'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;592        $this->digramRules['p']['c'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;593        $this->digramRules['p']['d'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;594        $this->digramRules['p']['e'] = self::ANY_COMBINATION;595        $this->digramRules['p']['f'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;596        $this->digramRules['p']['g'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;597        $this->digramRules['p']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;598        $this->digramRules['p']['i'] = self::ANY_COMBINATION;599        $this->digramRules['p']['j'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;600        $this->digramRules['p']['k'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;601        $this->digramRules['p']['l'] = self::SUFFIX | self::NOT_END;602        $this->digramRules['p']['m'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;603        $this->digramRules['p']['n'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;604        $this->digramRules['p']['o'] = self::ANY_COMBINATION;605        $this->digramRules['p']['p'] = self::NOT_BEGIN | self::PREFIX;606        $this->digramRules['p']['r'] = self::NOT_END;607        $this->digramRules['p']['s'] = self::NOT_BEGIN | self::END;608        $this->digramRules['p']['t'] = self::NOT_BEGIN | self::END;609        $this->digramRules['p']['u'] = self::NOT_BEGIN | self::END;610        $this->digramRules['p']['v'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;611        $this->digramRules['p']['w'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;612        $this->digramRules['p']['x'] = self::ILLEGAL_PAIR;613        $this->digramRules['p']['y'] = self::ANY_COMBINATION;614        $this->digramRules['p']['z'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;615        $this->digramRules['p']['ch'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;616        $this->digramRules['p']['gh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;617        $this->digramRules['p']['ph'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;618        $this->digramRules['p']['rh'] = self::ILLEGAL_PAIR;619        $this->digramRules['p']['sh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;620        $this->digramRules['p']['th'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;621        $this->digramRules['p']['wh'] = self::ILLEGAL_PAIR;622        $this->digramRules['p']['qu'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;623        $this->digramRules['p']['ck'] = self::ILLEGAL_PAIR;624        $this->digramRules['r'] = [];625        $this->digramRules['r']['a'] = self::ANY_COMBINATION;626        $this->digramRules['r']['b'] = self::NOT_BEGIN | self::PREFIX;627        $this->digramRules['r']['c'] = self::NOT_BEGIN | self::PREFIX;628        $this->digramRules['r']['d'] = self::NOT_BEGIN | self::PREFIX;629        $this->digramRules['r']['e'] = self::ANY_COMBINATION;630        $this->digramRules['r']['f'] = self::NOT_BEGIN | self::PREFIX;631        $this->digramRules['r']['g'] = self::NOT_BEGIN | self::PREFIX;632        $this->digramRules['r']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;633        $this->digramRules['r']['i'] = self::ANY_COMBINATION;634        $this->digramRules['r']['j'] = self::NOT_BEGIN | self::PREFIX;635        $this->digramRules['r']['k'] = self::NOT_BEGIN | self::PREFIX;636        $this->digramRules['r']['l'] = self::NOT_BEGIN | self::PREFIX;637        $this->digramRules['r']['m'] = self::NOT_BEGIN | self::PREFIX;638        $this->digramRules['r']['n'] = self::NOT_BEGIN | self::PREFIX;639        $this->digramRules['r']['o'] = self::ANY_COMBINATION;640        $this->digramRules['r']['p'] = self::NOT_BEGIN | self::PREFIX;641        $this->digramRules['r']['r'] = self::NOT_BEGIN | self::PREFIX;642        $this->digramRules['r']['s'] = self::NOT_BEGIN | self::PREFIX;643        $this->digramRules['r']['t'] = self::NOT_BEGIN | self::PREFIX;644        $this->digramRules['r']['u'] = self::ANY_COMBINATION;645        $this->digramRules['r']['v'] = self::NOT_BEGIN | self::PREFIX;646        $this->digramRules['r']['w'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;647        $this->digramRules['r']['x'] = self::ILLEGAL_PAIR;648        $this->digramRules['r']['y'] = self::ANY_COMBINATION;649        $this->digramRules['r']['z'] = self::NOT_BEGIN | self::PREFIX;650        $this->digramRules['r']['ch'] = self::NOT_BEGIN | self::PREFIX;651        $this->digramRules['r']['gh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;652        $this->digramRules['r']['ph'] = self::NOT_BEGIN | self::PREFIX;653        $this->digramRules['r']['rh'] = self::ILLEGAL_PAIR;654        $this->digramRules['r']['sh'] = self::NOT_BEGIN | self::PREFIX;655        $this->digramRules['r']['th'] = self::NOT_BEGIN | self::PREFIX;656        $this->digramRules['r']['wh'] = self::ILLEGAL_PAIR;657        $this->digramRules['r']['qu'] = self::NOT_BEGIN | self::PREFIX | self::NOT_END;658        $this->digramRules['r']['ck'] = self::NOT_BEGIN | self::PREFIX;659        $this->digramRules['s'] = [];660        $this->digramRules['s']['a'] = self::ANY_COMBINATION;661        $this->digramRules['s']['b'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;662        $this->digramRules['s']['c'] = self::NOT_END;663        $this->digramRules['s']['d'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;664        $this->digramRules['s']['e'] = self::ANY_COMBINATION;665        $this->digramRules['s']['f'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;666        $this->digramRules['s']['g'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;667        $this->digramRules['s']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;668        $this->digramRules['s']['i'] = self::ANY_COMBINATION;669        $this->digramRules['s']['j'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;670        $this->digramRules['s']['k'] = self::ANY_COMBINATION;671        $this->digramRules['s']['l'] = self::BEGIN | self::SUFFIX | self::NOT_END;672        $this->digramRules['s']['m'] = self::SUFFIX | self::NOT_END;673        $this->digramRules['s']['n'] = self::PREFIX | self::SUFFIX | self::NOT_END;674        $this->digramRules['s']['o'] = self::ANY_COMBINATION;675        $this->digramRules['s']['p'] = self::ANY_COMBINATION;676        $this->digramRules['s']['r'] = self::NOT_BEGIN | self::NOT_END;677        $this->digramRules['s']['s'] = self::NOT_BEGIN | self::PREFIX;678        $this->digramRules['s']['t'] = self::ANY_COMBINATION;679        $this->digramRules['s']['u'] = self::ANY_COMBINATION;680        $this->digramRules['s']['v'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;681        $this->digramRules['s']['w'] = self::BEGIN | self::SUFFIX | self::NOT_END;682        $this->digramRules['s']['x'] = self::ILLEGAL_PAIR;683        $this->digramRules['s']['y'] = self::ANY_COMBINATION;684        $this->digramRules['s']['z'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;685        $this->digramRules['s']['ch'] = self::BEGIN | self::SUFFIX | self::NOT_END;686        $this->digramRules['s']['gh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;687        $this->digramRules['s']['ph'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;688        $this->digramRules['s']['rh'] = self::ILLEGAL_PAIR;689        $this->digramRules['s']['sh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;690        $this->digramRules['s']['th'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;691        $this->digramRules['s']['wh'] = self::ILLEGAL_PAIR;692        $this->digramRules['s']['qu'] = self::SUFFIX | self::NOT_END;693        $this->digramRules['s']['ck'] = self::NOT_BEGIN;694        $this->digramRules['t'] = [];695        $this->digramRules['t']['a'] = self::ANY_COMBINATION;696        $this->digramRules['t']['b'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;697        $this->digramRules['t']['c'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;698        $this->digramRules['t']['d'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;699        $this->digramRules['t']['e'] = self::ANY_COMBINATION;700        $this->digramRules['t']['f'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;701        $this->digramRules['t']['g'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;702        $this->digramRules['t']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;703        $this->digramRules['t']['i'] = self::ANY_COMBINATION;704        $this->digramRules['t']['j'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;705        $this->digramRules['t']['k'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;706        $this->digramRules['t']['l'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;707        $this->digramRules['t']['m'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;708        $this->digramRules['t']['n'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;709        $this->digramRules['t']['o'] = self::ANY_COMBINATION;710        $this->digramRules['t']['p'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;711        $this->digramRules['t']['r'] = self::NOT_END;712        $this->digramRules['t']['s'] = self::NOT_BEGIN | self::END;713        $this->digramRules['t']['t'] = self::NOT_BEGIN | self::PREFIX;714        $this->digramRules['t']['u'] = self::ANY_COMBINATION;715        $this->digramRules['t']['v'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;716        $this->digramRules['t']['w'] = self::BEGIN | self::SUFFIX | self::NOT_END;717        $this->digramRules['t']['x'] = self::ILLEGAL_PAIR;718        $this->digramRules['t']['y'] = self::ANY_COMBINATION;719        $this->digramRules['t']['z'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;720        $this->digramRules['t']['ch'] = self::NOT_BEGIN;721        $this->digramRules['t']['gh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;722        $this->digramRules['t']['ph'] = self::NOT_BEGIN | self::END;723        $this->digramRules['t']['rh'] = self::ILLEGAL_PAIR;724        $this->digramRules['t']['sh'] = self::NOT_BEGIN | self::END;725        $this->digramRules['t']['th'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;726        $this->digramRules['t']['wh'] = self::ILLEGAL_PAIR;727        $this->digramRules['t']['qu'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;728        $this->digramRules['t']['ck'] = self::ILLEGAL_PAIR;729        $this->digramRules['u'] = [];730        $this->digramRules['u']['a'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;731        $this->digramRules['u']['b'] = self::ANY_COMBINATION;732        $this->digramRules['u']['c'] = self::ANY_COMBINATION;733        $this->digramRules['u']['d'] = self::ANY_COMBINATION;734        $this->digramRules['u']['e'] = self::NOT_BEGIN;735        $this->digramRules['u']['f'] = self::ANY_COMBINATION;736        $this->digramRules['u']['g'] = self::ANY_COMBINATION;737        $this->digramRules['u']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;738        $this->digramRules['u']['i'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;739        $this->digramRules['u']['j'] = self::ANY_COMBINATION;740        $this->digramRules['u']['k'] = self::ANY_COMBINATION;741        $this->digramRules['u']['l'] = self::ANY_COMBINATION;742        $this->digramRules['u']['m'] = self::ANY_COMBINATION;743        $this->digramRules['u']['n'] = self::ANY_COMBINATION;744        $this->digramRules['u']['o'] = self::NOT_BEGIN | self::BREAK_GRAM;745        $this->digramRules['u']['p'] = self::ANY_COMBINATION;746        $this->digramRules['u']['r'] = self::ANY_COMBINATION;747        $this->digramRules['u']['s'] = self::ANY_COMBINATION;748        $this->digramRules['u']['t'] = self::ANY_COMBINATION;749        $this->digramRules['u']['u'] = self::ILLEGAL_PAIR;750        $this->digramRules['u']['v'] = self::ANY_COMBINATION;751        $this->digramRules['u']['w'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;752        $this->digramRules['u']['x'] = self::ANY_COMBINATION;753        $this->digramRules['u']['y'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;754        $this->digramRules['u']['z'] = self::ANY_COMBINATION;755        $this->digramRules['u']['ch'] = self::ANY_COMBINATION;756        $this->digramRules['u']['gh'] = self::NOT_BEGIN | self::PREFIX;757        $this->digramRules['u']['ph'] = self::ANY_COMBINATION;758        $this->digramRules['u']['rh'] = self::ILLEGAL_PAIR;759        $this->digramRules['u']['sh'] = self::ANY_COMBINATION;760        $this->digramRules['u']['th'] = self::ANY_COMBINATION;761        $this->digramRules['u']['wh'] = self::ILLEGAL_PAIR;762        $this->digramRules['u']['qu'] = self::BREAK_GRAM | self::NOT_END;763        $this->digramRules['u']['ck'] = self::ANY_COMBINATION;764        $this->digramRules['v'] = [];765        $this->digramRules['v']['a'] = self::ANY_COMBINATION;766        $this->digramRules['v']['b'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;767        $this->digramRules['v']['c'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;768        $this->digramRules['v']['d'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;769        $this->digramRules['v']['e'] = self::ANY_COMBINATION;770        $this->digramRules['v']['f'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;771        $this->digramRules['v']['g'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;772        $this->digramRules['v']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;773        $this->digramRules['v']['i'] = self::ANY_COMBINATION;774        $this->digramRules['v']['j'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;775        $this->digramRules['v']['k'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;776        $this->digramRules['v']['l'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;777        $this->digramRules['v']['m'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;778        $this->digramRules['v']['n'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;779        $this->digramRules['v']['o'] = self::ANY_COMBINATION;780        $this->digramRules['v']['p'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;781        $this->digramRules['v']['r'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;782        $this->digramRules['v']['s'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;783        $this->digramRules['v']['t'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;784        $this->digramRules['v']['u'] = self::ANY_COMBINATION;785        $this->digramRules['v']['v'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;786        $this->digramRules['v']['w'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;787        $this->digramRules['v']['x'] = self::ILLEGAL_PAIR;788        $this->digramRules['v']['y'] = self::NOT_BEGIN;789        $this->digramRules['v']['z'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;790        $this->digramRules['v']['ch'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;791        $this->digramRules['v']['gh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;792        $this->digramRules['v']['ph'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;793        $this->digramRules['v']['rh'] = self::ILLEGAL_PAIR;794        $this->digramRules['v']['sh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;795        $this->digramRules['v']['th'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;796        $this->digramRules['v']['wh'] = self::ILLEGAL_PAIR;797        $this->digramRules['v']['qu'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;798        $this->digramRules['v']['ck'] = self::ILLEGAL_PAIR;799        $this->digramRules['w'] = [];800        $this->digramRules['w']['a'] = self::ANY_COMBINATION;801        $this->digramRules['w']['b'] = self::NOT_BEGIN | self::PREFIX;802        $this->digramRules['w']['c'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;803        $this->digramRules['w']['d'] = self::NOT_BEGIN | self::PREFIX | self::END;804        $this->digramRules['w']['e'] = self::ANY_COMBINATION;805        $this->digramRules['w']['f'] = self::NOT_BEGIN | self::PREFIX;806        $this->digramRules['w']['g'] = self::NOT_BEGIN | self::PREFIX | self::END;807        $this->digramRules['w']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;808        $this->digramRules['w']['i'] = self::ANY_COMBINATION;809        $this->digramRules['w']['j'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;810        $this->digramRules['w']['k'] = self::NOT_BEGIN | self::PREFIX;811        $this->digramRules['w']['l'] = self::NOT_BEGIN | self::PREFIX | self::SUFFIX;812        $this->digramRules['w']['m'] = self::NOT_BEGIN | self::PREFIX;813        $this->digramRules['w']['n'] = self::NOT_BEGIN | self::PREFIX;814        $this->digramRules['w']['o'] = self::ANY_COMBINATION;815        $this->digramRules['w']['p'] = self::NOT_BEGIN | self::PREFIX;816        $this->digramRules['w']['r'] = self::BEGIN | self::SUFFIX | self::NOT_END;817        $this->digramRules['w']['s'] = self::NOT_BEGIN | self::PREFIX;818        $this->digramRules['w']['t'] = self::NOT_BEGIN | self::PREFIX;819        $this->digramRules['w']['u'] = self::ANY_COMBINATION;820        $this->digramRules['w']['v'] = self::NOT_BEGIN | self::PREFIX;821        $this->digramRules['w']['w'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;822        $this->digramRules['w']['x'] = self::NOT_BEGIN | self::PREFIX;823        $this->digramRules['w']['y'] = self::ANY_COMBINATION;824        $this->digramRules['w']['z'] = self::NOT_BEGIN | self::PREFIX;825        $this->digramRules['w']['ch'] = self::NOT_BEGIN;826        $this->digramRules['w']['gh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;827        $this->digramRules['w']['ph'] = self::NOT_BEGIN;828        $this->digramRules['w']['rh'] = self::ILLEGAL_PAIR;829        $this->digramRules['w']['sh'] = self::NOT_BEGIN;830        $this->digramRules['w']['th'] = self::NOT_BEGIN;831        $this->digramRules['w']['wh'] = self::ILLEGAL_PAIR;832        $this->digramRules['w']['qu'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;833        $this->digramRules['w']['ck'] = self::NOT_BEGIN;834        $this->digramRules['x'] = [];835        $this->digramRules['x']['a'] = self::NOT_BEGIN;836        $this->digramRules['x']['b'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;837        $this->digramRules['x']['c'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;838        $this->digramRules['x']['d'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;839        $this->digramRules['x']['e'] = self::NOT_BEGIN;840        $this->digramRules['x']['f'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;841        $this->digramRules['x']['g'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;842        $this->digramRules['x']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;843        $this->digramRules['x']['i'] = self::NOT_BEGIN;844        $this->digramRules['x']['j'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;845        $this->digramRules['x']['k'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;846        $this->digramRules['x']['l'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;847        $this->digramRules['x']['m'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;848        $this->digramRules['x']['n'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;849        $this->digramRules['x']['o'] = self::NOT_BEGIN;850        $this->digramRules['x']['p'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;851        $this->digramRules['x']['r'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;852        $this->digramRules['x']['s'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;853        $this->digramRules['x']['t'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;854        $this->digramRules['x']['u'] = self::NOT_BEGIN;855        $this->digramRules['x']['v'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;856        $this->digramRules['x']['w'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;857        $this->digramRules['x']['x'] = self::ILLEGAL_PAIR;858        $this->digramRules['x']['y'] = self::NOT_BEGIN;859        $this->digramRules['x']['z'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;860        $this->digramRules['x']['ch'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;861        $this->digramRules['x']['gh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;862        $this->digramRules['x']['ph'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;863        $this->digramRules['x']['rh'] = self::ILLEGAL_PAIR;864        $this->digramRules['x']['sh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;865        $this->digramRules['x']['th'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;866        $this->digramRules['x']['wh'] = self::ILLEGAL_PAIR;867        $this->digramRules['x']['qu'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;868        $this->digramRules['x']['ck'] = self::ILLEGAL_PAIR;869        $this->digramRules['y'] = [];870        $this->digramRules['y']['a'] = self::ANY_COMBINATION;871        $this->digramRules['y']['b'] = self::NOT_BEGIN;872        $this->digramRules['y']['c'] = self::NOT_BEGIN | self::NOT_END;873        $this->digramRules['y']['d'] = self::NOT_BEGIN;874        $this->digramRules['y']['e'] = self::ANY_COMBINATION;875        $this->digramRules['y']['f'] = self::NOT_BEGIN | self::NOT_END;876        $this->digramRules['y']['g'] = self::NOT_BEGIN;877        $this->digramRules['y']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;878        $this->digramRules['y']['i'] = self::BEGIN | self::NOT_END;879        $this->digramRules['y']['j'] = self::NOT_BEGIN | self::NOT_END;880        $this->digramRules['y']['k'] = self::NOT_BEGIN;881        $this->digramRules['y']['l'] = self::NOT_BEGIN | self::NOT_END;882        $this->digramRules['y']['m'] = self::NOT_BEGIN;883        $this->digramRules['y']['n'] = self::NOT_BEGIN;884        $this->digramRules['y']['o'] = self::ANY_COMBINATION;885        $this->digramRules['y']['p'] = self::NOT_BEGIN;886        $this->digramRules['y']['r'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;887        $this->digramRules['y']['s'] = self::NOT_BEGIN;888        $this->digramRules['y']['t'] = self::NOT_BEGIN;889        $this->digramRules['y']['u'] = self::ANY_COMBINATION;890        $this->digramRules['y']['v'] = self::NOT_BEGIN | self::NOT_END;891        $this->digramRules['y']['w'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;892        $this->digramRules['y']['x'] = self::NOT_BEGIN;893        $this->digramRules['y']['y'] = self::ILLEGAL_PAIR;894        $this->digramRules['y']['z'] = self::NOT_BEGIN;895        $this->digramRules['y']['ch'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;896        $this->digramRules['y']['gh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;897        $this->digramRules['y']['ph'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;898        $this->digramRules['y']['rh'] = self::ILLEGAL_PAIR;899        $this->digramRules['y']['sh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;900        $this->digramRules['y']['th'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;901        $this->digramRules['y']['wh'] = self::ILLEGAL_PAIR;902        $this->digramRules['y']['qu'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;903        $this->digramRules['y']['ck'] = self::ILLEGAL_PAIR;904        $this->digramRules['z'] = [];905        $this->digramRules['z']['a'] = self::ANY_COMBINATION;906        $this->digramRules['z']['b'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;907        $this->digramRules['z']['c'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;908        $this->digramRules['z']['d'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;909        $this->digramRules['z']['e'] = self::ANY_COMBINATION;910        $this->digramRules['z']['f'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;911        $this->digramRules['z']['g'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;912        $this->digramRules['z']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;913        $this->digramRules['z']['i'] = self::ANY_COMBINATION;914        $this->digramRules['z']['j'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;915        $this->digramRules['z']['k'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;916        $this->digramRules['z']['l'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;917        $this->digramRules['z']['m'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;918        $this->digramRules['z']['n'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;919        $this->digramRules['z']['o'] = self::ANY_COMBINATION;920        $this->digramRules['z']['p'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;921        $this->digramRules['z']['r'] = self::NOT_BEGIN | self::NOT_END;922        $this->digramRules['z']['s'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;923        $this->digramRules['z']['t'] = self::NOT_BEGIN;924        $this->digramRules['z']['u'] = self::ANY_COMBINATION;925        $this->digramRules['z']['v'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;926        $this->digramRules['z']['w'] = self::SUFFIX | self::NOT_END;927        $this->digramRules['z']['x'] = self::ILLEGAL_PAIR;928        $this->digramRules['z']['y'] = self::ANY_COMBINATION;929        $this->digramRules['z']['z'] = self::NOT_BEGIN;930        $this->digramRules['z']['ch'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;931        $this->digramRules['z']['gh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;932        $this->digramRules['z']['ph'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;933        $this->digramRules['z']['rh'] = self::ILLEGAL_PAIR;934        $this->digramRules['z']['sh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;935        $this->digramRules['z']['th'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;936        $this->digramRules['z']['wh'] = self::ILLEGAL_PAIR;937        $this->digramRules['z']['qu'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;938        $this->digramRules['z']['ck'] = self::ILLEGAL_PAIR;939        $this->digramRules['ch'] = [];940        $this->digramRules['ch']['a'] = self::ANY_COMBINATION;941        $this->digramRules['ch']['b'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;942        $this->digramRules['ch']['c'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;943        $this->digramRules['ch']['d'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;944        $this->digramRules['ch']['e'] = self::ANY_COMBINATION;945        $this->digramRules['ch']['f'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;946        $this->digramRules['ch']['g'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;947        $this->digramRules['ch']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;948        $this->digramRules['ch']['i'] = self::ANY_COMBINATION;949        $this->digramRules['ch']['j'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;950        $this->digramRules['ch']['k'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;951        $this->digramRules['ch']['l'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;952        $this->digramRules['ch']['m'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;953        $this->digramRules['ch']['n'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;954        $this->digramRules['ch']['o'] = self::ANY_COMBINATION;955        $this->digramRules['ch']['p'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;956        $this->digramRules['ch']['r'] = self::NOT_END;957        $this->digramRules['ch']['s'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;958        $this->digramRules['ch']['t'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;959        $this->digramRules['ch']['u'] = self::ANY_COMBINATION;960        $this->digramRules['ch']['v'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;961        $this->digramRules['ch']['w'] = self::NOT_BEGIN | self::NOT_END;962        $this->digramRules['ch']['x'] = self::ILLEGAL_PAIR;963        $this->digramRules['ch']['y'] = self::ANY_COMBINATION;964        $this->digramRules['ch']['z'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;965        $this->digramRules['ch']['ch'] = self::ILLEGAL_PAIR;966        $this->digramRules['ch']['gh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;967        $this->digramRules['ch']['ph'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;968        $this->digramRules['ch']['rh'] = self::ILLEGAL_PAIR;969        $this->digramRules['ch']['sh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;970        $this->digramRules['ch']['th'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;971        $this->digramRules['ch']['wh'] = self::ILLEGAL_PAIR;972        $this->digramRules['ch']['qu'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;973        $this->digramRules['ch']['ck'] = self::ILLEGAL_PAIR;974        $this->digramRules['gh'] = [];975        $this->digramRules['gh']['a'] = self::ANY_COMBINATION;976        $this->digramRules['gh']['b'] = self::NOT_BEGIN | self::BREAK_GRAM | self::PREFIX | self::NOT_END;977        $this->digramRules['gh']['c'] = self::NOT_BEGIN | self::BREAK_GRAM | self::PREFIX | self::NOT_END;978        $this->digramRules['gh']['d'] = self::NOT_BEGIN | self::BREAK_GRAM | self::PREFIX | self::NOT_END;979        $this->digramRules['gh']['e'] = self::ANY_COMBINATION;980        $this->digramRules['gh']['f'] = self::NOT_BEGIN | self::BREAK_GRAM | self::PREFIX | self::NOT_END;981        $this->digramRules['gh']['g'] = self::NOT_BEGIN | self::BREAK_GRAM | self::PREFIX | self::NOT_END;982        $this->digramRules['gh']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::PREFIX | self::NOT_END;983        $this->digramRules['gh']['i'] = self::BEGIN | self::NOT_END;984        $this->digramRules['gh']['j'] = self::NOT_BEGIN | self::BREAK_GRAM | self::PREFIX | self::NOT_END;985        $this->digramRules['gh']['k'] = self::NOT_BEGIN | self::BREAK_GRAM | self::PREFIX | self::NOT_END;986        $this->digramRules['gh']['l'] = self::NOT_BEGIN | self::BREAK_GRAM | self::PREFIX | self::NOT_END;987        $this->digramRules['gh']['m'] = self::NOT_BEGIN | self::BREAK_GRAM | self::PREFIX | self::NOT_END;988        $this->digramRules['gh']['n'] = self::NOT_BEGIN | self::BREAK_GRAM | self::PREFIX | self::NOT_END;989        $this->digramRules['gh']['o'] = self::BEGIN | self::NOT_END;990        $this->digramRules['gh']['p'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;991        $this->digramRules['gh']['r'] = self::NOT_BEGIN | self::BREAK_GRAM | self::PREFIX | self::NOT_END;992        $this->digramRules['gh']['s'] = self::NOT_BEGIN | self::PREFIX;993        $this->digramRules['gh']['t'] = self::NOT_BEGIN | self::PREFIX;994        $this->digramRules['gh']['u'] = self::NOT_BEGIN | self::BREAK_GRAM | self::PREFIX | self::NOT_END;995        $this->digramRules['gh']['v'] = self::NOT_BEGIN | self::BREAK_GRAM | self::PREFIX | self::NOT_END;996        $this->digramRules['gh']['w'] = self::NOT_BEGIN | self::BREAK_GRAM | self::PREFIX | self::NOT_END;997        $this->digramRules['gh']['x'] = self::ILLEGAL_PAIR;998        $this->digramRules['gh']['y'] = self::NOT_BEGIN | self::BREAK_GRAM | self::PREFIX | self::NOT_END;999        $this->digramRules['gh']['z'] = self::NOT_BEGIN | self::BREAK_GRAM | self::PREFIX | self::NOT_END;1000        $this->digramRules['gh']['ch'] = self::NOT_BEGIN | self::BREAK_GRAM | self::PREFIX | self::NOT_END;1001        $this->digramRules['gh']['gh'] = self::ILLEGAL_PAIR;1002        $this->digramRules['gh']['ph'] = self::NOT_BEGIN | self::BREAK_GRAM | self::PREFIX | self::NOT_END;1003        $this->digramRules['gh']['rh'] = self::ILLEGAL_PAIR;1004        $this->digramRules['gh']['sh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::PREFIX | self::NOT_END;1005        $this->digramRules['gh']['th'] = self::NOT_BEGIN | self::BREAK_GRAM | self::PREFIX | self::NOT_END;1006        $this->digramRules['gh']['wh'] = self::ILLEGAL_PAIR;1007        $this->digramRules['gh']['qu'] = self::NOT_BEGIN | self::BREAK_GRAM | self::PREFIX | self::NOT_END;1008        $this->digramRules['gh']['ck'] = self::ILLEGAL_PAIR;1009        $this->digramRules['ph'] = [];1010        $this->digramRules['ph']['a'] = self::ANY_COMBINATION;1011        $this->digramRules['ph']['b'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1012        $this->digramRules['ph']['c'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1013        $this->digramRules['ph']['d'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1014        $this->digramRules['ph']['e'] = self::ANY_COMBINATION;1015        $this->digramRules['ph']['f'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1016        $this->digramRules['ph']['g'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1017        $this->digramRules['ph']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1018        $this->digramRules['ph']['i'] = self::ANY_COMBINATION;1019        $this->digramRules['ph']['j'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1020        $this->digramRules['ph']['k'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1021        $this->digramRules['ph']['l'] = self::BEGIN | self::SUFFIX | self::NOT_END;1022        $this->digramRules['ph']['m'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1023        $this->digramRules['ph']['n'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1024        $this->digramRules['ph']['o'] = self::ANY_COMBINATION;1025        $this->digramRules['ph']['p'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1026        $this->digramRules['ph']['r'] = self::NOT_END;1027        $this->digramRules['ph']['s'] = self::NOT_BEGIN;1028        $this->digramRules['ph']['t'] = self::NOT_BEGIN;1029        $this->digramRules['ph']['u'] = self::ANY_COMBINATION;1030        $this->digramRules['ph']['v'] = self::NOT_BEGIN | self::NOT_END;1031        $this->digramRules['ph']['w'] = self::NOT_BEGIN | self::NOT_END;1032        $this->digramRules['ph']['x'] = self::ILLEGAL_PAIR;1033        $this->digramRules['ph']['y'] = self::NOT_BEGIN;1034        $this->digramRules['ph']['z'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1035        $this->digramRules['ph']['ch'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1036        $this->digramRules['ph']['gh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1037        $this->digramRules['ph']['ph'] = self::ILLEGAL_PAIR;1038        $this->digramRules['ph']['rh'] = self::ILLEGAL_PAIR;1039        $this->digramRules['ph']['sh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1040        $this->digramRules['ph']['th'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1041        $this->digramRules['ph']['wh'] = self::ILLEGAL_PAIR;1042        $this->digramRules['ph']['qu'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1043        $this->digramRules['ph']['ck'] = self::ILLEGAL_PAIR;1044        $this->digramRules['rh'] = [];1045        $this->digramRules['rh']['a'] = self::BEGIN | self::NOT_END;1046        $this->digramRules['rh']['b'] = self::ILLEGAL_PAIR;1047        $this->digramRules['rh']['c'] = self::ILLEGAL_PAIR;1048        $this->digramRules['rh']['d'] = self::ILLEGAL_PAIR;1049        $this->digramRules['rh']['e'] = self::BEGIN | self::NOT_END;1050        $this->digramRules['rh']['f'] = self::ILLEGAL_PAIR;1051        $this->digramRules['rh']['g'] = self::ILLEGAL_PAIR;1052        $this->digramRules['rh']['h'] = self::ILLEGAL_PAIR;1053        $this->digramRules['rh']['i'] = self::BEGIN | self::NOT_END;1054        $this->digramRules['rh']['j'] = self::ILLEGAL_PAIR;1055        $this->digramRules['rh']['k'] = self::ILLEGAL_PAIR;1056        $this->digramRules['rh']['l'] = self::ILLEGAL_PAIR;1057        $this->digramRules['rh']['m'] = self::ILLEGAL_PAIR;1058        $this->digramRules['rh']['n'] = self::ILLEGAL_PAIR;1059        $this->digramRules['rh']['o'] = self::BEGIN | self::NOT_END;1060        $this->digramRules['rh']['p'] = self::ILLEGAL_PAIR;1061        $this->digramRules['rh']['r'] = self::ILLEGAL_PAIR;1062        $this->digramRules['rh']['s'] = self::ILLEGAL_PAIR;1063        $this->digramRules['rh']['t'] = self::ILLEGAL_PAIR;1064        $this->digramRules['rh']['u'] = self::BEGIN | self::NOT_END;1065        $this->digramRules['rh']['v'] = self::ILLEGAL_PAIR;1066        $this->digramRules['rh']['w'] = self::ILLEGAL_PAIR;1067        $this->digramRules['rh']['x'] = self::ILLEGAL_PAIR;1068        $this->digramRules['rh']['y'] = self::BEGIN | self::NOT_END;1069        $this->digramRules['rh']['z'] = self::ILLEGAL_PAIR;1070        $this->digramRules['rh']['ch'] = self::ILLEGAL_PAIR;1071        $this->digramRules['rh']['gh'] = self::ILLEGAL_PAIR;1072        $this->digramRules['rh']['ph'] = self::ILLEGAL_PAIR;1073        $this->digramRules['rh']['rh'] = self::ILLEGAL_PAIR;1074        $this->digramRules['rh']['sh'] = self::ILLEGAL_PAIR;1075        $this->digramRules['rh']['th'] = self::ILLEGAL_PAIR;1076        $this->digramRules['rh']['wh'] = self::ILLEGAL_PAIR;1077        $this->digramRules['rh']['qu'] = self::ILLEGAL_PAIR;1078        $this->digramRules['rh']['ck'] = self::ILLEGAL_PAIR;1079        $this->digramRules['sh'] = [];1080        $this->digramRules['sh']['a'] = self::ANY_COMBINATION;1081        $this->digramRules['sh']['b'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1082        $this->digramRules['sh']['c'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1083        $this->digramRules['sh']['d'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1084        $this->digramRules['sh']['e'] = self::ANY_COMBINATION;1085        $this->digramRules['sh']['f'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1086        $this->digramRules['sh']['g'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1087        $this->digramRules['sh']['h'] = self::ILLEGAL_PAIR;1088        $this->digramRules['sh']['i'] = self::ANY_COMBINATION;1089        $this->digramRules['sh']['j'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1090        $this->digramRules['sh']['k'] = self::NOT_BEGIN;1091        $this->digramRules['sh']['l'] = self::BEGIN | self::SUFFIX | self::NOT_END;1092        $this->digramRules['sh']['m'] = self::BEGIN | self::SUFFIX | self::NOT_END;1093        $this->digramRules['sh']['n'] = self::BEGIN | self::SUFFIX | self::NOT_END;1094        $this->digramRules['sh']['o'] = self::ANY_COMBINATION;1095        $this->digramRules['sh']['p'] = self::NOT_BEGIN;1096        $this->digramRules['sh']['r'] = self::BEGIN | self::SUFFIX | self::NOT_END;1097        $this->digramRules['sh']['s'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1098        $this->digramRules['sh']['t'] = self::SUFFIX;1099        $this->digramRules['sh']['u'] = self::ANY_COMBINATION;1100        $this->digramRules['sh']['v'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1101        $this->digramRules['sh']['w'] = self::SUFFIX | self::NOT_END;1102        $this->digramRules['sh']['x'] = self::ILLEGAL_PAIR;1103        $this->digramRules['sh']['y'] = self::ANY_COMBINATION;1104        $this->digramRules['sh']['z'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1105        $this->digramRules['sh']['ch'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1106        $this->digramRules['sh']['gh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1107        $this->digramRules['sh']['ph'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1108        $this->digramRules['sh']['rh'] = self::ILLEGAL_PAIR;1109        $this->digramRules['sh']['sh'] = self::ILLEGAL_PAIR;1110        $this->digramRules['sh']['th'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1111        $this->digramRules['sh']['wh'] = self::ILLEGAL_PAIR;1112        $this->digramRules['sh']['qu'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1113        $this->digramRules['sh']['ck'] = self::ILLEGAL_PAIR;1114        $this->digramRules['th'] = [];1115        $this->digramRules['th']['a'] = self::ANY_COMBINATION;1116        $this->digramRules['th']['b'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1117        $this->digramRules['th']['c'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1118        $this->digramRules['th']['d'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1119        $this->digramRules['th']['e'] = self::ANY_COMBINATION;1120        $this->digramRules['th']['f'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1121        $this->digramRules['th']['g'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1122        $this->digramRules['th']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1123        $this->digramRules['th']['i'] = self::ANY_COMBINATION;1124        $this->digramRules['th']['j'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1125        $this->digramRules['th']['k'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1126        $this->digramRules['th']['l'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1127        $this->digramRules['th']['m'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1128        $this->digramRules['th']['n'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1129        $this->digramRules['th']['o'] = self::ANY_COMBINATION;1130        $this->digramRules['th']['p'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1131        $this->digramRules['th']['r'] = self::NOT_END;1132        $this->digramRules['th']['s'] = self::NOT_BEGIN | self::END;1133        $this->digramRules['th']['t'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1134        $this->digramRules['th']['u'] = self::ANY_COMBINATION;1135        $this->digramRules['th']['v'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1136        $this->digramRules['th']['w'] = self::SUFFIX | self::NOT_END;1137        $this->digramRules['th']['x'] = self::ILLEGAL_PAIR;1138        $this->digramRules['th']['y'] = self::ANY_COMBINATION;1139        $this->digramRules['th']['z'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1140        $this->digramRules['th']['ch'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1141        $this->digramRules['th']['gh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1142        $this->digramRules['th']['ph'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1143        $this->digramRules['th']['rh'] = self::ILLEGAL_PAIR;1144        $this->digramRules['th']['sh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1145        $this->digramRules['th']['th'] = self::ILLEGAL_PAIR;1146        $this->digramRules['th']['wh'] = self::ILLEGAL_PAIR;1147        $this->digramRules['th']['qu'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1148        $this->digramRules['th']['ck'] = self::ILLEGAL_PAIR;1149        $this->digramRules['wh'] = [];1150        $this->digramRules['wh']['a'] = self::BEGIN | self::NOT_END;1151        $this->digramRules['wh']['b'] = self::ILLEGAL_PAIR;1152        $this->digramRules['wh']['c'] = self::ILLEGAL_PAIR;1153        $this->digramRules['wh']['d'] = self::ILLEGAL_PAIR;1154        $this->digramRules['wh']['e'] = self::BEGIN | self::NOT_END;1155        $this->digramRules['wh']['f'] = self::ILLEGAL_PAIR;1156        $this->digramRules['wh']['g'] = self::ILLEGAL_PAIR;1157        $this->digramRules['wh']['h'] = self::ILLEGAL_PAIR;1158        $this->digramRules['wh']['i'] = self::BEGIN | self::NOT_END;1159        $this->digramRules['wh']['j'] = self::ILLEGAL_PAIR;1160        $this->digramRules['wh']['k'] = self::ILLEGAL_PAIR;1161        $this->digramRules['wh']['l'] = self::ILLEGAL_PAIR;1162        $this->digramRules['wh']['m'] = self::ILLEGAL_PAIR;1163        $this->digramRules['wh']['n'] = self::ILLEGAL_PAIR;1164        $this->digramRules['wh']['o'] = self::BEGIN | self::NOT_END;1165        $this->digramRules['wh']['p'] = self::ILLEGAL_PAIR;1166        $this->digramRules['wh']['r'] = self::ILLEGAL_PAIR;1167        $this->digramRules['wh']['s'] = self::ILLEGAL_PAIR;1168        $this->digramRules['wh']['t'] = self::ILLEGAL_PAIR;1169        $this->digramRules['wh']['u'] = self::ILLEGAL_PAIR;1170        $this->digramRules['wh']['v'] = self::ILLEGAL_PAIR;1171        $this->digramRules['wh']['w'] = self::ILLEGAL_PAIR;1172        $this->digramRules['wh']['x'] = self::ILLEGAL_PAIR;1173        $this->digramRules['wh']['y'] = self::BEGIN | self::NOT_END;1174        $this->digramRules['wh']['z'] = self::ILLEGAL_PAIR;1175        $this->digramRules['wh']['ch'] = self::ILLEGAL_PAIR;1176        $this->digramRules['wh']['gh'] = self::ILLEGAL_PAIR;1177        $this->digramRules['wh']['ph'] = self::ILLEGAL_PAIR;1178        $this->digramRules['wh']['rh'] = self::ILLEGAL_PAIR;1179        $this->digramRules['wh']['sh'] = self::ILLEGAL_PAIR;1180        $this->digramRules['wh']['th'] = self::ILLEGAL_PAIR;1181        $this->digramRules['wh']['wh'] = self::ILLEGAL_PAIR;1182        $this->digramRules['wh']['qu'] = self::ILLEGAL_PAIR;1183        $this->digramRules['wh']['ck'] = self::ILLEGAL_PAIR;1184        $this->digramRules['qu'] = [];1185        $this->digramRules['qu']['a'] = self::ANY_COMBINATION;1186        $this->digramRules['qu']['b'] = self::ILLEGAL_PAIR;1187        $this->digramRules['qu']['c'] = self::ILLEGAL_PAIR;1188        $this->digramRules['qu']['d'] = self::ILLEGAL_PAIR;1189        $this->digramRules['qu']['e'] = self::ANY_COMBINATION;1190        $this->digramRules['qu']['f'] = self::ILLEGAL_PAIR;1191        $this->digramRules['qu']['g'] = self::ILLEGAL_PAIR;1192        $this->digramRules['qu']['h'] = self::ILLEGAL_PAIR;1193        $this->digramRules['qu']['i'] = self::ANY_COMBINATION;1194        $this->digramRules['qu']['j'] = self::ILLEGAL_PAIR;1195        $this->digramRules['qu']['k'] = self::ILLEGAL_PAIR;1196        $this->digramRules['qu']['l'] = self::ILLEGAL_PAIR;1197        $this->digramRules['qu']['m'] = self::ILLEGAL_PAIR;1198        $this->digramRules['qu']['n'] = self::ILLEGAL_PAIR;1199        $this->digramRules['qu']['o'] = self::ANY_COMBINATION;1200        $this->digramRules['qu']['p'] = self::ILLEGAL_PAIR;1201        $this->digramRules['qu']['r'] = self::ILLEGAL_PAIR;1202        $this->digramRules['qu']['s'] = self::ILLEGAL_PAIR;1203        $this->digramRules['qu']['t'] = self::ILLEGAL_PAIR;1204        $this->digramRules['qu']['u'] = self::ILLEGAL_PAIR;1205        $this->digramRules['qu']['v'] = self::ILLEGAL_PAIR;1206        $this->digramRules['qu']['w'] = self::ILLEGAL_PAIR;1207        $this->digramRules['qu']['x'] = self::ILLEGAL_PAIR;1208        $this->digramRules['qu']['y'] = self::ILLEGAL_PAIR;1209        $this->digramRules['qu']['z'] = self::ILLEGAL_PAIR;1210        $this->digramRules['qu']['ch'] = self::ILLEGAL_PAIR;1211        $this->digramRules['qu']['gh'] = self::ILLEGAL_PAIR;1212        $this->digramRules['qu']['ph'] = self::ILLEGAL_PAIR;1213        $this->digramRules['qu']['rh'] = self::ILLEGAL_PAIR;1214        $this->digramRules['qu']['sh'] = self::ILLEGAL_PAIR;1215        $this->digramRules['qu']['th'] = self::ILLEGAL_PAIR;1216        $this->digramRules['qu']['wh'] = self::ILLEGAL_PAIR;1217        $this->digramRules['qu']['qu'] = self::ILLEGAL_PAIR;1218        $this->digramRules['qu']['ck'] = self::ILLEGAL_PAIR;1219        $this->digramRules['ck'] = [];1220        $this->digramRules['ck']['a'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1221        $this->digramRules['ck']['b'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1222        $this->digramRules['ck']['c'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1223        $this->digramRules['ck']['d'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1224        $this->digramRules['ck']['e'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1225        $this->digramRules['ck']['f'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1226        $this->digramRules['ck']['g'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1227        $this->digramRules['ck']['h'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1228        $this->digramRules['ck']['i'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1229        $this->digramRules['ck']['j'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1230        $this->digramRules['ck']['k'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1231        $this->digramRules['ck']['l'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1232        $this->digramRules['ck']['m'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1233        $this->digramRules['ck']['n'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1234        $this->digramRules['ck']['o'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1235        $this->digramRules['ck']['p'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1236        $this->digramRules['ck']['r'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1237        $this->digramRules['ck']['s'] = self::NOT_BEGIN;1238        $this->digramRules['ck']['t'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1239        $this->digramRules['ck']['u'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1240        $this->digramRules['ck']['v'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1241        $this->digramRules['ck']['w'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1242        $this->digramRules['ck']['x'] = self::ILLEGAL_PAIR;1243        $this->digramRules['ck']['y'] = self::NOT_BEGIN;1244        $this->digramRules['ck']['z'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1245        $this->digramRules['ck']['ch'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1246        $this->digramRules['ck']['gh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1247        $this->digramRules['ck']['ph'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1248        $this->digramRules['ck']['rh'] = self::ILLEGAL_PAIR;1249        $this->digramRules['ck']['sh'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1250        $this->digramRules['ck']['th'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1251        $this->digramRules['ck']['wh'] = self::ILLEGAL_PAIR;1252        $this->digramRules['ck']['qu'] = self::NOT_BEGIN | self::BREAK_GRAM | self::NOT_END;1253        $this->digramRules['ck']['ck'] = self::ILLEGAL_PAIR;1254    }1255    public function setSeparator($sep)1256    {1257        $this->separator = $sep;1258    }1259    public function generate($length)1260    {1261        return $this->generateWord($length);1262    }1263    private function generateWord($length)1264    {1265        $word = '';1266        $syllables = [];1267        $maxRetries = (4 * $length) + count($this->grams);1268        $tries = 0;1269        $wordUnits = [];1270        $savedPair = [];1271        while (strlen($word) < $length) {1272            list($new, $units, $savedPair) = $this->getSyllable($length - strlen($word), $savedPair);1273            $wordUnits = array_merge($wordUnits, $units);1274            if (!($this->isImproperWord($wordUnits) || ($word === '' && $this->haveInitialY($units)) || (strlen($word . $new) === $length && $this->haveFinalSplit($units)))) {1275                $word = $word . $new;1276                $syllables[] = $new;1277            }1278            $tries += 1;1279            if ($tries > $maxRetries) {1280                $tries = 0;1281                $word = '';1282                $syllables = [];1283                $wordUnits = [];1284            }1285        }1286        return implode($this->separator, $syllables);1287    }1288    private function getSyllable($length, $savedPair)1289    {1290        $holdSavedPair = $savedPair;1291        $maxRetries = (4 * $length) + count($this->grams);1292        do {1293            $tries = 0;1294            $lastUnit = '';1295            $savedPair = $holdSavedPair;1296            $syllable = '';1297            $unitsInSyllable = [];1298            $vowelCount = 0;1299            $currentUnit = 0;1300            $lengthLeft = $length;1301            $wantAnotherUnit = true;1302            do {1303                $wantVowel = false;1304                do {1305                    if (count($savedPair) === 2) {1306                        $syllable = array_pop($savedPair);1307                        $unitsInSyllable[0] = $syllable;1308                        $currentUnit += 1;1309                        $lengthLeft -= strlen($syllable);1310                        if ($this->gramRules[$syllable] & self::VOWEL) {1311                            $vowelCount += 1;1312                        }1313                    }1314                    if (count($savedPair) > 0) {1315                        $unit = array_pop($savedPair);1316                    } else {1317                        if ($wantVowel) {1318                            $unit = $this->getRandomUnit(self::VOWEL);1319                        } else {1320                            $unit = $this->getRandomUnit(self::NO_SPECIAL_RULE);1321                        }1322                    }1323                    $lengthLeft -= strlen($unit);1324                    $ruleBroken = $lengthLeft < 0;1325                    if ($currentUnit === 0) {1326                        if ($this->gramRules[$unit] & self::NOT_BEGIN_SYLLABLE) {1327                            $ruleBroken = true;1328                        } elseif ($lengthLeft === 0) {1329                            if ($this->gramRules[$unit] & self::VOWEL) {1330                                $wantAnotherUnit = false;1331                            } else {1332                                $ruleBroken = true;1333                            }1334                        }1335                    } else {1336                        $digrams = $this->digramRules;1337                        $allowed = function ($flag) use ($digrams, $unitsInSyllable, $currentUnit, $unit) {1338                            return $digrams[$unitsInSyllable[$currentUnit - 1]][$unit] & $flag;1339                        };1340                        if (1341                            $allowed(self::ILLEGAL_PAIR) ||1342                            ($allowed(self::BREAK_GRAM) && $vowelCount === 0) ||1343                            ($allowed(self::END) && $vowelCount === 0 && !($this->gramRules[$unit] & self::VOWEL))1344                        ) {1345                            $ruleBroken = true;1346                        }1347                        if ($currentUnit === 1) {1348                            if ($allowed(self::NOT_BEGIN)) {1349                                $ruleBroken = true;1350                            }1351                        } else {1352                            $lastUnit = $unitsInSyllable[$currentUnit - 1];1353                            if (1354                                ($currentUnit === 2 && $allowed(self::BEGIN) && ($this->gramRules[$unitsInSyllable[0]] & self::ALTERNATE_VOWEL)) ||1355                                ($allowed(self::NOT_END) && $lengthLeft === 0) ||1356                                ($allowed(self::BREAK_GRAM) || $this->digramRules[$unitsInSyllable[$currentUnit - 2]][$lastUnit] & self::NOT_END) ||1357                                ($allowed(self::PREFIX) && !($this->gramRules[$unitsInSyllable[$currentUnit - 2]] & self::VOWEL))1358                            ) {1359                                $ruleBroken = true;1360                            }1361                            if (1362                                !$ruleBroken &&1363                                $this->gramRules[$unit] & self::VOWEL &&1364                                ($lengthLeft > 0 || !($this->gramRules[$lastUnit] & self::NO_FINAL_SPLIT))1365                            ) {1366                                if ($vowelCount > 0 && $this->gramRules[$lastUnit] & self::VOWEL) {1367                                    $ruleBroken = true;1368                                } elseif ($vowelCount !== 0 && !($this->gramRules[$lastUnit] && self::VOWEL)) {1369                                    if ($this->digramRules[$unitsInSyllable[$currentUnit - 2]][$lastUnit] & self::NOT_END) {1370                                        $ruleBroken = true;1371                                    } else {1372                                        $savedPair = [$unit];1373                                        $wantAnotherUnit = false;1374                                    }1375                                }1376                            }1377                        }1378                        if (!$ruleBroken && $wantAnotherUnit) {1379                            if (1380                                (1381                                    $vowelCount !== 0 &&1382                                    ($this->gramRules[$unit] & self::NO_FINAL_SPLIT) &&1383                                    $lengthLeft === 0 &&1384                                    ($lastUnit && !($this->gramRules[$lastUnit] & self::VOWEL))1385                                ) || ($allowed(self::END) || $lengthLeft === 0)1386                            ) {1387                                $wantAnotherUnit = false;1388                            } elseif ($vowelCount !== 0 && $lengthLeft > 0) {1389                                if (1390                                    $allowed(self::BEGIN) &&1391                                    $currentUnit > 1 &&1392                                    !($vowelCount === 1 && $this->gramRules[$lastUnit] & self::VOWEL)1393                                ) {1394                                    $savedPair = [$unit, $lastUnit];1395                                    $wantAnotherUnit = false;1396                                } elseif ($allowed(self::BREAK_GRAM)) {1397                                    $savedPair = [$unit];1398                                    $wantAnotherUnit = false;1399                                }1400                            } elseif ($allowed(self::SUFFIX)) {1401                                $wantVowel = true;1402                            }1403                        }1404                    }1405                    $tries += 1;1406                    if ($ruleBroken) {1407                        $lengthLeft += strlen($unit);1408                    }1409                } while ($ruleBroken && $tries < $maxRetries);1410                if ($tries <= $maxRetries) {1411                    if (1412                        ($this->gramRules[$unit] & self::VOWEL) &&1413                        ($currentUnit > 0 || !($this->gramRules[$unit] & self::ALTERNATE_VOWEL))1414                    ) {1415                        $vowelCount += 1;1416                    }1417                    if (count($savedPair) === 2) {1418                        $syllable = substr($syllable, 0, strlen($syllable) - strlen($lastUnit));1419                        $lengthLeft += strlen($lastUnit);1420                        $currentUnit -= 2;1421                    } elseif (count($savedPair) === 1) {1422                        $currentUnit -= 1;1423                    } else {1424                        $unitsInSyllable[$currentUnit] = $unit;1425                        $syllable .= $unit;1426                    }1427                }1428                $currentUnit += 1;1429            } while ($tries <= $maxRetries && $wantAnotherUnit);1430        } while ($ruleBroken || $this->isIllegalPlacement($unitsInSyllable));1431        return [$syllable, $unitsInSyllable, $savedPair];1432    }1433    private function isIllegalPlacement($units)1434    {1435        $vowelCount = 0;1436        $failure = false;1437        foreach ($units as $unitCount => $unit) {1438            if ($failure) {1439                break;1440            }1441            if ($unitCount >= 1) {1442                if (1443                    (1444                        !($this->gramRules[$units[$unitCount - 1]] & self::VOWEL) &&1445                        ($this->gramRules[$unit] & self::VOWEL) &&1446                        !($this->gramRules[$unit] & self::NO_FINAL_SPLIT && $unitCount === count($unit)) &&1447                        $vowelCount > 01448                    )1449                    ||1450                    (1451                        $unitCount >= 2 &&1452                        (1453                            (1454                                !($this->gramRules[$units[$unitCount - 2]] & self::VOWEL) &&1455                                !($this->gramRules[$units[$unitCount - 1]] & self::VOWEL) &&1456                                !($this->gramRules[$unit] & self::VOWEL)1457                            )1458                            ||1459                            (1460                                ($this->gramRules[$units[$unitCount - 2]] & self::VOWEL) &&1461                                !(($this->gramRules[$units[0]] & self::ALTERNATE_VOWEL) && $unitCount === 2) &&1462                                ($this->gramRules[$units[$unitCount - 1]] & self::VOWEL) &&1463                                ($this->gramRules[$unit] & self::VOWEL)1464                            )1465                        )1466                    )1467                ) {1468                    $failure = true;1469                }1470            }1471            if (1472                $this->gramRules[$unit] & self::VOWEL &&1473                !(1474                    $this->gramRules[$units[0]] & self::ALTERNATE_VOWEL &&1475                    $unitCount === 0 &&1476                    count($units) > 11477                )1478            ) {1479                $vowelCount += 1;1480            }1481        }1482        return $failure;1483    }1484    private function getRandomUnit($type)1485    {1486        if ($type & self::VOWEL) {1487            return $this->chooseRandom($this->vowelGrams);1488        } else {1489            return $this->chooseRandom($this->grams);1490        }1491    }1492    private function isImproperWord($units)1493    {1494        foreach ($units as $unitCount => $unit) {1495            if ($unitCount > 0 && $this->digramRules[$units[$unitCount - 1]][$unit] & self::ILLEGAL_PAIR) {1496                return true;1497            }1498            if ($unitCount >= 2) {1499                if (1500                    (1501                        ($this->gramRules[$units[$unitCount - 2]] & self::VOWEL) &&1502                        !($this->gramRules[$units[$unitCount - 2]] & self::ALTERNATE_VOWEL) &&1503                        ($this->gramRules[$units[$unitCount - 1]] & self::VOWEL) &&1504                        ($this->gramRules[$unit] & self::VOWEL)1505                    )1506                    ||1507                    (1508                        !($this->gramRules[$units[$unitCount - 2]] & self::VOWEL) &&1509                        !($this->gramRules[$units[$unitCount - 1]] & self::VOWEL) &&1510                        !($this->gramRules[$units[$unitCount]] & self::VOWEL)1511                    )1512                ) {1513                    return true;1514                }1515            }1516        }1517        return false;1518    }1519    private function haveInitialY($units)1520    {1521        $vowelCount = 0;1522        $normalVowelCount = 0;1523        foreach ($units as $unitCount => $unit) {1524            if ($this->gramRules[$unit] & self::VOWEL) {1525                $vowelCount += 1;1526                if (!($this->gramRules[$unit] && self::ALTERNATE_VOWEL) || $unitCount > 0) {1527                    $normalVowelCount += 1;1528                }1529            }1530        }1531        return $vowelCount <= 1 && $normalVowelCount === 0;1532    }1533    private function haveFinalSplit($units)1534    {1535        $vowelCount = 0;1536        foreach ($units as $unit) {1537            if ($this->gramRules[$unit] & self::VOWEL) {1538                $vowelCount += 1;1539            }1540        }1541        return $vowelCount === 1 && ($this->gramRules[$units[count($units) - 1]] & self::NO_FINAL_SPLIT);1542    }1543}...

Full Screen

Full Screen

bd.php

Source:bd.php Github

copy

Full Screen

1<?php2if( !defined( 'ABSPATH')){ exit(); }		3	4/* 5Создаем таблицы, необходимые нам	6*/	7		8global $wpdb;9$prefix = $wpdb->prefix;10	$table_name = $wpdb->prefix ."change";11    $sql = "CREATE TABLE IF NOT EXISTS $table_name(12		`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,13		`meta_key` varchar(250) NOT NULL,14		`meta_key2` varchar(250) NOT NULL,15		`meta_value` longtext NOT NULL,16		PRIMARY KEY ( `id` )	17	) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;";18	$wpdb->query($sql);19	$table_name = $wpdb->prefix ."login_check";20    $sql = "CREATE TABLE IF NOT EXISTS $table_name(21		`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,22		`datelogin` datetime NOT NULL,23		`user_id` bigint(20) NOT NULL,24		`user_login` varchar(250) NOT NULL,25		`user_ip` varchar(250) NOT NULL,26		`user_browser` varchar(250) NOT NULL,27		PRIMARY KEY ( `id` )	28	) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;";29	$wpdb->query($sql);	30	31	/* безопасность */32	$query = $wpdb->query("SHOW COLUMNS FROM ".$wpdb->prefix ."users LIKE 'sec_lostpass'");33    if ($query == 0){34		$wpdb->query("ALTER TABLE ".$wpdb->prefix ."users ADD `sec_lostpass` int(1) NOT NULL default '1'");35    }36	$query = $wpdb->query("SHOW COLUMNS FROM ".$wpdb->prefix ."users LIKE 'sec_login'");37    if ($query == 0){38		$wpdb->query("ALTER TABLE ".$wpdb->prefix ."users ADD `sec_login` int(1) NOT NULL default '0'");39    }40	$query = $wpdb->query("SHOW COLUMNS FROM ".$wpdb->prefix ."users LIKE 'email_login'");41    if ($query == 0){42		$wpdb->query("ALTER TABLE ".$wpdb->prefix ."users ADD `email_login` int(1) NOT NULL default '0'");43    }44	$query = $wpdb->query("SHOW COLUMNS FROM ".$wpdb->prefix ."users LIKE 'enable_ips'");45    if ($query == 0) {46		$wpdb->query("ALTER TABLE ".$wpdb->prefix ."users ADD `enable_ips` longtext NOT NULL");47    }		48	/* end безопаность */49	$query = $wpdb->query("SHOW COLUMNS FROM ".$wpdb->prefix ."users LIKE 'auto_login1'");50    if ($query == 0){51		$wpdb->query("ALTER TABLE ".$wpdb->prefix ."users ADD `auto_login1` varchar(250) NOT NULL");52    }53	$query = $wpdb->query("SHOW COLUMNS FROM ".$wpdb->prefix ."users LIKE 'auto_login2'");54    if ($query == 0){55		$wpdb->query("ALTER TABLE ".$wpdb->prefix ."users ADD `auto_login2` varchar(250) NOT NULL");56    }57	$query = $wpdb->query("SHOW COLUMNS FROM ".$wpdb->prefix ."users LIKE 'user_discount'");58    if ($query == 0){59		$wpdb->query("ALTER TABLE ".$wpdb->prefix ."users ADD `user_discount` varchar(50) NOT NULL default '0'");60    }	61/* архив */62	$table_name= $wpdb->prefix ."archive_data";63    $sql = "CREATE TABLE IF NOT EXISTS $table_name(64		`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,65		`meta_key` varchar(250) NOT NULL,66		`meta_key2` varchar(250) NOT NULL,67		`meta_key3` varchar(250) NOT NULL,68		`item_id` bigint(20) NOT NULL default '0',69		`meta_value` varchar(20) NOT NULL default '0',70		PRIMARY KEY ( `id` )	71	) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;";72	$wpdb->query($sql);73/*74платежные системы75psys_title - значение76psys_logo - логотип77*/78	$table_name = $wpdb->prefix ."psys";79    $sql = "CREATE TABLE IF NOT EXISTS $table_name(80		`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT ,81		`psys_title` longtext NOT NULL,82		`psys_logo` longtext NOT NULL,83		PRIMARY KEY ( `id` )	84	) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;";85	$wpdb->query($sql);86/* end платежные системы */87/*88коды валют89vtype_title - значение90vncurs - внутренний курс за 1 доллар91parser - id парсера92nums - число93elem - 0-сумма, 1-процент94*/95	$table_name = $wpdb->prefix ."vtypes";96    $sql = "CREATE TABLE IF NOT EXISTS $table_name(97		`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT ,98		`vtype_title` longtext NOT NULL,99		`vncurs` varchar(50) NOT NULL default '0',100		`parser` bigint(20) NOT NULL default '0',101		`nums` varchar(50) NOT NULL default '0',102		`elem` int(2) NOT NULL default '0',103		PRIMARY KEY ( `id` )	104	) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;";105	$wpdb->query($sql);106/* end коды валют */107/* создаем коды валют */108	$vtypes = array('RUB','EUR','USD','UAH','AMD','KZT','GLD','BYN','UZS','BTC','TRY');109	if(is_array($vtypes)){110		foreach($vtypes as $type){111			$cc = $wpdb->query("SELECT id FROM ". $wpdb->prefix ."vtypes WHERE vtype_title='$type'");112			if($cc == 0){113				$wpdb->insert($wpdb->prefix ."vtypes", array('vtype_title'=>$type, 'vncurs'=>'1'));114			}115		}116	}117/* end создаем коды валют */118/*119Расписание оператора120status - статус121*/122	$table_name= $wpdb->prefix ."operator_schedules";123    $sql = "CREATE TABLE IF NOT EXISTS $table_name(124		`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,125		`status` int(5) NOT NULL default '0',126		`h1` varchar(5) NOT NULL default '0',127		`m1` varchar(5) NOT NULL default '0',128		`h2` varchar(5) NOT NULL default '0',129		`m2` varchar(5) NOT NULL default '0',		130		`d1` int(1) NOT NULL default '0',131		`d2` int(1) NOT NULL default '0',132		`d3` int(1) NOT NULL default '0',133		`d4` int(1) NOT NULL default '0',134		`d5` int(1) NOT NULL default '0',135		`d6` int(1) NOT NULL default '0',136		`d7` int(1) NOT NULL default '0',137		`save_order` bigint(20) NOT NULL default '0',138		PRIMARY KEY ( `id` )	139	) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;";140	$wpdb->query($sql);	141/*142валюты143valut_logo - логотип валюты144psys_logo - лого платежки145psys_id - id ПС146psys_title - название ПС147vtype_id - id кода валюты148vtype_title - название кода валюты149valut_decimal - знаков после запятой150xml_value - значение для XML151valut_status - активность валюты (1 - активна, 0 - не активна)152valut_reserv - резерв (автосумма)153reserv_place - откуда брать резерв (0-считать)154minzn - минимальное кол-во символов155maxzn - максимальное кол-во символов156firstzn - первые буквы157cifrzn - что используется (0-буквы и цифры, 1-только цифры, 2-только буквы, 3-email, 4-все символы, 5-телефон)158vidzn - вид счета (0-счет, 1-карта, 2-номер телефона)159helps - подсказка при заполнении (отдаю)160helps2 - подсказка при заполнении (получаю)161txt1 - название отдаете162show1 - выводить при отдаете163txt2 - название получаете164show2 - выводить при получаете165lead_num - число приведения166cf_hidden - видимость на сайте167check_text - текст проверенного кошелька168check_purse - интерфейс проверки кошелька169*/170	$table_name= $wpdb->prefix ."valuts";171    $sql = "CREATE TABLE IF NOT EXISTS $table_name(172		`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,173		`valut_logo` longtext NOT NULL,174		`psys_logo` longtext NOT NULL, 175		`valut_decimal` int(2) NOT NULL default '2',176		`valut_status` int(1) NOT NULL default '1',177		`valut_reserv` varchar(50) NOT NULL default '0',178		`reserv_place` varchar(150) NOT NULL default '0',179		`xml_value` varchar(250) NOT NULL,		180		`minzn` int(5) NOT NULL default '0',181		`maxzn` int(5) NOT NULL default '100',182		`firstzn` varchar(20) NOT NULL,183		`cifrzn` int(2) NOT NULL default '0',184		`vidzn` int(2) NOT NULL default '0',185		`lead_num` varchar(20) NOT NULL default '0',186		`helps` longtext NOT NULL,187		`helps2` longtext NOT NULL,188		`txt1` longtext NOT NULL,189		`txt2` longtext NOT NULL,190		`show1` int(2) NOT NULL default '1',191		`show2` int(2) NOT NULL default '1',192		`psys_id` bigint(20) NOT NULL default '0',193		`psys_title` longtext NOT NULL,		194		`vtype_id` bigint(20) NOT NULL default '0',195		`vtype_title` longtext NOT NULL,196		`cf_hidden` int(2) NOT NULL default '0',197		`site_order` bigint(20) NOT NULL default '0',198		`reserv_order` bigint(20) NOT NULL default '0',199		`check_text` longtext NOT NULL,200		`check_purse` varchar(150) NOT NULL default '0',201		PRIMARY KEY ( `id` )	202	) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;";203	$wpdb->query($sql);204	$table_name= $wpdb->prefix ."valuts_meta";205    $sql = "CREATE TABLE IF NOT EXISTS $table_name(206		`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT ,207		`item_id` bigint(20) NOT NULL default '0',208		`meta_key` longtext NOT NULL,209		`meta_value` longtext NOT NULL,210		PRIMARY KEY ( `id` )	211	) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;";212	$wpdb->query($sql);213/*214транзакции резерва215trans_title - название транзакции216trans_create - дата создания транзакции217trans_edit - дата изменения транзакции218user_creator - id юзера создавшего транзакцию219user_editor - id юзера отредактировавшего транзакцию220trans_summ - сумма221valut_id - id валюты222vtype_id - id типа валюты223vtype_title - название типа валюты224*/225	$table_name= $wpdb->prefix ."trans_reserv";226    $sql = "CREATE TABLE IF NOT EXISTS $table_name(227		`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,228		`trans_title` longtext NOT NULL,229		`trans_create` datetime NOT NULL,230		`trans_edit` datetime NOT NULL,231		`user_creator` bigint(20) NOT NULL default '0',232		`user_editor` bigint(20) NOT NULL default '0',233		`trans_summ` varchar(50) NOT NULL default '0',234		`valut_id` bigint(20) NOT NULL default '0',235		`vtype_id` bigint(20) NOT NULL default '0',236		`vtype_title` longtext NOT NULL,237		PRIMARY KEY ( `id` )	238	) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;";239	$wpdb->query($sql);240/*241Дополнительные поля валют242tech_name - техническое название243cf_name - название244vid - 0 текст, 1- select245cf_req - 0-не обязательно, 1-обязательно246minzn - мин.длинна247maxzn - макс длинна248firstzn - начальное значение249helps - подсказка отдаете250datas - если селект, то массив выборки251cf_hidden - видимость на сайте252valut_id - id валюты253place_id - 0 - и там и там, 1 - отдаете, 2 - получаете254uniqueid - идентификатор для автовыплат и прочего255*/	256	$table_name= $wpdb->prefix ."custom_fields_valut";257    $sql = "CREATE TABLE IF NOT EXISTS $table_name(258		`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT ,259		`tech_name` longtext NOT NULL,260		`cf_name` longtext NOT NULL,261		`vid` int(1) NOT NULL default '0',262		`valut_id` bigint(20) NOT NULL default '0',263		`cf_req` int(1) NOT NULL default '0',264		`place_id` int(1) NOT NULL default '0',265		`minzn` int(2) NOT NULL default '0',266		`maxzn` int(5) NOT NULL default '100',267		`firstzn` varchar(20) NOT NULL,268		`uniqueid` varchar(250) NOT NULL,269		`helps` longtext NOT NULL,270		`datas` longtext NOT NULL,271		`status` int(2) NOT NULL default '1',272		`cf_hidden` int(2) NOT NULL default '0',273		`cf_order` bigint(20) NOT NULL default '0',274		PRIMARY KEY ( `id` )	275	) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;";276	$wpdb->query($sql);277/*278Дополнительные поля направлений279tech_name - техническое название280cf_name - название281vid - 0 текст, 1- select282cf_req - 0-не обязательно, 1-обязательно283cf_hidden - видимость на сайте284minzn - мин.длинна285maxzn - макс длинна286firstzn - начальное значение287helps - подсказка288datas - если селект, то массив выборки289*/	290	$table_name= $wpdb->prefix ."custom_fields";291    $sql = "CREATE TABLE IF NOT EXISTS $table_name(292		`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT ,293		`tech_name` longtext NOT NULL,294		`cf_name` longtext NOT NULL,295		`vid` int(1) NOT NULL default '0',296		`cf_req` int(1) NOT NULL default '0',297		`minzn` int(2) NOT NULL default '0',298		`maxzn` int(5) NOT NULL default '100',299		`firstzn` varchar(20) NOT NULL,300		`uniqueid` varchar(250) NOT NULL,301		`helps` longtext NOT NULL,302		`cf_auto` varchar(250) NOT NULL,303		`datas` longtext NOT NULL,304		`status` int(2) NOT NULL default '1',305		`cf_hidden` int(2) NOT NULL default '0',306		`cf_order` bigint(20) NOT NULL default '0',307		PRIMARY KEY ( `id` )	308	) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;";309	$wpdb->query($sql);	310	311	$table_name= $wpdb->prefix ."cf_naps";312    $sql = "CREATE TABLE IF NOT EXISTS $table_name(313		`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT ,314		`naps_id` bigint(20) NOT NULL default '0',315		`cf_id` bigint(20) NOT NULL default '0',316		`place_id` bigint(20) NOT NULL default '0',317		PRIMARY KEY ( `id` )	318	) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;";319	$wpdb->query($sql);320/*321направления обменов322valut_id1 - валюта отдаете323valut_id2 - валюта получаете324psys_id1 - id платежной системы отдаете325psys_id2 - id платежной системы получаете326naps_status - статус направления (1-активно, 0-неактивно)327show_file - 0-не выводить в файлах, 1-выводить в файлах328curs1 - курс 1329curs2 - курс 2330minsumm1 - Мин. сумма обмена (для Отдаю)331minsumm2 - Мин. сумма обмена (для Получаю)332maxsumm1 - Макс. сумма обмена (для Отдаю)333maxsumm2 - Макс. сумма обмена (для Получаю)334com_summ1 - сумма коммисси 1335com_pers1 - процент коммисси 1336com_summ2 - сумма коммисси 2337com_pers2 - процент коммисси 2338profit_summ1 - сумма прибыли 1339profit_pers1 - процент прибыли 1340profit_summ2 - сумма прибыли 2341profit_pers2 - процент прибыли 2342minsumm1com - минимальная сумма комиссии343maxsumm1com - максимальная сумма комиссии344pay_com1 - оплата комиссии (0-юзер, 1-обменник)345pay_com2 - оплата комиссии (0-юзер, 1-обменник)346nscom1 - нестандартная комиссия (0-нет, 1-да)347nscom2 - нестандартная комиссия (0-нет, 1-да)348com_box_summ1 - доп.комиссия с отправителя сумма349com_box_pers1 - доп.комиссия с отправителя процент350com_box_min1 - доп.комиссия с отправителя351com_box_summ2 - доп.комиссия с получателя сумма352com_box_pers2 - доп.комиссия с получателя процент353com_box_min2 - доп.комиссия с получателя354user_sk - скидка пользователей355max_user_sk - максимальная скидка356maxnaps - ограничение резерва по направлению обмена357not_ip - запрещенные ip или маски, массив358m_in - мертчант приема оплаты 359m_out - мерчант автовыплаты360naps_name - ЧПУ направления361site_order1 - сортировка для тарифов и карты сайта362*/363	$table_name = $wpdb->prefix ."naps";364    $sql = "CREATE TABLE IF NOT EXISTS $table_name(365		`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT ,366		`createdate` datetime NOT NULL,367		`editdate` datetime NOT NULL,368		`autostatus` int(1) NOT NULL default '1',369		`valut_id1` bigint(20) NOT NULL default '0',370		`valut_id2` bigint(20) NOT NULL default '0',371		`psys_id1` bigint(20) NOT NULL default '0',372		`psys_id2` bigint(20) NOT NULL default '0',	373		`tech_name` longtext NOT NULL,374		`curs1` varchar(50) NOT NULL default '0',375		`curs2` varchar(50) NOT NULL default '0',376		`profit_summ1` varchar(50) NOT NULL default '0',377		`profit_summ2` varchar(50) NOT NULL default '0',378		`profit_pers1` varchar(20) NOT NULL default '0',379		`profit_pers2` varchar(20) NOT NULL default '0',		380		`com_summ1` varchar(50) NOT NULL default '0',381		`com_summ2` varchar(50) NOT NULL default '0',		382		`com_pers1` varchar(20) NOT NULL default '0',383		`com_pers2` varchar(20) NOT NULL default '0',		384		`com_summ1_check` varchar(50) NOT NULL default '0',385		`com_summ2_check` varchar(50) NOT NULL default '0',386		`com_pers1_check` varchar(20) NOT NULL default '0',387		`com_pers2_check` varchar(20) NOT NULL default '0',388		`pay_com1` int(1) NOT NULL default '0',389		`pay_com2` int(1) NOT NULL default '0',390		`nscom1` int(1) NOT NULL default '0',391		`nscom2` int(1) NOT NULL default '0',		392		`maxsumm1com` varchar(250) NOT NULL default '0', 393		`maxsumm2com` varchar(250) NOT NULL default '0',394		`minsumm1com` varchar(50) NOT NULL default '0',  395		`minsumm2com` varchar(50) NOT NULL default '0',	396		`minsumm1` varchar(250) NOT NULL default '0',397		`minsumm2` varchar(250) NOT NULL default '0',398		`maxsumm1` varchar(250) NOT NULL default '0',399		`maxsumm2` varchar(250) NOT NULL default '0',400		`com_box_summ1` varchar(250) NOT NULL default '0',401		`com_box_pers1` varchar(250) NOT NULL default '0',402		`com_box_min1` varchar(250) NOT NULL default '0',403		`com_box_summ2` varchar(250) NOT NULL default '0',404		`com_box_pers2` varchar(250) NOT NULL default '0',405		`com_box_min2` varchar(250) NOT NULL default '0',406		`m_in` varchar(150) NOT NULL default '0',407		`m_out` varchar(150) NOT NULL default '0',		408		`user_sk` int(1) NOT NULL default '1',409		`max_user_sk` varchar(5) NOT NULL default '50',		410		`check_purse` int(1) NOT NULL default '0',411		`req_check_purse` int(1) NOT NULL default '0',		412		`naps_name` varchar(250) NOT NULL,413		`naps_status` int(2) NOT NULL default '1',414		`site_order1` bigint(20) NOT NULL default '0',415		`to1` bigint(20) NOT NULL default '0',416		`to2_1` bigint(20) NOT NULL default '0',417		`to2_2` bigint(20) NOT NULL default '0',418		`to3_1` bigint(20) NOT NULL default '0',		419		PRIMARY KEY ( `id` )	420	) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;";421	$wpdb->query($sql);	422	423	$table_name = $wpdb->prefix ."naps_meta";424    $sql = "CREATE TABLE IF NOT EXISTS $table_name(425		`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT ,426		`item_id` bigint(20) NOT NULL default '0',427		`meta_key` longtext NOT NULL,428		`meta_value` longtext NOT NULL,429		PRIMARY KEY ( `id` )	430	) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;";431	$wpdb->query($sql);432	$table_name = $wpdb->prefix ."naps_order";433    $sql = "CREATE TABLE IF NOT EXISTS $table_name(434		`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT ,435		`naps_id` bigint(20) NOT NULL default '0',436		`v_id` bigint(20) NOT NULL default '0',437		`order1` bigint(20) NOT NULL default '0',438		PRIMARY KEY ( `id` )	439	) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;";440	$wpdb->query($sql);441/* обмены 442createdate - дата создания443editdate - дата смены статуса444naps_id - id направления445curs1 - курс 1446curs2 - курс 2447valut1 - название валюты 1448valut2 - название валюты 2449valut1i - id валюты 1450valut2i - id валюты 2451vtype1 - тип валюты 1452vtype2 - тип валюты 1453vtype1i - id тип валюты 1454vtype2i - id тип валюты 2455psys1i - id платежной системы 1456psys2i - id платежной системы 2457user_id - id юзера458user_sk - скидка пользователя в момент обмена459user_sksumm - сумма скидки юзера460user_country - страна461user_ip - ip462first_name463last_name464second_name465user_phone466user_skype467user_email468account1 - счет 1469account2 - счет 2470metas - обычные поля471dmetas - доп.поля валют472ref_id - id реферала473profit - сумма прибыли($)474summp - сумма партнера($)475partpr - партнерский процент476pcalc - партнерское начисление (0-не насчитано, 1-насчитано) 477		защита от изменения условий начисления по юзерам.478exsum - сумма обмена в валюте479summ1 - сумма отдаете480dop_com1 - сумма доп.комиссии481summ1_dc - сумма отдаете с доп.комиссией482com_ps1 - комисия платежной системы по отдаете483summ1c - сумма с комиссией для юзера484summ1cr - сумма с комиссией для резерва обменника485dop_com2 - сумма доп.комиссии486com_ps2 - комисия платежной системы по получаете487summ2t - сумма получаете по курсу488summ2 - сумма получаете по курсу (учтена скидка)489summ2_dc - сумма получаете с доп.комиссией490summ2c - сумма с комиссией для юзера491summ2cr - сумма с комиссией для резерва обменника492mystatus - id пользовательского статуса493status - статус 494	auto - автоматически(не заявка)495	new - новая заявка496	cancel - отменена пользователем497	delete - удалена498	techpay - техническая оплата499	payed - юзер сказал что оплачена(я оплатил!)500	realpay - реально оплачена501	verify - оплачена с другого кошелька	502	error - ошибка503	success - выполненая504	505	realdelete - условно(фильтр)506	autodelete507	508hashed - хэш509user_hash - хэш пользователя510bid_locale - локализация511naschet - счет для оплаты512m_in - мертчант приема оплаты513m_out - мерчант автовыплаты514exceed_pay - превышена оплата или нет515hashdata - данные в хэше516*/517	$table_name= $wpdb->prefix ."bids";518    $sql = "CREATE TABLE IF NOT EXISTS $table_name(519		`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT ,520		`createdate` datetime NOT NULL,521		`editdate` datetime NOT NULL,		522		`naps_id` bigint(20) NOT NULL default '0',523		`curs1` varchar(50) NOT NULL default '0',524		`curs2` varchar(50) NOT NULL default '0',		525		`valut1` longtext NOT NULL,526		`valut2` longtext NOT NULL,527		`valut1i` bigint(20) NOT NULL default '0',528		`valut2i` bigint(20) NOT NULL default '0',529		`vtype1` varchar(35) NOT NULL,530		`vtype2` varchar(35) NOT NULL,531		`vtype1i` bigint(20) NOT NULL default '0',532		`vtype2i` bigint(20) NOT NULL default '0',533		`psys1i` bigint(20) NOT NULL default '0',534		`psys2i` bigint(20) NOT NULL default '0',		535		`exsum` varchar(50) NOT NULL default '0',536		`summ1` varchar(50) NOT NULL default '0',537		`dop_com1` varchar(50) NOT NULL default '0',538		`summ1_dc` varchar(50) NOT NULL default '0',539		`com_ps1` varchar(50) NOT NULL default '0',540		`summ1c` varchar(50) NOT NULL default '0',541		`summ1cr` varchar(50) NOT NULL default '0',542		`summ2t` varchar(50) NOT NULL default '0',543		`summ2` varchar(50) NOT NULL default '0',544		`dop_com2` varchar(50) NOT NULL default '0',545		`com_ps2` varchar(50) NOT NULL default '0',546		`summ2_dc` varchar(50) NOT NULL default '0',547		`summ2c` varchar(50) NOT NULL default '0',548		`summ2cr` varchar(50) NOT NULL default '0',549		`profit` varchar(50) NOT NULL default '0',550		`user_id` bigint(20) NOT NULL default '0',551		`user_sk` varchar(10) NOT NULL default '0',552		`user_sksumm` varchar(50) NOT NULL default '0',553		`user_ip` varchar(150) NOT NULL,554		`first_name` varchar(150) NOT NULL,555		`last_name` varchar(150) NOT NULL,556		`second_name` varchar(150) NOT NULL,557		`user_phone` varchar(150) NOT NULL,558		`user_skype` varchar(150) NOT NULL,559		`user_email` varchar(150) NOT NULL,560		`user_passport` varchar(250) NOT NULL,561		`metas` longtext NOT NULL,562		`dmetas` longtext NOT NULL,563		`unmetas` longtext NOT NULL,564		`account1` varchar(250) NOT NULL,565		`account2` varchar(250) NOT NULL,		566		`naschet` varchar(250) NOT NULL,567		`soschet` varchar(250) NOT NULL,568		`trans_in` varchar(250) NOT NULL default '0',569		`trans_out` varchar(250) NOT NULL default '0',		570		`status` varchar(35) NOT NULL,571		`hashed` varchar(35) NOT NULL,572		`user_hash` varchar(150) NOT NULL,573		`bid_locale` varchar(10) NOT NULL,574		`m_in` varchar(150) NOT NULL default '0',575		`m_out` varchar(150) NOT NULL default '0',576		`check_purse1` varchar(20) NOT NULL default '0',577		`check_purse2` varchar(20) NOT NULL default '0',578		`exceed_pay` int(1) NOT NULL default '0',579		`hashdata` longtext NOT NULL,580		`touap_date` datetime NOT NULL,581		PRIMARY KEY ( `id` )	582	) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;";583	$wpdb->query($sql); 584	585/*586мета587comment_user - комментарий для юзера588comment_admin - комментарий для админа589device - 0-веб, 1-мобильная версия590new - новичок или нет591pay_sum - сумма оплаты592pay_ac - аккаунт с которого оплатили593*/	594	$table_name= $wpdb->prefix ."bids_meta";595    $sql = "CREATE TABLE IF NOT EXISTS $table_name(596		`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT ,597		`item_id` bigint(20) NOT NULL default '0',598		`meta_key` longtext NOT NULL,599		`meta_value` longtext NOT NULL,600		PRIMARY KEY ( `id` )	601	) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;";602	$wpdb->query($sql);															603	do_action('pn_bd_activated');				 ...

Full Screen

Full Screen

RedBeanModelToTableSchemaAdapterTest.php

Source:RedBeanModelToTableSchemaAdapterTest.php Github

copy

Full Screen

...23     * You can contact Zurmo, Inc. with a mailing address at 27 North Wacker Drive24     * Suite 370 Chicago, IL 60606. or at email address contact@zurmo.com.25     *26     * The interactive user interfaces in original and modified versions27     * of this program must display Appropriate Legal Notices, as required under28     * Section 5 of the GNU Affero General Public License version 3.29     *30     * In accordance with Section 7(b) of the GNU Affero General Public License version 3,31     * these Appropriate Legal Notices must retain the display of the Zurmo32     * logo and Zurmo copyright notice. If the display of the logo is not reasonably33     * feasible for technical reasons, the Appropriate Legal Notices must display the words34     * "Copyright Zurmo Inc. 2014. All rights reserved".35     ********************************************************************************/36    class RedBeanModelToTableSchemaAdapterTest extends BaseTest37    {38        protected static $messageLogger;39        public static function setUpBeforeClass()40        {41            parent::setUpBeforeClass();42            SecurityTestHelper::createSuperAdmin();43            $super = User::getByUsername('super');44            Yii::app()->user->userModel = $super;45            static::$messageLogger = new MessageLogger();46        }47        public function testResolveWithEmptyModelClassName()48        {49            $modelClassName     = null;50            $schema             = RedBeanModelToTableSchemaAdapter::resolve($modelClassName, static::$messageLogger);51            $this->assertFalse($schema);52        }53        /**54         * @depends testResolveWithEmptyModelClassName55         */56        public function testResolveWithInexistentModelClassName()57        {58            $modelClassName     = 'ModelClass';59            $schema             = RedBeanModelToTableSchemaAdapter::resolve($modelClassName, static::$messageLogger);60            $this->assertFalse($schema);61        }62        /**63         * @depends testResolveWithInexistentModelClassName64         */65        public function testResolveForModelClassWithNoOwnMetadataAndCannotHaveBean()66        {67            $modelClassName     = 'MashableActivity';68            $schema             = RedBeanModelToTableSchemaAdapter::resolve($modelClassName, static::$messageLogger);69            $this->assertFalse($schema);70        }71        /**72         * @depends testResolveForModelClassWithNoOwnMetadataAndCannotHaveBean73         */74        public function testResolveForModelClassWithNoOwnMetadataAndCanHaveBean()75        {76            $modelClassName     = 'OwnedSecurableItem';77            $expectedSchema     = array(78                'ownedsecurableitem' => array(79                    'columns' => array(80                        array(81                            'name' => 'securableitem_id',82                            'type' => 'INT(11)',83                            'unsigned' => 'UNSIGNED',84                            'notNull' => 'NULL', // Not Coding Standard85                            'collation' => null,86                            'default' => 'DEFAULT NULL', // Not Coding Standard87                        ),88                        array(89                            'name' => 'owner__user_id',90                            'type' => 'INT(11)',91                            'unsigned' => 'UNSIGNED',92                            'notNull' => 'NULL', // Not Coding Standard93                            'collation' => null,94                            'default' => 'DEFAULT NULL', // Not Coding Standard95                        ),96                    ),97                    'indexes' => array(98                        'owner__user_id' => array('columns' => array('owner__user_id'),99                        'unique'         => false),100                    ),101                ),102            );103            $schema             = RedBeanModelToTableSchemaAdapter::resolve($modelClassName, static::$messageLogger);104            $this->assertNotEmpty($schema);105            $this->assertEquals($expectedSchema, $schema);106        }107        /**108         * @depends testResolveForModelClassWithNoOwnMetadataAndCanHaveBean109         */110        public function testResolve()111        {112            $expectedSchema     = array('_user' =>113                array('columns' =>114                    array(115                        array(116                            'name' => 'hash',117                            'type' => 'VARCHAR(60)',118                            'unsigned' => null,119                            'notNull' => 'NULL', // Not Coding Standard120                            'collation' => 'COLLATE utf8_unicode_ci',121                            'default' => 'DEFAULT NULL', // Not Coding Standard122                        ),123                        array(124                            'name' => 'language',125                            'type' => 'VARCHAR(10)',126                            'unsigned' => null,127                            'notNull' => 'NULL', // Not Coding Standard128                            'collation' => 'COLLATE utf8_unicode_ci',129                            'default' => 'DEFAULT NULL', // Not Coding Standard130                        ),131                        array(132                            'name' => 'locale',133                            'type' => 'VARCHAR(10)',134                            'unsigned' => null,135                            'notNull' => 'NULL', // Not Coding Standard136                            'collation' => 'COLLATE utf8_unicode_ci',137                            'default' => 'DEFAULT NULL', // Not Coding Standard138                        ),139                        array(140                            'name' => 'timezone',141                            'type' => 'VARCHAR(64)',142                            'unsigned' => null,143                            'notNull' => 'NULL', // Not Coding Standard144                            'collation' => 'COLLATE utf8_unicode_ci',145                            'default' => 'DEFAULT NULL', // Not Coding Standard146                        ),147                        array(148                            'name' => 'username',149                            'type' => 'VARCHAR(64)',150                            'unsigned' => null,151                            'notNull' => 'NULL', // Not Coding Standard152                            'collation' => 'COLLATE utf8_unicode_ci',153                            'default' => 'DEFAULT NULL', // Not Coding Standard154                        ),155                        array(156                            'name' => 'serializedavatardata',157                            'type' => 'TEXT',158                            'unsigned' => null,159                            'notNull' => 'NULL', // Not Coding Standard160                            'collation' => 'COLLATE utf8_unicode_ci',161                            'default' => 'DEFAULT NULL', // Not Coding Standard162                        ),163                        array(164                            'name' => 'isactive',165                            'type' => 'TINYINT(1) UNSIGNED',166                            'unsigned' => null,167                            'notNull' => 'NULL', // Not Coding Standard168                            'collation' => null,169                            'default' => 'DEFAULT NULL', // Not Coding Standard170                        ),171                        array(172                            'name' => 'isrootuser',173                            'type' => 'TINYINT(1) UNSIGNED',174                            'unsigned' => null,175                            'notNull' => 'NULL', // Not Coding Standard176                            'collation' => null,177                            'default' => 'DEFAULT NULL', // Not Coding Standard178                        ),179                        array(180                            'name' => 'hidefromselecting',181                            'type' => 'TINYINT(1) UNSIGNED',182                            'unsigned' => null,183                            'notNull' => 'NULL', // Not Coding Standard184                            'collation' => null,185                            'default' => 'DEFAULT NULL', // Not Coding Standard186                        ),187                        array(188                            'name' => 'issystemuser',189                            'type' => 'TINYINT(1) UNSIGNED',190                            'unsigned' => null,191                            'notNull' => 'NULL', // Not Coding Standard192                            'collation' => null,193                            'default' => 'DEFAULT NULL', // Not Coding Standard194                        ),195                        array(196                            'name' => 'hidefromleaderboard',197                            'type' => 'TINYINT(1) UNSIGNED',198                            'unsigned' => null,199                            'notNull' => 'NULL', // Not Coding Standard200                            'collation' => null,201                            'default' => 'DEFAULT NULL', // Not Coding Standard202                        ),203                        array(204                            'name' => 'lastlogindatetime',205                            'type' => 'DATETIME',206                            'unsigned' => null,207                            'notNull' => 'NULL', // Not Coding Standard208                            'collation' => null,209                            'default' => 'DEFAULT NULL', // Not Coding Standard210                        ),211                        array(212                            'name' => 'permitable_id',213                            'type' => 'INT(11)',214                            'unsigned' => 'UNSIGNED',215                            'notNull' => 'NULL', // Not Coding Standard216                            'collation' => null,217                            'default' => 'DEFAULT NULL', // Not Coding Standard218                        ),219                        array(220                            'name' => 'person_id',221                            'type' => 'INT(11)',222                            'unsigned' => 'UNSIGNED',223                            'notNull' => 'NULL', // Not Coding Standard224                            'collation' => null,225                            'default' => 'DEFAULT NULL', // Not Coding Standard226                        ),227                        array(228                            'name' => 'currency_id',229                            'type' => 'INT(11)',230                            'unsigned' => 'UNSIGNED',231                            'notNull' => 'NULL', // Not Coding Standard232                            'collation' => null,233                            'default' => 'DEFAULT NULL', // Not Coding Standard234                        ),235                        array(236                            'name' => 'manager__user_id',237                            'type' => 'INT(11)',238                            'unsigned' => 'UNSIGNED',239                            'notNull' => 'NULL', // Not Coding Standard240                            'collation' => null,241                            'default' => 'DEFAULT NULL', // Not Coding Standard242                        ),243                        array(244                            'name' => 'role_id',245                            'type' => 'INT(11)',246                            'unsigned' => 'UNSIGNED',247                            'notNull' => 'NULL', // Not Coding Standard248                            'collation' => null,249                            'default' => 'DEFAULT NULL', // Not Coding Standard250                        ),251                    ),252                    'indexes' => array(253                        'unique_emanresu' => array(254                            'columns' => array('username'),255                            'unique' => true,256                            ),257                        'permitable_id' => array('columns' => array('permitable_id'),258                            'unique'         => false),259                    ),260                    ),261                );262            $modelClassName     = 'User';263            $schema             = RedBeanModelToTableSchemaAdapter::resolve($modelClassName, static::$messageLogger);264            $this->assertNotEmpty($schema);265            $this->assertEquals($expectedSchema, $schema);266        }267        /**268         * @depends testResolve269         */270        public function testResolveForTestModel()271        {272            $expectedSchema     = array('emailtemplatemodeltestitem' => array(273                'columns' => array(274                    array(275                        'name' => 'firstname',276                        'type' => 'VARCHAR(32)',277                        'unsigned' => null,278                        'notNull' => 'NULL', // Not Coding Standard279                        'collation' => 'COLLATE utf8_unicode_ci',280                        'default' => 'DEFAULT NULL', // Not Coding Standard281                    ),282                    array(283                        'name' => 'lastname',284                        'type' => 'VARCHAR(32)',285                        'unsigned' => null,286                        'notNull' => 'NULL', // Not Coding Standard287                        'collation' => 'COLLATE utf8_unicode_ci',288                        'default' => 'DEFAULT NULL', // Not Coding Standard289                    ),290                    array(291                        'name' => 'boolean',292                        'type' => 'TINYINT(1) UNSIGNED',293                        'unsigned' => null,294                        'notNull' => 'NULL', // Not Coding Standard295                        'collation' => null,296                        'default' => 'DEFAULT NULL', // Not Coding Standard297                    ),298                    array(299                        'name' => 'boolean2',300                        'type' => 'TINYINT(1) UNSIGNED',301                        'unsigned' => null,302                        'notNull' => 'NULL', // Not Coding Standard303                        'collation' => null,304                        'default' => 'DEFAULT NULL', // Not Coding Standard305                    ),306                    array(307                        'name' => 'date',308                        'type' => 'DATE',309                        'unsigned' => null,310                        'notNull' => 'NULL', // Not Coding Standard311                        'collation' => null,312                        'default' => 'DEFAULT NULL', // Not Coding Standard313                    ),314                    array(315                        'name' => 'date2',316                        'type' => 'DATE',317                        'unsigned' => null,318                        'notNull' => 'NULL', // Not Coding Standard319                        'collation' => null,320                        'default' => 'DEFAULT NULL', // Not Coding Standard321                    ),322                    array(323                        'name' => 'date3',324                        'type' => 'DATE',325                        'unsigned' => null,326                        'notNull' => 'NULL', // Not Coding Standard327                        'collation' => null,328                        'default' => 'DEFAULT NULL', // Not Coding Standard329                    ),330                    array(331                        'name' => 'date4',332                        'type' => 'DATE',333                        'unsigned' => null,334                        'notNull' => 'NULL', // Not Coding Standard335                        'collation' => null,336                        'default' => 'DEFAULT NULL', // Not Coding Standard337                    ),338                    array(339                        'name' => 'datetime',340                        'type' => 'DATETIME',341                        'unsigned' => null,342                        'notNull' => 'NULL', // Not Coding Standard343                        'collation' => null,344                        'default' => 'DEFAULT NULL', // Not Coding Standard345                    ),346                    array(347                        'name' => 'datetime2',348                        'type' => 'DATETIME',349                        'unsigned' => null,350                        'notNull' => 'NULL', // Not Coding Standard351                        'collation' => null,352                        'default' => 'DEFAULT NULL', // Not Coding Standard353                    ),354                    array(355                        'name' => 'datetime3',356                        'type' => 'DATETIME',357                        'unsigned' => null,358                        'notNull' => 'NULL', // Not Coding Standard359                        'collation' => null,360                        'default' => 'DEFAULT NULL', // Not Coding Standard361                    ),362                    array(363                        'name' => 'datetime4',364                        'type' => 'DATETIME',365                        'unsigned' => null,366                        'notNull' => 'NULL', // Not Coding Standard367                        'collation' => null,368                        'default' => 'DEFAULT NULL', // Not Coding Standard369                    ),370                    array(371                        'name' => 'float',372                        'type' => 'DOUBLE',373                        'unsigned' => null,374                        'notNull' => 'NULL', // Not Coding Standard375                        'collation' => null,376                        'default' => 'DEFAULT NULL', // Not Coding Standard377                    ),378                    array(379                        'name' => 'integer',380                        'type' => 'INT(11)',381                        'unsigned' => null,382                        'notNull' => 'NULL', // Not Coding Standard383                        'collation' => null,384                        'default' => 'DEFAULT NULL', // Not Coding Standard385                    ),386                    array(387                        'name' => 'phone',388                        'type' => 'VARCHAR(14)',389                        'unsigned' => null,390                        'notNull' => 'NULL', // Not Coding Standard391                        'collation' => 'COLLATE utf8_unicode_ci',392                        'default' => 'DEFAULT NULL', // Not Coding Standard393                    ),394                    array(395                        'name' => 'string',396                        'type' => 'VARCHAR(64)',397                        'unsigned' => null,398                        'notNull' => 'NULL', // Not Coding Standard399                        'collation' => 'COLLATE utf8_unicode_ci',400                        'default' => 'DEFAULT NULL', // Not Coding Standard401                    ),402                    array(403                        'name' => 'textarea',404                        'type' => 'TEXT',405                        'unsigned' => null,406                        'notNull' => 'NULL', // Not Coding Standard407                        'collation' => 'COLLATE utf8_unicode_ci',408                        'default' => 'DEFAULT NULL', // Not Coding Standard409                    ),410                    array(411                        'name' => 'url',412                        'type' => 'VARCHAR(255)',413                        'unsigned' => null,414                        'notNull' => 'NULL', // Not Coding Standard415                        'collation' => 'COLLATE utf8_unicode_ci',416                        'default' => 'DEFAULT NULL', // Not Coding Standard417                    ),418                    array(419                        'name' => 'ownedsecurableitem_id',420                        'type' => 'INT(11)',421                        'unsigned' => 'UNSIGNED',422                        'notNull' => 'NULL', // Not Coding Standard423                        'collation' => null,424                        'default' => 'DEFAULT NULL', // Not Coding Standard425                    ),426                    array(427                        'name' => 'currencyvalue_id',428                        'type' => 'INT(11)',429                        'unsigned' => 'UNSIGNED',430                        'notNull' => 'NULL', // Not Coding Standard431                        'collation' => null,432                        'default' => 'DEFAULT NULL', // Not Coding Standard433                    ),434                    array(435                        'name' => 'dropdown_customfield_id',436                        'type' => 'INT(11)',437                        'unsigned' => 'UNSIGNED',438                        'notNull' => 'NULL', // Not Coding Standard439                        'collation' => null,440                        'default' => 'DEFAULT NULL', // Not Coding Standard441                    ),442                    array(443                        'name' => 'dropdown2_customfield_id',444                        'type' => 'INT(11)',445                        'unsigned' => 'UNSIGNED',446                        'notNull' => 'NULL', // Not Coding Standard447                        'collation' => null,448                        'default' => 'DEFAULT NULL', // Not Coding Standard449                    ),450                    array(451                        'name' => 'radiodropdown_customfield_id',452                        'type' => 'INT(11)',453                        'unsigned' => 'UNSIGNED',454                        'notNull' => 'NULL', // Not Coding Standard455                        'collation' => null,456                        'default' => 'DEFAULT NULL', // Not Coding Standard457                    ),458                    array(459                        'name' => 'multidropdown_multiplevaluescustomfield_id',460                        'type' => 'INT(11)',461                        'unsigned' => 'UNSIGNED',462                        'notNull' => 'NULL', // Not Coding Standard463                        'collation' => null,464                        'default' => 'DEFAULT NULL', // Not Coding Standard465                    ),466                    array(467                        'name' => 'tagcloud_multiplevaluescustomfield_id',468                        'type' => 'INT(11)',469                        'unsigned' => 'UNSIGNED',470                        'notNull' => 'NULL', // Not Coding Standard471                        'collation' => null,472                        'default' => 'DEFAULT NULL', // Not Coding Standard473                    ),474                    array(475                        'name' => 'primaryemail_email_id',476                        'type' => 'INT(11)',477                        'unsigned' => 'UNSIGNED',478                        'notNull' => 'NULL', // Not Coding Standard479                        'collation' => null,480                        'default' => 'DEFAULT NULL', // Not Coding Standard481                    ),482                    array(483                        'name' => 'primaryaddress_address_id',484                        'type' => 'INT(11)',485                        'unsigned' => 'UNSIGNED',486                        'notNull' => 'NULL', // Not Coding Standard487                        'collation' => null,488                        'default' => 'DEFAULT NULL', // Not Coding Standard489                    ),490                    array(491                        'name' => 'secondaryemail_email_id',492                        'type' => 'INT(11)',493                        'unsigned' => 'UNSIGNED',494                        'notNull' => 'NULL', // Not Coding Standard495                        'collation' => null,496                        'default' => 'DEFAULT NULL', // Not Coding Standard497                    ),498                    array(499                        'name' => 'likecontactstate_contactstate_id',500                        'type' => 'INT(11)',501                        'unsigned' => 'UNSIGNED',502                        'notNull' => 'NULL', // Not Coding Standard503                        'collation' => null,504                        'default' => 'DEFAULT NULL', // Not Coding Standard505                    ),506                    array(507                        'name' => '_user_id',508                        'type' => 'INT(11)',509                        'unsigned' => 'UNSIGNED',510                        'notNull' => 'NULL', // Not Coding Standard511                        'collation' => null,512                        'default' => 'DEFAULT NULL', // Not Coding Standard513                    ),514                    array(515                        'name' => 'user2__user_id',516                        'type' => 'INT(11)',517                        'unsigned' => 'UNSIGNED',518                        'notNull' => 'NULL', // Not Coding Standard519                        'collation' => null,520                        'default' => 'DEFAULT NULL', // Not Coding Standard521                    ),522                ),523                'indexes' => array(),524            ),525            );526            $modelClassName     = 'EmailTemplateModelTestItem';527            $schema             = RedBeanModelToTableSchemaAdapter::resolve($modelClassName, static::$messageLogger);528            $this->assertNotEmpty($schema);529            $this->assertEquals($expectedSchema, $schema);530        }531    }532?>...

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Mockery automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Most used methods in Not

Run Selenium Automation Tests on LambdaTest Cloud Grid

Trigger Selenium automation tests on a cloud-based Grid of 3000+ real browsers and operating systems.

Test now for Free

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful