Full Code of naivesound/glitch for AI

master 7131883c9af9 cached
234 files
9.7 MB
2.5M tokens
1741 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (10,171K chars total). Download the full file to get everything.
Repository: naivesound/glitch
Branch: master
Commit: 7131883c9af9
Files: 234
Total size: 9.7 MB

Directory structure:
gitextract_k13q67tj/

├── .gitignore
├── .travis.yml
├── API.md
├── Gopkg.toml
├── LICENSE
├── README.md
├── appveyor.yml
├── audio/
│   ├── audio.go
│   └── midi.go
├── cmd/
│   └── glitch/
│       ├── app.go
│       ├── assets.go
│       ├── gen.go
│       ├── loader.go
│       ├── main.go
│       └── ui.go
├── core/
│   ├── CMakeLists.txt
│   ├── expr.h
│   ├── glitch.c
│   ├── glitch.go
│   ├── glitch.h
│   ├── glitch_test.c
│   ├── glitch_test.go
│   ├── libglitch.h
│   └── tr808.h
├── dist/
│   ├── glitch.exe.manifest
│   ├── glitch.rc
│   ├── icons/
│   │   └── glitch.icns
│   ├── release-linux.sh
│   ├── release-macos.sh
│   ├── release-web.sh
│   └── release-windows.bat
├── examples/
│   ├── bytebeat/
│   │   ├── 42.glitch
│   │   ├── arp.glitch
│   │   ├── dreamy.glitch
│   │   ├── drum.glitch
│   │   ├── nervous.glitch
│   │   ├── poly.glitch
│   │   ├── right.glitch
│   │   ├── saw.glitch
│   │   ├── sqr.glitch
│   │   └── white.glitch
│   ├── das_model.glitch
│   ├── drums.glitch
│   ├── get_yucky.glitch
│   └── sur_la_planche.glitch
├── ui/
│   ├── app.js
│   ├── index.html
│   ├── styles.css
│   └── vendor/
│       ├── codemirror/
│       │   ├── codemirror.css
│       │   ├── codemirror.js
│       │   ├── matchbrackets.js
│       │   ├── material.css
│       │   └── simplescrollbars.js
│       ├── material-icons/
│       │   ├── MaterialIcons-Regular.ijmap
│       │   ├── README.md
│       │   ├── codepoints
│       │   └── material-icons.css
│       ├── picodom/
│       │   └── picodom.js
│       └── roboto-mono/
│           └── roboto-mono.css
└── vendor/
    └── github.com/
        ├── jteeuwen/
        │   └── go-bindata/
        │       ├── CONTRIBUTING.md
        │       ├── LICENSE
        │       ├── README.md
        │       ├── asset.go
        │       ├── bytewriter.go
        │       ├── config.go
        │       ├── convert.go
        │       ├── debug.go
        │       ├── doc.go
        │       ├── go-bindata/
        │       │   ├── AppendSliceValue.go
        │       │   ├── main.go
        │       │   └── version.go
        │       ├── release.go
        │       ├── stringwriter.go
        │       ├── testdata/
        │       │   ├── in/
        │       │   │   ├── a/
        │       │   │   │   └── test.asset
        │       │   │   ├── b/
        │       │   │   │   └── test.asset
        │       │   │   ├── c/
        │       │   │   │   └── test.asset
        │       │   │   └── test.asset
        │       │   └── out/
        │       │       ├── compress-memcopy.go
        │       │       ├── compress-nomemcopy.go
        │       │       ├── debug.go
        │       │       ├── nocompress-memcopy.go
        │       │       └── nocompress-nomemcopy.go
        │       └── toc.go
        ├── thestk/
        │   ├── rtaudio/
        │   │   ├── .gitattributes
        │   │   ├── .gitignore
        │   │   ├── .travis.yml
        │   │   ├── CMakeLists.txt
        │   │   ├── Makefile.am
        │   │   ├── README.md
        │   │   ├── RtAudio.cpp
        │   │   ├── RtAudio.h
        │   │   ├── autogen.sh
        │   │   ├── configure.ac
        │   │   ├── contrib/
        │   │   │   ├── go/
        │   │   │   │   └── rtaudio/
        │   │   │   │       ├── rtaudio.go
        │   │   │   │       ├── rtaudio_stub.cpp
        │   │   │   │       ├── rtaudio_stub.h
        │   │   │   │       └── rtaudio_test.go
        │   │   │   └── python/
        │   │   │       └── pyrtaudio/
        │   │   │           ├── PyRtAudioTest.py
        │   │   │           ├── readme
        │   │   │           ├── rtaudiomodule.cpp
        │   │   │           └── setup.py
        │   │   ├── doc/
        │   │   │   ├── Makefile.am
        │   │   │   ├── doxygen/
        │   │   │   │   ├── Doxyfile.in
        │   │   │   │   ├── acknowledge.txt
        │   │   │   │   ├── apinotes.txt
        │   │   │   │   ├── compiling.txt
        │   │   │   │   ├── duplex.txt
        │   │   │   │   ├── error.txt
        │   │   │   │   ├── footer.html
        │   │   │   │   ├── header.html
        │   │   │   │   ├── license.txt
        │   │   │   │   ├── multi.txt
        │   │   │   │   ├── playback.txt
        │   │   │   │   ├── probe.txt
        │   │   │   │   ├── recording.txt
        │   │   │   │   ├── settings.txt
        │   │   │   │   └── tutorial.txt
        │   │   │   └── release.txt
        │   │   ├── include/
        │   │   │   ├── asio.cpp
        │   │   │   ├── asio.h
        │   │   │   ├── asiodrivers.cpp
        │   │   │   ├── asiodrivers.h
        │   │   │   ├── asiodrvr.h
        │   │   │   ├── asiolist.cpp
        │   │   │   ├── asiolist.h
        │   │   │   ├── asiosys.h
        │   │   │   ├── dsound.h
        │   │   │   ├── functiondiscoverykeys_devpkey.h
        │   │   │   ├── ginclude.h
        │   │   │   ├── iasiodrv.h
        │   │   │   ├── iasiothiscallresolver.cpp
        │   │   │   ├── iasiothiscallresolver.h
        │   │   │   └── soundcard.h
        │   │   ├── install.txt
        │   │   ├── rtaudio.pc.in
        │   │   ├── rtaudio_c.cpp
        │   │   ├── rtaudio_c.h
        │   │   └── tests/
        │   │       ├── CMakeLists.txt
        │   │       ├── Debug/
        │   │       │   └── .placeholder
        │   │       ├── Makefile.am
        │   │       ├── Release/
        │   │       │   └── .placeholder
        │   │       ├── Windows/
        │   │       │   ├── Debug/
        │   │       │   │   └── .placeholder
        │   │       │   ├── Release/
        │   │       │   │   └── .placeholder
        │   │       │   ├── audioprobe.dsp
        │   │       │   ├── duplex.dsp
        │   │       │   ├── playraw.dsp
        │   │       │   ├── playsaw.dsp
        │   │       │   ├── record.dsp
        │   │       │   ├── rtaudio.dsw
        │   │       │   ├── testall.dsp
        │   │       │   └── teststops.dsp
        │   │       ├── audioprobe.cpp
        │   │       ├── duplex.cpp
        │   │       ├── playraw.cpp
        │   │       ├── playsaw.cpp
        │   │       ├── record.cpp
        │   │       ├── testall.cpp
        │   │       └── teststops.cpp
        │   └── rtmidi/
        │       ├── .gitattributes
        │       ├── .github/
        │       │   └── issue_template.md
        │       ├── .gitignore
        │       ├── .travis.yml
        │       ├── Makefile.am
        │       ├── README.md
        │       ├── RtMidi.cpp
        │       ├── RtMidi.h
        │       ├── autogen.sh
        │       ├── configure.ac
        │       ├── contrib/
        │       │   └── go/
        │       │       └── rtmidi/
        │       │           ├── rtmidi.go
        │       │           ├── rtmidi_stub.cpp
        │       │           ├── rtmidi_stub.h
        │       │           └── rtmidi_test.go
        │       ├── doc/
        │       │   ├── Makefile.am
        │       │   ├── doxygen/
        │       │   │   ├── Doxyfile.in
        │       │   │   ├── footer.html
        │       │   │   ├── header.html
        │       │   │   └── tutorial.txt
        │       │   └── release.txt
        │       ├── msw/
        │       │   ├── readme
        │       │   ├── rtmidilib.sln
        │       │   └── rtmidilib.vcproj
        │       ├── rtmidi-config.in
        │       ├── rtmidi.pc.in
        │       ├── rtmidi_c.cpp
        │       ├── rtmidi_c.h
        │       └── tests/
        │           ├── Debug/
        │           │   └── .placeholder
        │           ├── Makefile.am
        │           ├── Release/
        │           │   └── .placeholder
        │           ├── RtMidi.dsw
        │           ├── cmidiin.cpp
        │           ├── cmidiin.dsp
        │           ├── midiclock.cpp
        │           ├── midiout.cpp
        │           ├── midiout.dsp
        │           ├── midiprobe.cpp
        │           ├── midiprobe.dsp
        │           ├── qmidiin.cpp
        │           ├── qmidiin.dsp
        │           ├── sysextest.cpp
        │           └── sysextest.dsp
        └── zserge/
            └── webview/
                ├── .gitattributes
                ├── .gitignore
                ├── .travis.yml
                ├── CMakeLists.txt
                ├── LICENSE
                ├── README.md
                ├── appveyor.yml
                ├── examples/
                │   ├── canvas-go/
                │   │   └── main.go
                │   ├── counter-go/
                │   │   ├── assets.go
                │   │   ├── js/
                │   │   │   ├── picodom/
                │   │   │   │   └── app.js
                │   │   │   ├── react/
                │   │   │   │   └── app.jsx
                │   │   │   ├── styles.css
                │   │   │   └── vue/
                │   │   │       └── app.js
                │   │   ├── main.go
                │   │   ├── picodom.go
                │   │   ├── react.go
                │   │   └── vue.go
                │   ├── minimal/
                │   │   ├── CMakeLists.txt
                │   │   ├── Makefile
                │   │   └── main.c
                │   ├── minimal-go/
                │   │   └── main.go
                │   ├── page-load-go/
                │   │   └── main.go
                │   ├── timer-cxx/
                │   │   ├── CMakeLists.txt
                │   │   └── main.cc
                │   ├── todo-go/
                │   │   ├── assets/
                │   │   │   ├── app.js
                │   │   │   ├── index.html
                │   │   │   ├── picodom.js
                │   │   │   └── styles.css
                │   │   ├── assets.go
                │   │   └── main.go
                │   └── window-go/
                │       └── main.go
                ├── webview.go
                ├── webview.h
                └── webview_test.go

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
*.o
glitch.alsa
glitch.pulse
glitch.jack
glitch.mac
glitch.exe

web/dist

samples

.idea/


================================================
FILE: .travis.yml
================================================
language: go

matrix:
  include:
    - os: linux
      before_install:
        - sudo add-apt-repository ppa:webkit-team/ppa -y
        - sudo apt-get update
        - sudo apt-get install libwebkit2gtk-4.0-dev -y
      addons:
        apt:
          packages:
            - libasound2-dev
            - libpulse-dev
      script:
        - ./dist/release-linux.sh
    - os: osx
      osx_image: xcode8.3
      script:
        - ./dist/release-macos.sh

install:
  - git fetch --unshallow --tags

deploy:
  provider: releases
  api_key: $GITHUB_ACCESS_TOKEN
  file_glob: true
  file: "dist/glitch-*.tar.gz"
  skip_cleanup: true
  on:
    tags: true


================================================
FILE: API.md
================================================
# Glitch API

Glitch is an algorithmic synthesizer. It creates music with math. Below is a
list of functions that you can use in Glitch to generate or modify the sound.

## Input and output

Music can be seen as a function `f(t)` where `t` is increasing in time.

Glitch increases a variable `t` at `8000/sec` rate and it can be a real number if your
hardware sample rate is higher. Expression result is expected to be in range
`[-1..1]` otherwise it will be clipped.

Music expression is evaluated once for each audio frame. You can use numbers,
math operators, variables and functions to compose more complex expressions.

Most of the functions keep track of time internally, so you only have to
specify other arguments such as frequency.

## Math

Everything in Glitch is a number. Time is a number. Notes are represented as
numbers. Every signal is represented as the value of its current amplitude.

That is why music in Glitch is made using the following arithmetic operators:

* Arithmetics: `+` `-` `*` `/` `%` (modulo) `**` (power)
* Bitwise: `&` `|` `^` (xor or bitwise not) `<<` `>>`
* Compare: `==` `!=` `<` `<=` `>` `>=` (return 1 or 0)
* Grouping: `(` `)` `,` (separates expressions or function arguments)
* Conditional: `&&` `||` ([short-circuit operators][short-circuit])
* Assignment: `=` (left side must be a variable)

These arithmetic operators have the same meaning as they have in most
programming languages. The priority of the operators is the one [used in C
language][operator-priority].

Since everything in Glitch is a number, `+` can be used to mix signals
together. `-` can be used to subtract one signal from another.

> Example: `piano+drums` returns two signals (piano and drums) mixed together.

In a similar manner, `*` can be used to modulate signals. 

> Example: `piano*lfo` modulates piano signal with the lfo signal value.

Parenthesis can be used to group subexpressions, but also to pass parameter
tuples instead of single arguments. If a function takes a tuple as an argument
it will be mentioned in the documentation.

Comma operator separate function arguments. Outside of functions comma allows
to evaluate parts of the formula one by one, from left to right. The result of
the last part is returned. Comma is so frequently used in Glitch, that you may
omit commas at the end of line:

```
# Comma at the end of line is optional:
x=(a=1,b=2,a+b)
x = (
  a = 1
	b = 2
	a + b
)
```

> Example: `x=5, y=6, x+y`. X is set to 5, then y is set to 6, then 11 is returned.

> Example: `x=(a=1,a+2). A is set to 1, then 3 is retured and assigned to X.

Short circuit operators (`&&` and `||`) are used to achieve the effect of
if/else statements. `&&` evaluates the rigth side only if the left side is
true. `||` evaluates the right side only if the left side is false.

> Example: `(b && 1 || 0)` returns 1 if b is non-zero (true) and returns 0 if b is zero.

## Math functions

### l(x)

`l(x)` returns a binary logarithm (log2) of `x`. Useful to convert frequencies
to note values. It is rarely used in Glitch.

> Example: `note=l(440) * 12` - returns note value for the frequency 440Hz, which is `A4`, or 0.

### r(max=1)

`r(max)` returns a random number in the range [0..max), it sounds like white
noise, good for synthesizing drums or making randomized music patterns.

`max` parameter is optional and by default `r()` returns numbers in the range `[0..1)`

> Example: `r(100)` - returns a random number in the range [0..100)

### s(phase=0)

`s(phase)` returns a sine wave amplitude for the given phase. Phase must be in the range `[0..1)`. Returned value is in the range `[-1..1]`.

> Example: [x=x+1, s(x*0.006)](http://naivesound.com/glitch/#x%3Dx%2B1%2C%20s(x*0.006)) - plays a sine wave at 437Hz

### byte(x=127)

`byte(x)` converts the value `x` from [Bytebeat][bytebeat] range `[0..255]` to
the common amplitude range `[-1..1]`. It is used to play short Bytebeat
formulas in Glitch as well as add effects to them or mix with other sounds.

> Example: [byte(t*5&(t>>7)|t*3&(t*4>>10))](http://naivesound.com/glitch/#byte(t*5%26(t%3E%3E7)%7Ct*3%26(t*4%3E%3E10))) - Bytebeat music

## Sequencers

Sequencers are used to describe melodies, chord progressions, rhythmic patterns
or other repetitive parts of your song.

### a(index, values...)

`a(i, x0, x1, x2, ...)` returns x[i] value for the given index i. If index is
negative or out of array bounds - it gets wrapped around.

> Example: `a(0, 5, 6, 7)` - returns 5, because it is at index 0 in the list of values.

> Example: `a(2, 5, 6, 7)` - returns 7

> Example: `a(3, 5, 6, 7)` - returns 5

> Example: `a(4, 5, 6, 7)` - returns 6

> Example: `a(-1, 5, 6, 7)` - returns 7

> Example: [byte(t*a(t>>11,4,5,6))](http://naivesound.com/glitch/#byte(t*a(t%3E%3E11%2C4%2C5%2C6))) - plays saw-tooth wave with 3 changing frequencies in a loop

### seq((offset, bpm), (step, values...)...)

`seq(bpm, x0, x1, x2, ...)` returns x[i] value where i is increated at given tempo (`bpm`).

Values can be numeric constants, variables or expressions. Values are evaluated
once per beat and the result is remembered and then reused.

Values can be a tuples. In a pair of numbers like (2,3) the first number is
relative step duration and the second one is the actual value. This means value
3 will be played for 2 beats.

Value can be a tuple of more than 2 numbers. The first number is always a
relative step duration, and the other values are gradually slided, e.g.
(0.5,2,4,2) is a value changed from 2 to 4 back to 2 and the step duration is
half of a beat.

> Example: [byte(t*seq(120,4,5,6))](http://naivesound.com/glitch/#byte(t*seq(120%2C4%2C5%2C6)))

> Example [byte(t*seq(120,(1,4,6,4),(1/2,5),(1/2,6)))](http://naivesound.com/glitch/#byte(t*seq(120%2C(1%2C4%2C6%2C4)%2C(1%2F2%2C5)%2C(1%2F2%2C6))))

### loop((offset, bpm), (step, expr)...)

`loop(bpm, x0, x1, x2, ...)` evaluates x[i] increasing i at the given tempo.

Unlike `seq()`, `loop()` evaluates x[i] for every audio frame, so other
functions can be used as loop values.

`seq()` is often used to change pitch or volume, `loop()` is often used to
schedule inner sequences and loops.

> Example: [byte(t*loop(30,seq(240,4,5),seq(240,4,6)))](http://naivesound.com/glitch/#byte(t*loop(30%2Cseq(240%2C4%2C5)%2Cseq(240%2C4%2C6))))

`seq()` and `loop()` return NaN at the beginning of each step. NaN value is
used by the instruments and effects to detect the start of a new note.

## Instruments

Oscillators are the building blocks of synthesizers. Oscillator phase is
managed internally, only frequency must be provided (in Hz).

### sin(freq)

`sin(freq)` plays a sine wave at the given frequency. If frequency is negative
- sine wave is played "backwards". The start of the wave is always at zero
amplitude.

### tri(freq)

`tri(freq)` plays a trianglular wave. Like `sin()`, is starts at zero value and
plays backwards if frequency is a negative value.

## saw(freq)

`saw(freq)` plays a sawtooth wave. Like `sin()` and `tri()`, is starts at zero
value and plays backwards if frequency is a negative value.

## sqr(freq, pwm=0.5)

`sqr(freq, pwm)` plays a square wave with the given pulse width. By default if
no pulse width is given it is assumed to be 50%, or `0.5`.

> Example: [(sin(220)+tri(440))/2](http://naivesound.com/glitch/#(sin(220)%2Btri(440))%2F2)

## fm(freq, mf1=0, ma1=0, mf2=0, ma2=0, mf3=0, ma3=0)

`fm(freq, mf1, ma1, mf2, ma2, mf3, ma3)` is a 3-operator FM synthesizer, `mf`
is an operator frequency ratio, `ma` is an operator amplification. Operators M2
and M1 are parallel, M3 is sequential to M1.

> Example: [fm(seq(120,440,494),1,0.5,0.01,1)](http://naivesound.com/glitch/#fm(seq(120%2C440%2C494)%2C1%2C0.5%2C0.01%2C1))

## tr808(instr, volume=1, pitch=0)

`tr808(instr, volume)` is a set of samples from the TR808 drum kit.

The following instruments are supported (you can use two-letter constants
instead of remembering numbers):

* `BD=0` - Bass drum
* `SD=1` - Snare drum
* `MT=2` - Middle tom
* `MA=3` - Maracas
* `RS=4` - Rimshot
* `CP=5` - Clap
* `CB=6` - Cowbell
* `OH=7` - Open hat
* `HH=8` - High hat

> Example: [tr808(SD,seq(240,1,0.2))](http://naivesound.com/glitch/#tr808(SD%2Cseq(240%2C1%2C0.2)))

## Effects and signal processing

### lpf(signal, cutoff=200, Q=1)

`lpf(signal, cutoff, Q)` is a bi-quadratic low-pass filter. It passes the
signals with the frequencies lower than the given cutoff frequency and
attenuates the signals with the frequency higher than cutoff. Q is the Q-factor
of the filter.

### hpf(signal, cutoff=200, Q=1)

`hpf(signal, cutoff, Q)` is a bi-quadratic high-pass filter. It passes the
signals with the frequencies higher than the given cutoff frequency and
attenuates the signals with the frequency lower than cutoff. Q is the Q-factor
of the filter.

`hpf()` is complementary to the `lpf()`.

### bpf(signal, cutoff=200, Q=1)

`bpf(signal, cutoff, Q)` is a bi-quadratic band-pass filter. It passes the
signals with the frequencies in the range around the given cutoff frequency and
attenuates other signals. Q is the Q-factor of the filter and defines the width
of the range.

### bsf(signal, cutoff=200, Q=1)

`bsf(signal, cutoff, Q)` is a bi-quadratic band-stop filter. Some variants of
it are known as Notch filter.  It passes the signals with the frequencies
outside of the range around the given cutoff frequency and attenuates the rest
of the signals. Q is the Q-factor of the filter and defines the width of the
range.

### delay(signal, time=0, damp=0, feedback=0)

`delay(signal, time, damp, feedback)` is a simple delay effect. It delays the
incoming signal for the given time in seconds. The signal is damped to the
given level and on further loops of the delay line is amplified by the feedback
level.

### env((gate, signal), a=0.01, r=10, acur=0.5, rcur=0.5)

`env(signal)` is a simple attack-release signal envelope. Attack and release
time are specified in seconds. The curve of the attack and release parts can be
controlled using `acur` and `rcur` parameters. Values are in the range of
[0..1] and make logarithm or exponential curves. The value of 0.5 makes a
linear shape.

> Example: [env(sin(seq(240,440,480)),0.01,0.3,0.5,0.2)](http://naivesound.com/glitch/#env(sin(seq(240%2C440%2C480))%2C0.01%2C0.3%2C0.5%2C0.2))

### mix(signal...)

`mix(z1, z2, ...)` mixes signals together. It soft-clips the resulting signal if the
value is outside of the [-1..1] range.

> Example: [mix(0.3*sin(440),0.7*tri(220))](http://naivesound.com/glitch/#mix(0.3*sin(440)%2C0.7*tri(220)))

## Notes and melody

### C0..B#8

Notes in Glitch are represented as numbers, often integer. The note of A4 is
considered to be 0. A#4 = 1, G#4 = -1 etc.

Glitch provides a set of useful constants for note indices (not frequencies).
Any note in the range C0..B#8 can be represented as a constant.

### hz(note)

`hz(note)` returns note frequency in hertz.

> Example: [sin(hz(A4))](http://naivesound.com/glitch/#sin(hz(A4))) - plays sine wave at 440 Hz, which is A4 note.

### scale(index, mode=0)

`scale(i, mode)` returns a note index at position i in the given scale. Default
mode is major scale.

> Example: [tri(hz(scale(seq(480,r(5)))))](http://naivesound.com/glitch/#tri(hz(scale(seq(480%2Cr(5)))))) - plays random notes from the major scale

## Polyphony and live MIDI input

### each(vars, expr, values...)

`each(vars, expr, values...)` applies and adds up the given expression
evaluated for each of the values from the list.  Useful to construct chords.

> Example: [each((vol,note),vol*sin(hz(note)),(0.8,0),(0.5,4),(0.5,7))](http://naivesound.com/glitch/#each((vol%2Cnote)%2Cvol*sin(hz(note))%2C(0.8%2C0)%2C(0.5%2C4)%2C(0.5%2C7))%0A)

### MIDI input

If a MIDI keyboard is available, the following variables are set as you press the keys:

* `k0, k1, k2, ..., k9` are MIDI keyboard note indices that are currently played.
* `v0, v1, v2, ..., v9` are MIDI keyboard note velocities in the range [0..1]. Velocity quickly fades out if the key is released.
* `g0, g1, g2, ..., g9` are MIDI keyboard gate values that are either 1 if key is pressed or NaN otherwise.

Additionally, there are two variables, `x` and `y`, that are controlled using
the pitch and the mod wheel of the MIDI keyboard. They can also be controlled
my moving a mouse custor while keeping the Control key pressed.

### bpm

`bpm` is a special variable that allows to specify a tempo of the song. It is
used to synchronize user input with the song tempo, so that the changes user
makes in the formula would not interrupt the rhythm of the song.

> Example: `bpm=120/4` - set tempo to 4 beats at 120 beat per minute.

## Macros

To make reusable snippets of code and to simplify dealing with polyphony Glitch
supports macros. Macros look like functions and are automatically expended as you use them.

Macro definition starts with a dollar sign function with the macro name as the
first parameter: `$(mymacro, ...)`. Macro can be later be called by its name,
e.g. `mymacro()`.

All the parameters passed into the macro appear as `$1`, `$2`, ... variables.

The body of the macro is wrapped into extra parenthesis so you can put multiple
expressions into the macro.

[short-circuit]:
[operator-priority]: 
[bytebeat]:


================================================
FILE: Gopkg.toml
================================================

# Gopkg.toml example
#
# Refer to https://github.com/golang/dep/blob/master/docs/Gopkg.toml.md
# for detailed Gopkg.toml documentation.
#
# required = ["github.com/user/thing/cmd/thing"]
# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"]
#
# [[constraint]]
#   name = "github.com/user/project"
#   version = "1.0.0"
#
# [[constraint]]
#   name = "github.com/user/project2"
#   branch = "dev"
#   source = "github.com/myfork/project2"
#
# [[override]]
#  name = "github.com/x/y"
#  version = "2.4.0"


[[constraint]]
  name = "github.com/jteeuwen/go-bindata"
  version = "3.0.7"

[[constraint]]
  branch = "master"
  name = "github.com/thestk/rtaudio"

[[constraint]]
  branch = "master"
  name = "github.com/thestk/rtmidi"

[[constraint]]
  branch = "master"
  name = "github.com/zserge/webview"


================================================
FILE: LICENSE
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU General Public License is a free, copyleft license for
software and other kinds of works.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.  We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors.  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights.  Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received.  You must make sure that they, too, receive
or can get the source code.  And you must show them these terms so they
know their rights.

  Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.

  For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software.  For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.

  Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so.  This is fundamentally incompatible with the aim of
protecting users' freedom to change the software.  The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable.  Therefore, we
have designed this version of the GPL to prohibit the practice for those
products.  If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.

  Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary.  To prevent this, the GPL assures that
patents cannot be used to render the program non-free.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Use with the GNU Affero General Public License.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    {one line to give the program's name and a brief idea of what it does.}
    Copyright (C) {year}  {name of author}

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

  If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:

    {project}  Copyright (C) {year}  {fullname}
    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".

  You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.

  The GNU General Public License does not permit incorporating your program
into proprietary programs.  If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.  But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.


================================================
FILE: README.md
================================================
# Glitch

[![Build Status](https://travis-ci.org/naivesound/glitch.svg?branch=master)](https://travis-ci.org/naivesound/glitch)

Glitch is a minimal environment for creating algorithmic music and live coding.

It uses arithmetic expressions to synthesize instruments and create music patterns.

Try it online: http://naivesound.com/glitch

Download for Mac, Windows or Linux: https://github.com/naivesound/glitch/releases

Read more about Glitch on Medium: https://medium.com/@naive_sound

## Build

On linux: `make alsa=1` or `make alsa=1 pulse=1`. If you want to use JACK: `make jack=1`.

On windows: `make windows=1`.

On MacOS: `make macos=1`.

Asm.js: `make js` (requires Docker).

## Reference

Glitch syntax is arithmetic expressions, most likely you still remember it from
the math class.

Arithmetics: `+` `-` `*` `/` `%` (modulo) `**` (power)

Bitwise: `&` `|` `^` (xor or bitwise not) `<<` `>>`

Compare: `==` `!=` `<` `<=` `>` `>=` (return 1 or 0)

Grouping: `(` `)` `,` (separates expressions or function arguments)

Conditional: `&&` `||` ([short-circuit operators][shortcircuit])

Assignment: `=` (left side must be a variable)

### Instruments

| Function | Description | Example |
|----------|-------------|---------|
| sin(freq) | sine wave at given frequency | `sin(440)` |
| tri(freq) | triangular wave at given frequency | `tri(440)` |
| saw(freq) | saw-tooth wave at given frequency | `saw(440)` |
| sqr(freq, [pwm=0.5]) | square wave at given frequency and (optionally) pwm | `sqr(440)` |
| fm(freq, [m1, v1, m2, v2, m3, v3]) | FM-synthesizer with 3 operators, vN is operator strength, mN is operator multiplier, operators 1 and 2 are parallel, operator 3 is sequential to operator 1 | `fm(440, 0.5, 0.5)` |
| tr808(drum, [vol=1], [shift=0]) | plays TR808 drum sample at given volume and pitch shift. The following drum IDs may be used: BD (bass drum), SD (snare drum), MT (middle tom), MA (maracas), RS (rimshot), CP (clap), CB (cowbell), OH (open hat), HH (hi-hat) | `tr808(BD, 1)` |
| piano(freq) | very basic piano sample at the given frequency | `piano(440)`
| pluck(freq, decay) | Karplus-Strong string synthesizer, fill is a function used to prepare the initial values in the delay buffer | `pluck(440, 0.7)` |

FM synthesizer, TR808 sampler and Piano are reset if any of the parameters is NAN. All
instruments return NAN if the input is NAN.

All instruments return a sound wave with the given frequency in the range
[-1..1], so you can combine them by adding the signals (e.g.
`(sin(440)+sin(220))/2`) or modulate using multiplication, e.g.
`saw(440)*sin(1)`.

You may put custom samples into the `samples` subdirectory, each group of
samples should be in a separate folder. Then you could use samples providing
the directory name as a function. For example if you have
`samples/bass/bass0.wav` and `samples/bass/bass1.wav` you may call them as
`bass(0)` and `bass(1)` respectively. Samples are expected to be in the WAV
mono 16-bit format with 44100 Hz sample rate.

### Sequencers:

| Function | Description | Example |
|----------|-------------|---------|
|a(i, ...) | array element by its index, most primitive sequencer | `sin(a(t>>10, 440, 466, 493))` |
|seq(tempo, ...) | switches elements at given tempo | `sin(loop(120, 400, 466, 493))` |
|loop(tempo, ...) | switches elements at given tempo, unlike seq() it evaluates each argument for each time frame which makes it possible to nest loops | `sin(loop(60, seq(240,400,466,493), seq(480, 400,493)))` |

Tempo can be a single number (beats per minute) or a pair `(offset, bpm)`, where
offset is number of beats to skip before starting the sequence.

Seq and loop values can be pairs, too. Then the first value is a relative beat
duration and the second is the actual returned value: `seq(120, (3/4, 1), (1/4,
1))` returns the value of "1", but the first value lasts 3 times longer than
the second value.

If seq takes more values, they will be sliding from one another, e.g.
`seq(120, (1, 0, 4, 2), (1, 2, 4, 0))` slides the values like
`0->4->2->2->4->0`. The first value in a group is still a relative beat
duration.

Seq and loop return NAN every then the value is changed.

### Utils

| Function | Description | Example |
|----------|-------------|---------|
| r(max) | random number in the range [0..max), it sounds like white noise, good for synthesizing drums or making randomized music patterns | `r(100)` |
| s(phase)  | sine wave amplitude at the given phase, unline sin() you must provide phase in the range [0..1] | `s(t*14)` |
| l(x) | binary logarithm, useful to convert frequencies to note values | `note=l(440)*12` |
| hz(note) | note frequency of the given note index, index 0 is note A of 4th octave, you may also use helper variables like `A#4`, `C2`, `Db3` | `sin(hz(A4))` |
| scale(pos, mode) | return note index at given position in given scale, scale 0 is major scale, scale 6 is minor | `sin(hz(scale(t>>11&7)))` |
| env(signal, (dt, level)...) | Creates an ADSR envelope for the signal, envelope is reset if signal is NAN, if first part has non-zero level - the initial level starts from 1, otherwise from 0; if last argument is not zero - the release section is inserted automatically | `env(v, (0.1, 0.2))` |
| mix(...) | mixes voices together, each parameter is a signal or a pair of (volume, signal). Signals are clipped if overflow occurs | `mix(sin(220), sin(440), tri(880))` |
| lpf(voice, cutoff) | applies low-pass filter to the voice at given cutoff frequency | `lpf(v, 200)` |
| hpf(voice, cutoff) | applies high-pass filter to the voice at given cutoff frequency | `hpf(v, 400)` |
| bpf(voice, cutoff) | applies band-pass filter to the voice at given cutoff frequency | `bpf(v, 400)` |
| bsf(voice, cutoff) | applies band-stop filter to the voice at given cutoff frequency | `bsf(v, 400)` |
| delay(voice, time, level, feedback) | delays signal by given time, delay level can be controlled as well as the amount of delay feedback, which affect the number of delay repetitions | `delay(v, 0.1, 0.5, 0.2)` |

### Macros

To reuse the same expression multiple times you may create a macro:

```
$(organ, (sin($1)+0.4*sin($1+7)+0.3*sin($1-5))/3)
(organ(hz(C4))+organ(hz(G4)))/2
```

Macros are definde using the `$(name, body)` function. Body can consist of multiple expressions if you extra parenthesis, e.g. `$(filter, (z=saw($1), lpf(z)))`.

There are special argument variables $1..$9 that get expanded to the actual values when the macro is called.

## Special variables:

`t` is time variable that increases at rate 8000/second.

`x` and `y` in the web version are mouse cursor position, normalized to (0..1) range.

`bpm` is a tempo, user input is synchronized with the playback at this rate, so
you might want to use `bpm=120/4` to synchronize user input every 4 beats.

### Polyphony

To apply the same expression to a number of variables you may use `each()` function. It takes a list of formal variables, a function, and a list of actual values: `each(f, sin(f), 440, 880, 220)`.

You may pass multiple variables as well: `each((vol, freq), vol*sin(freq), (1, 440), (0.4, 880), (0.2, 220))`.

This is useful for live MIDI input.

### MIDI

Glitch provides special variables that change their values if a MIDI keyboard is used:

* k0, k1, ..., k9 - MIDI key values (0=A4, 1=A#4 etc)
* v0, v1, ..., v9 - MIDI velocity (it gradually fades out on key release)
* g0, g1, ..., g9 - MIDI gate signal (it is set to NAN immediately on key release)

Here's how you can play a sine wave with a MIDI keyboard (handling up to 5 keys pressed at a time, use k5, k6 etc to get more polyphony):

```
each((k, v), v*sin(hz(k)),
  (k0, v0), (k1, v1), (k2, v2), (k3, v3), (k4, v4))
```

Special variables `x` and `y` are set to the pitch wheel and modulation wheel values if a MIDI keyboard is used.



[shortcircuit]: https://en.wikipedia.org/wiki/Short-circuit_evaluation


================================================
FILE: appveyor.yml
================================================
os: Visual Studio 2017

version: "{build}"

clone_folder: c:\gopath\src\github.com\naivesound\glitch

environment:
  global:
    GOPATH: C:\gopath
  matrix:
    - GETH_ARCH: amd64
      GOARCH: amd64
      CGO_ENABLED: 1
      MSYS2_ARCH: x86_64
      MSYS2_BITS: 64
      MSYSTEM: MINGW64
      PATH: C:\msys64\mingw64\bin\;C:\Program Files (x86)\NSIS\;%PATH%
    - GETH_ARCH: 386
      GOARCH: 386
      CGO_ENABLED: 1
      MSYS2_ARCH: i686
      MSYS2_BITS: 32
      MSYSTEM: MINGW32
      PATH: C:\msys64\mingw32\bin\;C:\Program Files (x86)\NSIS\;%PATH%

install:
  - echo %PATH%
  - echo %GOPATH%
  - set PATH=%GOPATH%\bin;c:\go\bin;%PATH%
  - go version
  - go env
  - gcc --version

build_script:
  - IF EXIST .git\shallow (git fetch --unshallow --tags)
  - cd dist && release-windows.bat && cd ..

artifacts:
  - path: '**\glitch*.zip'

deploy:
  description: 'Glitch release'
  provider: GitHub
  auth_token:
    secure: y3+wTHgRTx60M3ZWVy29AzzWPBCFFHah7sRDHvh32pAYaxeKHRN6qNXFnb6IAKeX
  artifact: /dist\/glitch.*\.zip/
  draft: false
  prerelease: false
  on:
    appveyor_repo_tag: true


================================================
FILE: audio/audio.go
================================================
package audio

import (
	"log"
	"sync"
	"time"

	"github.com/thestk/rtaudio/contrib/go/rtaudio"
)

type Callback func(in, out []float32, sr, frames, inChannels, outChannels int)

type Device struct {
	ID                int    `json:"id"`
	Name              string `json:"name"`
	SampleRates       []int  `json:"sampleRates"`
	DefaultSampleRate int    `json:"defaultSampleRate"`
	InputChannels     int    `json:"inputChannels"`
	OutputChannels    int    `json:"outputChannels"`
}

type Audio interface {
	Devices() []Device
	Current() Device
	Open(i, sr, bufSz, inChans, outChans int)
	Destroy()
}

type rt struct {
	sync.Mutex
	audio     rtaudio.RtAudio
	cb        Callback
	currentID int
	notify    chan<- struct{}
}

func NewAudio(notify chan<- struct{}, cb Callback) (Audio, error) {
	audio, err := rtaudio.Create(rtaudio.APIUnspecified)
	if err != nil {
		return nil, err
	}
	rt := &rt{audio: audio, cb: cb, notify: notify}
	rt.currentID = -1
	return rt, nil
}

func (rt *rt) Destroy() {
	rt.Lock()
	defer rt.Unlock()
	rt.closeAudio()
	rt.audio.Destroy()
}

func (rt *rt) closeAudio() {
	if rt.currentID != -1 {
		rt.audio.Close()
		rt.currentID = -1
	}
}

func (rt *rt) Devices() []Device {
	rt.Lock()
	defer rt.Unlock()
	devices := []Device{}
	infos, err := rt.audio.Devices()
	if err == nil {
		for i, info := range infos {
			devices = append(devices, Device{
				ID:                i,
				Name:              info.Name,
				OutputChannels:    info.NumOutputChannels,
				InputChannels:     info.NumInputChannels,
				SampleRates:       info.SampleRates,
				DefaultSampleRate: int(info.PreferredSampleRate),
			})
		}
	}
	return devices
}

func (rt *rt) Current() Device {
	devices := rt.Devices()
	rt.Lock()
	defer rt.Unlock()
	if rt.currentID >= 0 && rt.currentID < len(devices) && devices[rt.currentID].ID == rt.currentID {
		return devices[rt.currentID]
	}
	return Device{ID: -1}
}

func (rt *rt) Open(id, sampleRate, bufSz int, inChans, outChans int) {
	rt.Lock()
	rt.closeAudio()
	rt.Unlock()
	var inParams, outParams *rtaudio.StreamParams
	devices := rt.Devices()
	if id < 0 || id >= len(devices) {
		return
	}
	if inChans > 0 {
		inParams = &rtaudio.StreamParams{
			DeviceID:     uint(id),
			NumChannels:  uint(inChans),
			FirstChannel: 0,
		}
	}
	if outChans > 0 {
		outParams = &rtaudio.StreamParams{
			DeviceID:     uint(id),
			NumChannels:  uint(outChans),
			FirstChannel: 0,
		}
	}
	err := rt.audio.Open(outParams, inParams, rtaudio.FormatFloat32,
		uint(sampleRate), uint(bufSz),
		func(out, in rtaudio.Buffer, dur time.Duration, status rtaudio.StreamStatus) int {
			if status == rtaudio.StatusOutputUnderflow {
				return 0
			}
			rt.cb(in.Float32(), out.Float32(), sampleRate, bufSz, inChans, outChans)
			return 0
		}, nil)
	if err == nil {
		rt.Lock()
		rt.currentID = id
		rt.audio.Start()
		rt.Unlock()
	} else {
		log.Println(err)
	}
}


================================================
FILE: audio/midi.go
================================================
package audio

import (
	"log"
	"sync"
	"time"

	"github.com/thestk/rtmidi/contrib/go/rtmidi"
)

type MIDICallback func(msg []byte)

type MIDIDevice struct {
	ID        int    `json:"id"`
	Name      string `json:"name"`
	Connected bool   `json:"connected"`
	midi      rtmidi.MIDIIn
}

type MIDI interface {
	SetAutoConnect(bool)
	AutoConnect() bool
	SetConnect(name string, connect bool)
	Devices() []MIDIDevice
	Destroy()
}

type midi struct {
	sync.Mutex
	cb          MIDICallback
	wg          *sync.WaitGroup
	midi        rtmidi.MIDIIn
	autoConnect bool
	connect     map[string]bool
	inputs      []*MIDIDevice
	configc     chan struct{}
	exitc       chan struct{}
	notify      chan<- struct{}
}

func NewMIDI(notify chan<- struct{}, cb MIDICallback) (MIDI, error) {
	midiIn, err := rtmidi.NewMIDIInDefault()
	if err != nil {
		return nil, err
	}

	m := &midi{
		cb:          cb,
		wg:          &sync.WaitGroup{},
		midi:        midiIn,
		notify:      notify,
		autoConnect: true,
		connect:     map[string]bool{},
		configc:     make(chan struct{}, 1),
		exitc:       make(chan struct{}),
	}
	m.wg.Add(1)
	go m.poll()
	return m, nil
}

func (m *midi) SetAutoConnect(connect bool) {
	m.Lock()
	defer m.Unlock()
	m.autoConnect = connect
	m.configc <- struct{}{}
}

func (m *midi) AutoConnect() bool {
	m.Lock()
	defer m.Unlock()
	return m.autoConnect
}

func (m *midi) SetConnect(name string, connect bool) {
	m.Lock()
	defer m.Unlock()
	m.connect[name] = connect
	m.configc <- struct{}{}
}

func (m *midi) Devices() (devices []MIDIDevice) {
	m.Lock()
	defer m.Unlock()
	devices = []MIDIDevice{}
	for _, d := range m.inputs {
		devices = append(devices, MIDIDevice{ID: d.ID, Name: d.Name, Connected: d.Connected})
	}
	return devices
}

func (m *midi) Destroy() {
	close(m.exitc)
	close(m.configc)
	m.wg.Wait()
	m.midi.Close()
}

func (m *midi) shouldConnect(name string) bool {
	connect, ok := m.connect[name]
	return (connect && ok) || (!ok && m.autoConnect)
}

func (m *midi) openDevice(d *MIDIDevice) (err error) {
	if d.midi, err = rtmidi.NewMIDIInDefault(); err != nil {
		return err
	} else if err = d.midi.OpenPort(d.ID, d.Name); err != nil {
		return err
	} else {
		d.Connected = true
		d.midi.SetCallback(func(_ rtmidi.MIDIIn, msg []byte, _ float64) {
			m.cb(msg)
		})
	}
	return nil
}

func (m *midi) closeDevice(d *MIDIDevice) {
	d.Connected = false
	d.midi.CancelCallback()
	d.midi.Close()
}

func (m *midi) poll() {
	defer m.wg.Done()
	for {
		if changed, err := m.pollOnce(); err != nil {
			log.Println(err)
		} else if changed {
			m.notify <- struct{}{}
		}
		select {
		case <-m.exitc:
			return
		case <-m.configc:
		case <-time.After(time.Second):
		}
	}
}

func (m *midi) pollOnce() (changed bool, err error) {
	m.Lock()
	defer m.Unlock()

	// Get a list of currently connected devices
	n, err := m.midi.PortCount()
	if err != nil {
		return changed, err
	}
	names := make([]string, n, n)
	for i := 0; i < n; i++ {
		name, err := m.midi.PortName(i)
		if err == nil {
			names[i] = name
		}
	}
	inputs := []*MIDIDevice{}

	// Close and remove disconnected devices
	for _, d := range m.inputs {
		if d.ID < len(names) && d.Name == names[d.ID] {
			inputs = append(inputs, d)
		} else {
			m.closeDevice(d)
			changed = true
		}
	}

	// Add newly connected devices and change connection status if needed
	m.inputs = inputs
	for i := 0; i < n; i++ {
		var device *MIDIDevice
		for _, d := range m.inputs {
			if d.ID == i && d.Name == names[i] {
				device = d
				break
			}
		}

		if device != nil {
			if device.Connected && !m.shouldConnect(device.Name) {
				// Existing device should be disconnected
				m.closeDevice(device)
				changed = true
			} else if !device.Connected && m.shouldConnect(device.Name) {
				// Existing device should be connected
				if err := m.openDevice(device); err != nil {
					return changed, err
				}
				changed = true
			}
		} else {
			// New device should be connected
			device = &MIDIDevice{ID: i, Name: names[i], Connected: m.shouldConnect(names[i])}
			if device.Connected {
				if err := m.openDevice(device); err != nil {
					return changed, err
				}
				changed = true
			}
			m.inputs = append(m.inputs, device)
		}
	}
	return changed, nil
}


================================================
FILE: cmd/glitch/app.go
================================================
package main

import (
	"io/ioutil"
	"log"
	"os"
	"path/filepath"
	"time"

	"github.com/naivesound/glitch/audio"
	"github.com/naivesound/glitch/core"
	"github.com/zserge/webview"
)

type App struct {
	glitch  core.Glitch
	audio   audio.Audio
	midi    audio.MIDI
	notify  chan struct{}
	webview webview.WebView

	sync func()

	*Config

	IsPlaying    bool               `json:"isPlaying"`
	Text         string             `json:"text"`
	Error        error              `json:"error"`
	AudioDevices []audio.Device     `json:"audioDevices"`
	MIDIDevices  []audio.MIDIDevice `json:"midiDevices"`
}

func NewApp(config *Config) (app *App, err error) {
	app = &App{Config: config}

	loader := &sampleLoader{}
	go loader.poll()
	core.Loader = loader
	core.Init(config.SampleRate, uint64(time.Now().UnixNano()))

	app.glitch = core.NewGlitch()

	app.notify = make(chan struct{}, 256)
	if app.midi, err = audio.NewMIDI(app.notify, func(msg []byte) {
		app.glitch.MIDI(msg)
	}); err != nil {
		app.Destroy()
		return nil, err
	}

	if app.audio, err = audio.NewAudio(app.notify, func(in, out []float32, sr, frames, inChannels, outChannels int) {
		samples := out
		if app.IsPlaying {
			app.glitch.Fill(samples, len(samples)/outChannels, outChannels)
		} else {
			for i := 0; i < len(samples); i++ {
				samples[i] = 0
			}
		}
	}); err != nil {
		app.Destroy()
		return nil, err
	}

	app.AudioDevices = app.audio.Devices()
	app.MIDIDevices = app.midi.Devices()

	url := startServer()
	app.webview = webview.New(webview.Settings{
		Width:     windowWidth,
		Height:    windowHeight,
		Resizable: true,
		URL:       url,
		ExternalInvokeCallback: func(w webview.WebView, data string) {
			if data == "__app_js_loaded__" {
				app.sync, err = app.webview.Bind("app", app)
				if err != nil {
					log.Println(err)
				} else {
					w.Eval(`init(); app.render();`)
					go func() {
						for range app.notify {
							app.webview.Dispatch(func() {
								app.AudioDevice = app.audio.Current().ID
								app.AudioDevices = app.audio.Devices()
								app.MIDIDevices = app.midi.Devices()
								app.sync()
							})
						}
					}()
				}
			} else {
				log.Println("unhandled external invoke:", data)
			}
		},
	})

	for midi, connect := range config.MIDI {
		app.SelectMIDI(midi, connect)
	}
	app.SelectAudio(config.AudioDevice, config.SampleRate, config.BufferSize)
	app.Load(config.Filename)
	return app, nil
}

func (app *App) Run() {
	app.webview.Run()
}

func (app *App) Destroy() {
	close(app.notify)
	if app.webview != nil {
		app.webview.Exit()
	}
	if app.audio != nil {
		app.audio.Destroy()
	}
	if app.midi != nil {
		app.midi.Destroy()
	}
	if app.glitch != nil {
		app.glitch.Destroy()
	}
}

func (app *App) NewFile() {
	if name := app.webview.Dialog(webview.DialogTypeSave, 0, "New file...", ""); name != "" {
		app.Load(name)
	}
}

func (app *App) LoadFile() {
	if name := app.webview.Dialog(webview.DialogTypeOpen, 0, "Open file...", ""); name != "" {
		app.Load(name)
	}
}

func (app *App) Load(path string) {
	app.glitch.Reset()
	app.Filename = path
	os.MkdirAll(filepath.Dir(path), 0755)
	app.webview.SetTitle("Glitch - " + path)
	if b, err := ioutil.ReadFile(path); err == nil {
		app.Text = string(b)
	} else {
		app.Text = ""
	}
	app.Error = app.glitch.Compile(app.Text)
	app.Config.Save()
}

func (app *App) SetVar(name string, value float32) {
	app.glitch.Set(name, value)
}

func (app *App) ChangeText(text string) {
	app.Text = text
	app.Error = app.glitch.Compile(app.Text)
	ioutil.WriteFile(app.Filename, []byte(app.Text), 0644)
}

func (app *App) SelectAudio(id, sampleRate, bufsz int) {
	devices := app.audio.Devices()
	if id < 0 || id >= len(devices) {
		return
	}
	in := 0
	out := 1
	if devices[id].InputChannels == 0 {
		in = 0
	}
	if devices[id].OutputChannels == 0 {
		out = 0
	}
	app.audio.Open(id, sampleRate, bufsz, in, out)
	app.AudioDevice = id
	app.BufferSize = bufsz
	app.SampleRate = sampleRate
	core.Init(sampleRate, uint64(time.Now().UnixNano()))
	app.Config.Save()
}

func (app *App) SelectMIDI(name string, connected bool) {
	app.Config.MIDI[name] = connected
	app.midi.SetConnect(name, connected)
	app.Config.Save()
}

func (app *App) TogglePlayback() {
	app.IsPlaying = !app.IsPlaying
}

func (app *App) Stop() {
	app.glitch.Reset()
	app.glitch.Compile(app.Text)
	app.IsPlaying = false
}


================================================
FILE: cmd/glitch/assets.go
================================================
package main

import (
	"bytes"
	"compress/gzip"
	"fmt"
	"io"
	"strings"
)

func bindata_read(data []byte, name string) ([]byte, error) {
	gz, err := gzip.NewReader(bytes.NewBuffer(data))
	if err != nil {
		return nil, fmt.Errorf("Read %q: %v", name, err)
	}

	var buf bytes.Buffer
	_, err = io.Copy(&buf, gz)
	gz.Close()

	if err != nil {
		return nil, fmt.Errorf("Read %q: %v", name, err)
	}

	return buf.Bytes(), nil
}

var _app_js = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x3b\xeb\x72\xdb\xb6\x9a\xff\xfd\x14\x48\xce\x6e\x48\x9d\x50\x94\xed\xa4\xad\xab\xac\xb6\xe3\x38\x4e\xeb\xd9\xe6\x32\xb1\x73\x72\xba\x8e\x57\x03\x91\x9f\x24\xd4\x20\xc0\x02\xa0\x6d\x25\xd2\x73\xec\x03\xed\x8b\xed\xe0\x42\x12\xbc\xc8\x76\xdb\x34\xbb\x9c\x69\x43\x83\xdf\x0d\x1f\xbe\x2b\x00\x05\x85\x04\x24\x95\x20\x89\x0a\x9e\xed\xec\x5c\x61\x81\x96\x68\x82\x72\x92\xf0\x94\x67\xf1\xf2\xd9\xce\xce\xbc\x60\x89\x22\x9c\x21\x22\x3f\xc0\xec\x1f\x04\xae\xc3\x01\xfa\xbc\x83\x90\x12\x2b\xf3\x2f\x42\xd7\x84\xa5\xfc\x3a\x86\x1b\x05\x82\x61\x1a\x13\x76\xc5\x2f\x21\x0c\x82\xc1\x33\xf3\x5d\x80\x2a\x04\x43\x4a\x14\xa0\x07\x36\x28\xc1\x2a\x59\xa2\x10\x06\x8e\x80\x03\x98\x63\x2a\x2d\xc4\xce\x66\x67\x67\x34\x42\x09\xc5\x6c\x31\x9c\x73\x91\x61\x85\xf8\x7c\x5e\x0b\xf3\xfe\x24\xc4\x79\x6e\xf1\x1d\xf6\x32\x0c\x52\x72\x15\x44\xe8\x73\x42\xb1\x94\x63\x14\x24\x9c\x29\x4c\x18\x88\x60\x13\x19\x3e\xee\xb9\x86\xd9\x4f\x80\x53\x10\x86\x46\xe3\x13\xce\xf3\x0f\x66\x36\xdd\x4f\xd7\x30\x7b\xc9\xb9\x72\x58\x83\x67\x5a\xc6\x4a\x9e\x9a\x64\x5b\xa6\xa5\x19\xf6\xc5\xba\x86\x19\xce\xf3\xa1\x5c\xf2\x6b\xd6\x92\x6c\x19\x06\x79\x10\x21\x56\x50\xda\x18\x37\x5f\x96\x7b\xe5\x27\x14\xfc\x6d\x41\x89\x4a\x96\xc1\xa0\x05\x86\x50\x30\x5b\x21\x86\xc9\x15\x48\x5e\xb0\xb4\x05\xb0\x0c\x83\x82\x6e\x65\x40\x49\xc5\x60\x19\x06\x58\xcb\xac\xb0\x58\x80\x1a\xa3\x60\x3a\xa3\x98\x5d\x06\x11\x5a\x0a\x98\x8f\x51\xb0\x54\x2a\x1f\x8f\x46\x35\xa7\x38\xe1\xd9\x28\x17\x3c\x2d\x12\x25\x47\x4e\xbc\x4d\x84\x02\x3c\xe3\x85\x0a\x06\x6d\x49\xff\x00\x3f\x39\x1e\x8d\x0c\xaf\x84\xf2\xc2\x32\xf4\x66\xaa\x79\xc1\x0d\xce\x72\x0a\xf2\x8b\xb1\x5b\x10\xb5\x2c\x66\x2d\x56\xfe\xec\x2c\xc0\x57\xe1\x37\x9a\x51\x3e\x1b\x65\x58\x2a\x10\xa3\xc3\xb7\x27\x71\x66\x27\xbd\x04\x9a\x07\x83\x41\x67\xa5\x5b\xde\x60\xbd\x74\xa8\x88\xa2\x30\x9c\xe1\xb6\x53\xdc\x07\x65\x38\x2b\x94\xe2\x2c\xd8\xf4\xcc\xf6\x6b\xa0\xf6\x78\x9d\x73\xc9\xb6\xd7\xcd\xcd\x70\xd0\x82\x6f\x7a\xf7\xed\xc1\x43\xbb\xa8\x95\xa4\xa5\x28\x48\x89\xe2\x3d\xa1\x23\xe3\x29\xa6\x7a\x38\x36\x6f\xaf\x71\x06\x68\x32\x41\x81\x04\xa5\x08\x5b\xc8\x20\xd2\xfc\x23\x54\xfe\x6d\xc3\x48\x93\xb4\x10\x5c\x3c\xc7\x3d\xc4\x15\xe7\x74\x86\x7b\x43\x8f\x27\x8f\x99\x91\x0e\xe2\x8a\xa4\xcf\xdc\x2b\x67\x89\x00\xac\x00\x4d\x50\x89\x12\x02\x2d\x23\xef\x11\x4f\xe1\x15\xd1\x6c\xe3\x14\xe6\x84\xc1\x2b\x9e\x42\xf8\xd0\x1a\xdc\xc3\xa8\x46\x29\x11\x50\x35\x84\x14\xbf\x04\x46\x3e\x41\x28\x95\x00\x9c\x45\x48\x2a\xac\xa0\x06\xb4\xfc\x13\x34\x41\x16\x20\x66\x70\xa3\x42\x97\x13\xf4\x43\xe6\x28\x1c\x7d\x4c\x47\xb1\x02\xa9\xc2\x64\xe0\xa3\xa2\x12\x09\xb0\xfa\xb0\x24\x14\xc2\xd1\xf9\xc7\xf4\x63\x7c\x31\xf2\x08\x54\xcb\xf7\x90\x15\xd9\x0c\xc4\xc3\xfa\xd3\x06\x01\x95\x60\x58\x24\x7a\x19\x1e\xfe\xed\x61\x2f\x79\x79\x49\xf2\x33\x7e\xcc\xd2\xb0\x97\x6e\xc2\xb3\x0c\x98\xea\x27\x3c\x3a\x1f\x3e\xfe\xfb\xc7\xd1\xbf\x3e\x5a\xff\xd7\x83\xc9\xbf\xfd\x7b\x74\xb1\x65\x26\x25\x31\x9e\x83\xc0\x8a\xdf\x26\x66\x10\x06\x68\xbd\x46\xf6\x7d\x10\xdc\x41\x67\x3b\x99\x7f\x69\xa1\xea\x2f\xb5\x42\xb5\xd6\x1f\x8f\x5a\x52\xd6\xf4\xaf\xb0\x20\x78\x46\x61\xf8\xe4\xa1\xaf\x93\x4d\x8f\x28\xb3\x82\x50\x45\x58\x47\x92\x3b\x16\xf2\xfa\x63\x3a\xfd\xdb\xc5\xe3\xd1\xa0\x17\xec\x34\xc7\x09\x34\xd7\xc3\x93\x3f\x07\xb8\x0c\x07\x4e\x59\xed\x29\x68\x8b\x93\xb5\xc5\x25\x85\x10\xc0\x54\x93\x96\x33\xbc\xe5\xa7\xb5\x24\x6c\xad\x04\x59\x4b\x7c\xbd\x96\xbf\x89\x35\xcd\xe7\xeb\x65\x3e\x5f\xcf\xf4\x7f\x72\xbe\x56\xe2\x60\xf7\x60\x9d\xd3\x22\xb9\x5c\xcf\xb3\x75\x0a\x14\xaf\xd6\xc0\xd2\x75\x46\x6e\xd6\x12\x7e\x5b\x53\xce\xf3\x35\x5e\xcb\x35\x5d\x0b\xb7\xf8\xb2\xa3\xd6\x5a\x5b\x97\xb0\xba\xe6\x22\x7d\xd8\x94\x66\x73\xfb\x22\xec\xdf\xb9\x08\x25\xa8\x6f\x57\x3b\xcd\x7f\x1d\x68\x2d\x98\x54\x58\xa8\x53\xed\xb0\xe3\x3e\x27\xef\xc5\x41\x26\x10\x59\xa7\x1f\x57\x6f\x7e\x9c\xda\x78\x12\xd4\xe3\x06\xd2\x63\xb3\x35\x5e\xb4\xed\xd4\x19\xc2\xa0\x14\x45\x27\xd3\x1e\x2f\x35\x74\xe2\x2d\xe1\xa8\x47\x22\x27\xe5\xc6\x7d\xd3\x21\xdb\x06\x51\x34\xf1\x03\xe2\x5c\xf0\xec\x0c\x6e\xd4\xa1\x00\x1c\x02\x8d\x2a\x41\x29\x61\xf0\xda\x04\x1c\x89\xc6\xa6\xac\x2d\x29\xab\x25\x64\x80\xc6\x28\xc8\xb0\x02\x41\x30\x0d\xca\x2f\xb8\x50\x7c\xce\x93\xa2\x8d\x91\xe9\x52\xf8\xb9\xc0\xc9\x25\x28\xd9\xfc\xa4\x51\x8e\x28\x97\xd0\xff\x59\x26\x82\x53\x9d\x14\x4e\xd5\x8a\x1a\xa6\x92\xe8\xe2\xc7\xb1\xec\xce\x2e\x96\xa0\xfe\x81\x69\x01\x26\x49\xa5\x58\xe1\x58\xc1\x8d\xea\xc2\x71\x16\x06\xc9\x12\xb3\x05\x04\x5e\x06\x48\xb2\x08\xd9\xd1\x7a\xc9\x12\x0a\x58\x9c\x91\x0c\x78\xa1\x42\x45\xd2\x4a\xdb\x8a\xa4\xda\x0b\x41\x95\x1f\x7b\x6d\x4c\xf3\xb4\x24\xb5\x9e\xc3\x24\x8b\x17\xa5\x88\x83\x8a\xd4\x26\x42\xfb\xdf\xec\x0e\xfc\x35\xdb\x94\xc9\x0d\x28\x9a\xf4\xe4\x6e\x3b\x8f\xe9\xf4\x5a\xe0\x3c\x07\x31\x9c\x93\x1b\x48\xef\x51\xef\xb4\xf1\x78\xa1\x3a\xcd\xc3\xfd\x30\x09\xeb\xb6\x1d\x15\xae\xd6\x3a\x16\x80\xfb\x08\x78\xdf\xca\xcc\x3d\xae\xde\x74\x05\x64\x14\xa0\xdd\xc4\x33\xdb\x47\x8f\x50\x63\x49\xd1\x83\x89\xbf\x9e\x9e\x52\x9d\xf2\xef\x67\x14\x9b\xba\x3e\x02\xda\x2a\x3a\xfc\x4a\xe5\xf6\x42\xca\x80\x0e\x53\x82\x29\x5f\x04\xda\x2b\x57\x14\xc6\xe8\x73\x4a\x64\x4e\xf1\x6a\x8c\x6a\xc6\x06\x12\xfd\x80\x82\x19\xe5\xc9\x65\xa0\x4d\x9a\x71\x06\xc1\x60\xd3\x54\x64\xe9\x5c\x27\x89\xb6\xd4\x8f\xc5\xf1\xee\xee\x6e\xd0\x2e\x8b\x6c\x39\x76\x45\x24\x99\x51\x70\xa5\x97\x6e\x08\x81\x29\xb9\x45\xe2\xc6\x62\x95\xe2\x1b\x3a\xc3\x19\x4e\x2e\x17\xc2\xf4\x19\xcd\x35\xed\x4e\xc7\xb1\xec\x9d\x47\x13\x97\xb3\x84\x92\xe4\xb2\x19\x80\x51\x55\x41\x86\x83\x67\xa8\x81\xb1\x89\xee\x25\x6c\x70\x17\x17\xe8\x66\x28\x88\x73\x01\x57\xc0\xd4\x0b\x98\xe3\x82\x76\x32\xa6\x86\x90\x8a\xe7\x6f\x05\xcf\xf1\x02\x5b\x61\xb7\xa7\xb1\x8d\xa7\xeb\xd6\xba\x34\xca\xdf\xaa\x60\x95\xa6\x6f\x7b\x87\x15\xe8\xec\x7d\x7e\xe1\x1b\xb9\xb1\x0d\x5c\xa4\x84\xbf\x80\x2b\x92\x80\x3c\xef\x1b\xbd\x28\x27\xd5\x24\xf5\x3b\x08\xc4\x1e\x66\xcb\xfc\x2b\xb5\x77\x1a\xe7\xae\xbd\x5b\x83\x71\x6d\xbf\xee\xcf\x4e\x8f\xcf\xce\x4e\x5e\xff\x78\x1a\xdc\x19\x7f\x7c\xd4\x61\xa2\x43\xbf\x0d\x03\x77\x5a\x89\x66\xf3\x3f\xff\xdd\xee\x42\xb7\x31\x70\x4b\xd3\x17\x10\xe7\x5c\x64\xfd\xfb\x03\xdb\xc9\x69\x9c\xa1\x76\x8e\x7c\x5b\xc0\xa3\x78\x06\x74\x0b\x62\xf9\x6d\xce\x85\xee\xba\xf4\x7a\x0c\x53\xb3\x20\x43\x09\x14\x12\x65\x74\x78\xa8\xc7\x91\x1d\x1f\xf7\xec\x7a\x18\x36\x0e\xbe\xed\x1c\xee\x21\xe9\x16\xfa\x3d\xc4\xda\xee\x6f\x24\xbd\xd2\x61\xb2\x1f\xda\x7c\x1a\xa3\x20\x78\xdc\x67\x59\xbd\x28\x9c\xd9\xcc\xb7\xb5\xfc\xf2\x1e\x4d\xd4\x0a\x6b\xf4\x10\x3e\x56\x4b\x22\x63\xc3\x34\xaa\x2d\xbc\x36\x5f\x6f\x70\x56\xcc\xe7\x20\x4e\xc9\x27\xe8\x78\xb4\x79\x36\xdd\xc1\x4d\xd4\xef\x35\x71\x86\xf3\xb0\xa7\x87\x6c\x3d\xb5\xcb\xf0\x5c\x43\xea\xf5\xa8\xf5\x03\x34\x26\xe9\x26\x42\x40\x63\x86\xb3\x5e\xa1\x36\xed\xbd\x0c\xf4\x95\x8c\xcf\x2a\x70\x28\xb0\x6a\xd8\xde\xa9\x19\x46\x7a\xf8\xcf\x98\x5e\x0f\xf5\x2f\x67\x79\x7d\x46\xf0\xa5\xad\xae\xd7\xb4\x51\xbf\x2d\xfe\x31\xb3\xf3\x02\xf0\x9f\x37\x36\xa0\xc6\xcc\xfe\x5f\x59\x98\x55\xcb\x50\x92\x4f\x0d\x0b\x7b\x6e\x86\x91\x1e\xfe\x33\x16\xd6\x43\xfd\x2f\xb0\xb0\x7a\x69\xbf\x92\x85\xf5\x06\x38\xcf\xec\x7e\x8f\x85\x9d\x7f\xfb\x34\x42\x7b\xfb\x07\xba\xa7\xf8\x36\x42\xdf\xec\xed\x47\x68\x6f\x77\xff\x69\x84\xf6\x77\x9f\x1e\x44\xe8\xe9\xee\xf7\xdf\x46\xe8\x60\xef\xfb\xfd\x8b\x2f\x66\x81\xe8\x31\xaa\x8e\x42\x9a\xf2\x0c\xba\x76\xb8\xbd\xd2\x40\x7f\xb1\x8d\x6a\x43\x7c\x75\xf2\xe2\xc4\x65\x59\xb9\xd5\x12\xb7\x4b\x60\xad\xa8\x4f\x02\x54\xaf\x62\x46\x52\x52\x66\x14\x0a\x6c\xa1\x96\x68\x32\x41\xbb\xe8\x87\x7e\x1b\x69\x2a\x04\x05\xa1\x2e\xa5\x07\xc1\x00\x8d\xb7\xdb\x54\x87\x4f\x6b\x29\x23\x44\xb6\xda\xa4\xad\x47\x4d\xfb\x1a\x68\x12\xc3\xe0\x31\xe9\x35\x30\x84\xee\x51\x1e\x6e\x9b\x52\xb5\x1c\xba\xe2\x0a\xc6\x48\xe7\xc4\x3b\xf1\x0c\x26\x61\x79\xb1\x35\x0c\x74\x1e\xb5\xca\x75\xde\x4d\x96\x90\x5c\xce\xf8\x4d\xbf\x87\x77\x1e\x03\x0e\xa9\xb6\xe0\x38\xe1\x8c\x41\xa2\x20\xbd\x1f\xaa\x4e\xea\x7a\x3a\xf7\x83\xd6\x61\xeb\xbe\xb0\xbf\x27\xb0\x74\x9e\x3a\xd2\x68\x13\x0f\x5d\xf5\x11\xa1\x07\xfe\x0c\xfb\x03\x49\xe7\xb9\xd7\x4a\x75\xce\x39\x7a\x9f\xb2\x0a\xda\x12\xc2\x06\x83\x41\xe7\xcc\xc3\x3f\x09\xa8\xda\x27\x92\x70\xa6\xbb\x1d\xd7\xdd\xa7\xe9\xb8\xdb\x24\xef\x3d\xfd\xa6\xf4\xe8\x39\xa7\x29\x88\x37\x39\xb0\x1e\xb8\xfd\xa3\x83\x12\x4e\x77\xb4\x87\x42\xf0\xeb\x1e\xb0\xdd\x27\xdf\x55\x60\xb8\x90\xd0\x0b\xf2\xb4\x04\xd1\xbd\x63\x1f\xc4\xd3\x8a\x48\xd9\x17\xf6\x40\x1d\x3c\xaf\x24\x5a\x02\xed\xa3\x73\xf0\xf2\x85\x85\x30\x3b\x43\x5b\xb7\x22\x9c\xee\xba\x87\xae\xf7\x3e\x14\xed\x6b\xbe\xbd\x8c\xea\x18\x4c\xa7\x33\xc5\x50\x0a\xf2\x52\xf1\x7c\xc8\x19\x5d\x75\x1d\xaf\x6a\xeb\xb4\x69\x32\xb8\x7e\x49\x28\xc4\x33\xc2\xd2\xee\xe1\x8f\xc9\x5c\x66\x89\x63\x9c\xa6\x77\x1f\x35\xfe\x45\x42\x52\x8e\xd3\xfb\x49\x59\xdb\xd7\x17\x15\x76\xbb\x7c\x5a\x3c\xc5\x17\x0b\x0a\x6f\x29\x5e\xcd\x70\x72\x79\x9b\x90\x75\x9d\x41\xa4\x86\x27\x6c\x81\x7e\x70\xa2\x1b\x5b\x46\xe3\xf2\xaf\xd2\x01\x7a\x13\xf5\x5f\x30\x11\x1b\xa8\x14\xcf\xef\x56\xb2\x86\xfa\x3f\xb1\x85\x2d\xfb\x10\xf5\x41\x67\x7b\xdf\xaa\x21\xb5\x03\xfa\x5a\xfa\x6c\x08\xeb\x2e\xaa\xf0\x1c\x58\xf8\x87\x8f\xdc\x6f\x9b\x9d\x0e\x4f\xdd\x90\xdd\x08\x57\x1a\xb0\xbd\xff\x48\x1a\xf5\x94\x83\x1e\x1a\x92\xd5\x8e\x69\xbd\xc3\x18\x10\x46\x09\x33\x7b\xf3\x9c\xa9\x53\x73\x18\x13\x3c\xd9\xcf\x6f\x82\xc8\x1c\x4d\xfc\x04\x64\xb1\x54\x63\x14\x7c\xfb\x34\xbf\x09\x36\x4e\xb8\x96\x4c\x4b\x92\xc2\xcf\x1c\xa7\x84\x2d\x4e\x58\x4a\x12\xac\x78\x79\x8a\x9e\xf2\xa4\xc8\x80\xa9\x78\x01\xea\x98\x82\x7e\x7d\xbe\x3a\x49\xc3\x80\x5a\xf8\xa1\xcc\xed\xf6\xf6\x20\x36\xa2\xc5\x4e\x32\x5d\x31\x99\x7d\x4e\xcd\xa9\x73\x7b\x87\x79\xcc\x3f\xc0\xec\xdd\xdb\xa3\xb0\xce\x5f\x2f\x8e\x5f\x1e\xbe\xff\xf9\x6c\x7a\xfa\xe6\xf5\x8f\x68\x82\x1e\x9a\x93\xac\xd1\x08\xbd\xe0\xd7\x4c\x73\x45\x58\x66\xf1\xaf\x12\x71\x81\xe2\x6b\x2c\x33\x94\x70\x01\x3b\xd5\xcd\xa3\x57\x3c\x2d\x28\xa0\x49\xeb\xef\xf5\x1a\x7d\xae\x8e\x0a\x64\x22\x48\xae\xd0\xa4\x9e\x9e\xdd\x53\x77\x33\x0c\x03\x0b\x60\x0b\x75\xfb\x1e\xeb\xea\x49\xcf\x4a\xc1\x8d\x1a\xfd\x8a\xaf\xb0\x83\xf1\x40\xb0\x5c\xb1\x04\x4d\xea\xbb\x4b\x64\x8e\xc2\xe0\x03\xcc\x0e\xa5\x84\x6c\x46\x57\x01\x22\xcc\xc9\x55\xed\x50\x5a\x54\x29\x34\x62\x60\x2d\x6d\xa8\xa7\x09\x22\xfe\x55\x06\xf6\x8e\x94\x77\x8c\xda\x0b\x6f\x35\x12\x94\x1b\x95\x3d\x8b\x26\x9f\xaf\xce\xf0\xe2\x35\xce\xc0\xde\x42\x0a\x06\xe7\xbb\x17\x31\xce\x73\x60\xe9\xd1\x92\xd0\x34\xb4\x84\x07\xcf\x76\x9c\x8e\x4c\xdb\x75\xc4\x99\x39\x43\x98\x20\x06\xd7\xa5\x46\x0f\xbd\x2f\x76\xe3\xd7\xf4\x5f\x3a\x88\x56\x65\x87\xfe\x36\x46\x81\x73\xc6\x2a\xb4\x8e\xad\x6e\xec\xa8\xbf\x9f\x34\x46\xe7\x17\x76\xd4\x2b\xd5\xeb\xc1\xba\xdb\x1b\x37\x04\xeb\x6c\x71\x78\x34\x4b\xf6\x1b\x33\x25\x23\x22\x61\x44\xf9\x77\x1f\xca\x45\xb0\x36\x12\x27\x09\xa6\x34\xac\xdc\xd9\x69\x77\xaa\xb1\xaa\x60\x74\x1e\xd8\xeb\x05\x41\x84\xca\xb7\x8b\x3a\x02\x9c\x6f\x13\x0e\xed\x5e\xb8\xba\x4e\xeb\x56\xdb\x75\x83\x67\xc9\xca\x9a\x61\xcd\xec\x42\xff\xe7\x10\xcd\x0c\x16\x68\x82\x7e\xb4\x7f\x6b\xe3\x62\xf8\x8a\x2c\xb4\xbb\xc6\x02\x7e\x2b\x40\x9a\x8a\xf6\x30\x49\x40\xca\xba\x1e\xbe\x05\x28\x1c\xc4\x6a\x09\xac\xee\x87\xb4\xf6\xfd\x4a\xba\x3e\xe4\x61\x45\x06\x02\x2b\x68\x15\xda\xa6\xe2\xd4\x6d\x88\x2e\x39\x35\x76\x6c\xff\xb2\xed\xb8\x6c\x1e\x0c\xcc\xb9\x40\x61\x85\x81\x26\x0e\xb3\xbc\x0c\xe2\x86\x1f\x3d\x42\x0f\xcc\x5b\x9c\x72\x06\x9d\x6a\xb8\x17\xb7\x5d\xfd\x5b\x7c\x23\x43\xcc\x99\x96\x2b\x03\x29\xf1\xa2\x71\xf5\x25\xeb\xf6\x0c\xfd\x96\x50\x3f\xe5\x42\x69\x8a\xb7\xd9\x44\xdf\xdb\x45\x5f\x17\x70\xfe\x63\x84\x32\xe3\x3b\xe7\xbb\x17\xd5\xeb\x5e\xfd\xba\x7f\x71\xd1\x3e\x5c\xe9\xbf\x03\xe0\x0d\x7b\x8b\x55\x0f\x9a\xc5\xe1\xcc\x9c\x84\xdb\xee\x09\x4d\x6a\xc8\xea\x84\xb5\x3c\x5c\xdd\xa9\xac\xf5\xf0\xfd\x8b\x93\x37\xd3\xe7\xef\x5f\xbe\x3c\x7e\x37\x3d\x3d\xf9\xcf\x63\x34\x31\xfb\x24\xb5\x3d\xe7\x49\x86\x26\x4d\xc7\xb4\x96\x7c\x6a\x82\xca\x5b\xc1\xb5\xb1\x71\x11\x76\x48\x45\x68\x37\x42\x7b\x9e\x6b\x60\x86\xe9\x4a\x82\xe8\xa7\x77\xe8\xbe\x86\x36\x4e\xa1\x0a\x3c\x9e\xcf\x4d\xf6\x6b\x88\x56\x7d\x94\x19\xe7\x6a\x49\xd8\xe2\x8c\x64\x70\x64\x74\xc0\xb4\x09\xed\xb6\xe0\x5c\xf7\x17\x36\x38\xa7\x20\x15\x61\xe6\x98\xcb\xc9\x99\x27\x59\xcc\x99\x01\xca\xed\xd4\xd0\x04\x15\xcc\x5e\x9a\x4a\x9d\x64\xc6\x5d\xfd\xd9\xb8\x57\xcf\x99\xad\xda\xf2\x24\x73\x28\xda\xa3\x5d\x8c\xa5\x3c\x31\x1c\xe3\x25\x96\xcb\xda\x4c\xab\x40\x1b\xbb\xb0\x9c\x42\xc2\x53\x78\xff\xee\xe4\x88\x67\x39\x67\x3a\x79\xf5\x51\x88\x65\x31\x93\x4a\x10\xb6\x08\xf7\xca\x06\xd3\xbb\x27\xa4\x61\xe9\xa9\xe2\x02\x2f\x40\x27\x8d\x13\x05\x59\x18\xc0\x4d\x2e\x82\xc1\x2d\xcc\x6f\x43\x6b\xf0\xd8\x4a\xc1\xcf\xf5\xa5\xdd\x6d\xd3\x84\x04\x2c\x92\x25\x9a\x4c\x26\x28\xf8\x41\xd7\x18\x41\x4b\xb4\x66\xd1\x1f\x0e\x7c\x82\x06\xc0\xbb\x5e\xd0\x94\xc4\x81\xf6\xd7\x41\xde\x82\x09\x60\x29\xb8\x21\x2f\xad\x08\x98\x0b\x90\xcb\x56\x66\xf1\x00\xcc\xb9\xba\xf0\xbf\xdb\x1d\x07\xbb\x65\xd9\x93\x84\xd0\xa3\x47\x3b\x77\x87\xa4\x32\x18\x49\xe8\xcf\x4f\x76\xc5\xb7\x47\xa0\x73\x9b\x52\x22\xe4\x49\x73\xd1\x9e\x5c\xad\x34\x5f\x7e\xa3\x35\x27\xb8\x76\x5b\xd1\xce\x68\x9d\x2c\x9a\xf0\x2c\x27\x14\x1a\x91\xf1\xbe\xc2\x56\x82\x6a\xb6\xf6\xff\x6e\xbb\xb0\x8c\x8d\xda\x60\x04\x7a\x30\x41\xbb\x7d\xf6\x6a\x2f\x13\x4c\x50\x70\xba\x62\x0a\xdf\xd8\x1b\x0b\xc1\x1d\x26\x5a\x22\xf9\x17\x8d\xfa\x7c\xcb\x44\xd1\x8e\x17\x7a\x66\x85\x9a\x8e\x22\x1b\x8e\x62\x67\xd3\xb5\x55\xdf\x4b\xf4\x3f\x77\x5b\xa1\xdb\x37\xe8\x5a\xa1\xfb\x5e\xb6\xec\x5b\x01\x74\x13\x79\x67\x75\x54\x2e\xa7\x80\x5e\xab\xd3\x05\x8b\x5d\x2c\x7f\x65\xea\x19\x55\x95\xe0\x97\xf6\xdd\xdb\x34\xd3\x24\xde\x37\xc5\x1e\x01\xd1\x04\x3d\xe8\x19\xfe\x3d\x93\xd2\x79\xa2\x4c\x29\x8d\x74\x50\x5f\x8d\x2a\xc1\x3a\xe9\xc4\xc2\x9b\x3c\x84\x29\xad\x77\x31\xf4\xf8\x2d\xc1\x55\xd3\x4a\x89\x2c\xb9\xde\x83\x91\x97\xb7\x5a\x2a\xdf\xa2\xcd\x86\x50\x8d\x9b\xc4\x7e\x40\xa0\xc0\xb4\x63\xc4\xbc\x50\x79\xa1\xec\xa1\x96\xf3\xd9\x3a\xd9\x6b\x10\x0d\xf8\x77\xf4\x92\x72\xac\x9e\xec\x1f\x0a\x81\x57\xf1\xf3\x5f\xce\x8e\x4f\xa7\x6f\x8f\xdf\x4d\x8f\x7f\x3e\x7e\x75\xfc\xfa\xcc\xab\x34\xea\x38\x33\xcd\x30\xa5\x3c\x09\x99\x57\x3d\x2c\x01\xe7\xae\x59\x79\x4f\x98\x3a\x30\xf4\x42\x87\xf0\xd3\xf1\xe1\xdb\xf7\x07\xee\xcc\x2a\x42\x79\x84\x4a\x54\x8d\xa6\xfd\x32\x6c\x21\x5a\x50\x87\x31\x28\x6b\x8e\xdb\xe3\xdc\x9c\x50\xfa\x27\x2a\xc3\x2a\xd4\x19\x99\x66\x2b\x05\x6f\xe6\x73\x09\x2a\xd2\x8a\x8a\xd0\x9e\xdf\x46\x08\x90\x05\x2d\x9b\x33\x5f\x83\xa1\x45\x76\x13\xed\xa3\xe4\xa8\xb4\xd6\x27\xe1\xf9\xea\x8c\x1f\x2d\x31\x63\x40\x43\x4b\xde\x54\x68\xe5\x95\xbb\x52\xf5\x73\x01\x10\xe6\x9e\x65\xd8\x0f\xe7\x01\x67\xef\x0a\xa6\x48\x06\x27\x8c\x28\x82\x29\xf9\x04\x69\x70\x51\xda\xb3\xee\xa4\x5a\x66\x5c\xfe\x1e\x68\x49\xa4\xd9\x94\x30\x35\x60\x9e\x37\x7e\x6c\xc4\x88\x72\x9e\x8a\xf3\xdc\x99\x65\x9f\x17\x3b\x5a\xe6\x42\x9b\x6d\x7b\xbd\xdf\x2f\xe5\x58\x25\xcb\x4e\x49\xaf\x61\x39\x4d\x5f\xf3\x14\xdc\x5e\xa0\xfb\x0b\x4d\xdc\xef\x8a\xea\x33\xc7\xc1\x20\xf2\x69\x7b\xb3\xaf\x36\xbe\xda\x29\xde\xbf\x63\xe7\xfd\x12\xc0\x24\xdc\xfa\xaa\x65\xd7\xd1\x46\x23\x74\xa4\x04\x7d\x7c\xcc\x14\x08\xa4\x38\xb2\x21\xcc\x6c\xc2\x6b\xb7\xf3\x9b\x7c\xce\x2e\x61\x95\xf2\x6b\xd6\xeb\x8b\x3a\x52\x41\x7c\x09\xab\x23\x33\xa9\xc9\x04\xed\x7f\xe7\x57\x17\x0d\xc9\x06\xe8\xb3\xe1\x7d\x2c\x13\x34\x44\xe6\xd2\x11\x72\xd7\xa6\xed\x1d\xba\x48\xd3\xc3\x6c\xe5\xd0\xb7\xdf\x14\xf3\xaf\x24\xb5\xab\xcd\xa6\x38\xdf\x1d\xe8\x86\x0f\xe2\x44\x09\xfa\x1f\xb0\x2a\x45\x30\xd3\x7f\x7d\x2f\x3e\x2e\xf1\xdd\xcd\xe9\xfb\xed\x9c\xde\xdc\x8b\x53\x99\x42\xef\x64\xb5\xf7\x64\x3b\x2b\xb3\xa6\xf7\x62\xb7\x3d\x29\x36\xad\x24\xe3\x85\x04\x94\xf1\x2b\xd0\xa6\xe2\x7a\xbb\x7f\x8e\x7e\xb1\x15\x9d\x6c\x1a\x8b\x01\x36\xb0\xdb\xcd\xa5\x16\xdb\x49\xa3\xbd\xf2\xc6\xc4\xf3\x1c\x2f\xe0\x9f\x68\x54\x56\x42\x66\xf3\xef\x03\x49\xcb\xa8\x6e\x41\x57\xba\x0d\x43\x43\x4d\x4a\xc3\xff\xd2\x82\xb7\x9b\x92\x8d\xa9\xda\x0a\x39\x0c\x6e\x82\x08\xdd\xf4\x7e\x59\x05\x11\x5a\x35\x55\xb0\xd9\xd9\xd1\xf2\x7a\x3f\x46\x6c\x6d\x5a\xce\x78\xba\x8a\xcd\x5e\xea\xcf\x44\xaa\x18\xa7\x69\x18\x94\x1b\xdb\x38\xcf\x6d\x97\xb2\xbd\xea\xdf\xf6\x5b\xc6\xe9\x14\xe7\xf9\xf4\x57\x39\x35\xfb\x74\xe9\x74\x6a\x7e\x5b\x54\x67\x63\x9c\x97\x49\xa8\xdc\xdc\x34\x9b\x81\x26\x8c\x69\xa9\xff\x37\x00\x00\xff\xff\xa7\x7a\xe0\xe6\x6a\x39\x00\x00")

func app_js() ([]byte, error) {
	return bindata_read(
		_app_js,
		"app.js",
	)
}

var _index_html = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x96\x5d\x6f\xdb\x36\x17\xc7\xaf\xdd\x4f\xc1\xe8\xc6\xf6\x03\x51\x8a\x93\x3e\x41\x32\x4b\x06\xd2\x36\x2b\xb2\x8b\x6e\xc0\x12\x60\x80\x61\x0c\xc7\xd4\xb1\xc4\x84\x22\x59\xf2\xc8\x2f\x6b\xfa\xdd\x07\x4a\x76\xec\x24\x5d\xd7\x75\xbb\xb1\xcc\xf3\xf2\x3f\x87\x3f\xf2\x08\xca\x8e\x0a\x23\x68\x63\x91\x55\x54\xab\xc9\xab\xac\x7b\xf4\xb2\x0a\xa1\x98\xbc\xea\xf5\xb2\x1a\x09\x98\xa8\xc0\x79\xa4\x3c\xba\xbd\xf9\x91\x9f\x47\x7b\x47\x45\x64\x39\x7e\x6c\xe4\x32\x8f\x7e\xe3\xb7\x97\xfc\xad\xa9\x2d\x90\x9c\x2b\x8c\x98\x30\x9a\x50\x53\x1e\x5d\x5f\xe5\x58\x94\x18\xb1\xf4\xcb\x99\x6f\xbb\x40\x7e\xb3\xb1\x87\x69\x84\x6b\x4a\x43\x43\xe3\x5d\xfd\x86\x16\xfc\x3c\x62\x93\x57\x8f\x32\x1a\x6a\xcc\xa3\xa5\xc4\x95\x35\x8e\x0e\x92\x57\xb2\xa0\x2a\x2f\x70\x29\x05\xf2\x76\x11\x33\xa9\x25\x49\x50\xdc\x0b\x50\x98\x8f\x92\xe3\x98\xd5\x52\xcb\xba\xa9\xf7\xa6\xa8\x13\x57\x52\xdf\x33\x87\x2a\x8f\xa4\x30\x3a\x62\x81\x51\x1e\xc9\x1a\x4a\x4c\xad\x2e\x23\x56\x39\x5c\xe4\xd1\x02\x96\xc1\x9f\xb4\x26\x2f\xff\x40\x9f\x47\xa3\xb3\xf5\xe8\xac\x63\xb4\x57\x01\x6b\x15\x72\x32\x8d\xa8\x78\xa7\xd8\x09\x94\x4a\x92\xa8\x46\x17\x27\xeb\xd1\xc5\x49\x2b\x33\xf9\x52\xf9\x27\xc1\xe7\xc7\xeb\xd1\xf9\xf1\x36\x38\x44\x93\x24\x85\x93\xf7\xad\x37\x4b\xbb\xd5\xb3\x5d\x78\xda\x28\xf4\x15\x22\xed\xf6\xd2\xd2\x15\xde\xef\xc4\x97\xa8\x0b\xe3\x52\x67\xe6\x86\x0c\xaf\x8d\x36\x87\xff\x93\x10\x39\xf9\x4e\xcd\x1a\x08\x5d\x00\x1f\x36\xe3\x9f\x2d\xff\x95\xb2\x30\x05\xd6\xd2\xb9\x27\x7f\xff\x2b\xc5\x5d\x9f\xdf\xa7\xd7\x45\xec\x72\xb3\x74\x3b\x51\xd9\xdc\x14\x9b\x56\x4c\x1b\x2f\x9c\xb4\x14\x16\xbd\xac\x90\x4b\x26\x14\x78\x9f\x47\x3b\x07\x0f\x97\x19\xa4\x46\xd7\x56\xef\xf5\x32\xfb\x22\xa4\x46\xef\xa1\xc4\x68\xf2\x8b\x42\xf0\x18\x33\xd4\x30\x57\xc8\x7e\x82\x25\xfc\xda\x86\x30\x32\xed\x54\x48\xdd\x20\x6b\xbc\xd4\x65\xab\xd5\xa3\x4a\x7a\xe6\xcd\x82\x56\xe0\x30\x66\xc6\xb1\xc2\xac\xb4\x32\x50\x30\x60\x05\xfa\x7b\x32\x96\x2d\xd1\x79\x69\x74\x92\xa5\x76\xdb\x02\xbc\x68\x21\x40\x89\x18\x81\x2b\xc3\x1b\xe2\xf7\xb9\x82\xb0\xee\x20\x84\x29\xf7\x3f\xa4\x69\x29\xa9\x6a\xe6\x89\x30\x75\xaa\x41\x2e\xd1\x9b\x46\x17\x69\x77\x9f\xa3\xc9\xbb\x6d\xe1\x2c\x85\x0e\x46\x5a\xc8\x65\xcb\x28\x3d\x84\x94\x1d\x71\x3e\x95\x0b\xa6\x88\x5d\x5f\xb1\x8b\x59\x6b\x3b\xe0\x26\x91\x37\xb6\x74\x50\xe0\x73\x72\x7b\x70\x07\x31\x2f\xd0\x6d\x1d\xec\x5a\x13\x3a\x8d\xc4\xae\xd6\x56\x19\x87\xee\x25\x42\xf6\x84\xde\x23\x9e\x3d\x9d\x83\x3a\xdf\xc2\x67\xb5\x5a\x25\xb5\x14\xce\x04\xc9\x16\x13\x6a\xde\xf8\x74\x77\x24\xa9\xdc\xf6\xc4\x71\xdb\x53\x02\xde\xae\xa3\xc9\x6d\x57\x64\x4b\x6e\x0f\xee\x68\x8a\xba\x90\x8b\x19\xe7\x87\xe4\x4a\xc2\x16\x1d\x7b\x60\x47\xd7\x57\x6c\x36\x61\xc1\xf3\xc8\x51\x16\x79\x14\xaa\x49\x5d\x72\x6f\xa5\x6e\xf9\xed\x35\xbb\x93\x60\xde\x89\xbf\x99\xbf\x3b\x1f\xd2\x0e\x0e\xee\xeb\x99\x35\x90\xa8\xe6\x0e\xc4\x3d\x92\xff\xa7\xc9\x5e\xd6\x56\xa1\x17\xce\x28\x35\x07\xf7\x6d\xf9\x56\x0a\x53\x98\x7a\xf7\xfc\x7a\x0e\x58\xfb\x57\x01\xed\xa1\x0f\x16\x8d\x16\x24\x8d\x1e\xc8\xd8\xc7\x26\x2e\x63\x17\x43\x5c\x0f\x3f\xc9\x69\xff\xbd\x31\xa5\xc2\x4b\x0d\x6a\x43\x52\xf8\x9f\xe7\x77\x28\xa8\x3f\xcb\xdd\x58\x4e\xdd\x2c\x0f\x3f\x0f\x0f\x8f\xf9\xc3\x4f\xed\x8c\x0d\x82\x39\xf9\x98\x77\x8f\x87\x87\xe9\x6c\x98\xd8\xc6\x57\x03\x70\x65\x53\xa3\x26\x3f\xfc\x1c\xb7\x4e\x95\x8f\xfe\xa7\x71\xc5\xde\x01\xe1\x60\x38\x86\xdc\x27\xc2\x21\x10\x5e\x29\x0c\x81\x03\x33\x8c\xbb\x69\xaf\x73\x9f\x94\x48\x5b\xbb\x7f\xb3\xb9\x81\xf2\x03\xd4\x38\x30\xc3\xe9\xf1\x6c\x0c\x09\xf8\x8d\x16\xf9\x68\x0c\x49\xd8\x74\x39\xae\x13\x0b\x0e\x35\x7d\x30\x05\x26\x52\x7b\x74\xf4\x06\x17\xc6\xe1\x20\xec\x2d\x88\x7e\x1e\x0e\x56\x52\x17\x66\x15\x17\x46\xb4\x7d\xc5\xfd\x0e\x4b\x3f\xee\x1f\x5e\xec\xb2\x85\xc0\x61\x47\xa1\xbd\xdf\xfb\xd5\x9d\xef\xc7\xfd\x12\xfa\xc3\x71\x50\x2d\x61\xd0\xef\xf6\xd0\x8f\x59\xff\xf6\x92\x9f\x9e\x9e\xbd\x7e\x7d\x7e\xf2\x7f\x7e\x1a\x0c\xd0\x90\x39\x88\xf4\xa8\x8b\x60\xb6\x50\x62\xf8\x08\xe8\x5c\x4f\x4e\xea\xc9\x24\x64\x69\xf7\xfa\xcd\xd2\xee\x43\xe7\xcf\x00\x00\x00\xff\xff\xa9\x89\x3d\x1d\x00\x09\x00\x00")

func index_html() ([]byte, error) {
	return bindata_read(
		_index_html,
		"index.html",
	)
}

var _styles_css = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x58\x6b\x6f\xe3\xba\xd1\xfe\x6c\xfd\x8a\xc1\x1e\x04\xde\xec\x1b\x2a\x14\x2d\xcb\x8e\x8d\x00\xef\x69\xb0\xc0\x16\xe8\xf6\x43\x0b\x9c\x9e\xa2\x28\x16\xb4\x44\xdb\x44\x28\x51\xa0\xe8\x4b\x1c\xe4\xbf\x17\x24\x75\xb7\x9c\xcb\x62\xd7\x1b\x23\x1c\x51\xcf\x3c\x73\xe1\xcc\x30\x5f\xe0\xd9\x1b\xa5\x54\x6d\x78\xb6\x00\xbc\xf4\x46\x39\x4d\x12\x9e\x6d\xdc\x62\x25\x8f\xa8\xe0\x27\xbb\x5e\x49\x95\x30\x85\x56\xf2\xb8\xf4\x46\x6b\x99\x69\xb4\xa6\x29\x17\x4f\x0b\x18\xff\x43\xae\xa4\x96\xf0\x5d\x66\x72\xbc\xf4\x5e\x3c\x6f\xab\x53\x01\xcf\xb0\x65\x7c\xb3\xd5\x0b\x08\x30\xbe\x5a\xc2\x8b\xb7\x92\xc9\x93\xd1\x77\xe0\x89\xde\x96\x62\x6f\x94\xf2\x0c\x75\x76\x96\xf0\x05\x3f\xb1\x05\x04\x51\x6e\x14\xa2\x03\x5b\x3d\x72\x8d\x76\x05\x53\xa8\x60\x82\xc5\x7a\x01\x99\xcc\x98\x79\x96\xca\xd3\x85\x07\xc5\xb0\x5c\x0e\x8a\x87\x64\x2b\x1a\x3f\x6e\x94\xdc\x65\x09\x8a\xa5\x90\x6a\x01\xbf\x91\xc0\x7c\xac\x9d\xb7\x5f\xe0\xef\xf2\x9f\xb1\xe2\xb9\x86\x94\x15\x05\xdd\xb0\x1b\xf8\xeb\xd7\x3b\xa0\x59\x02\x52\x24\x4c\x55\x62\xf8\x72\xeb\xf9\x9c\xa1\x5d\xbe\x51\x34\x61\x28\x96\x99\xa6\x3c\x63\xea\x06\xfc\x4c\x16\x16\xa2\x11\x1a\x27\x75\x9d\x37\xc0\x63\x1a\xcd\x66\xeb\x78\x09\xd5\x7a\x6d\xff\x2d\xa1\xe5\x3c\xc2\x52\xc3\xb3\xad\xb8\xa6\xd9\xa8\xad\x28\x3e\x43\x4a\x8f\xa8\x0c\x0e\x99\xb2\x74\x09\x75\x36\x18\x24\xe8\x22\x09\x9e\x3d\xb6\x61\xcc\xda\x10\xb7\xfa\x0f\x25\xfb\x95\x14\xc9\x39\x45\xcd\x8e\x1a\x69\x45\xb3\x62\x2d\x55\xba\x80\x5d\x9e\x33\x15\xd3\x82\xf5\x34\x96\x3e\xfe\x17\x5b\xc1\x9e\xa9\x82\xcb\x0c\x1a\x1f\x51\xeb\x0e\xd0\x5b\x06\x29\xe5\x19\x1c\x78\x96\xc8\x83\x75\x74\xc7\x91\xb9\x2c\xb8\xe6\x32\x5b\x00\x5d\x15\x52\xec\xb4\x89\xeb\x9b\x29\x38\xe0\xf0\xf5\x3a\x0e\xf0\xac\xfb\x8c\xa7\x74\xc3\x16\xb0\x53\xe2\xf3\xa7\x84\x6a\xba\xb0\x82\xdb\x62\xbf\xf9\xbf\x63\x2a\x6e\xae\x26\x0f\xc5\x7e\x03\x56\xdb\xfd\x98\xe0\x71\x79\x26\xee\xc7\x01\x19\xc3\x9e\xb3\xc3\x5f\xe4\xf1\x7e\x8c\x01\x03\xc1\x60\x64\xc7\x54\x64\xc5\xfd\x78\xab\x75\xbe\xb8\xbd\x3d\x1c\x0e\xfe\x61\xe2\x4b\xb5\xb9\x25\x18\x63\x83\x3b\xbe\x9a\x7c\xbd\x9a\x3c\xe4\x54\x6f\x21\xb9\x1f\x7f\x8f\x20\x20\x31\x46\x7e\x44\x08\xf2\xf1\xdd\x14\x05\x3e\x21\x01\xf2\xc9\x0c\x05\xfe\x6c\x3e\xfd\x7d\xea\xdf\xcd\x09\xb8\x6f\x6c\x3f\x81\x51\x15\x07\x7e\x34\x03\x0c\x13\x3f\x98\x13\xe4\x47\xf3\x09\x84\x9d\x97\xee\xe6\xe0\xbe\xcb\x97\x42\x08\xc8\x96\xd0\x10\x42\xb7\x86\x10\x85\x7f\x44\x31\x72\x38\xc8\xe2\x18\x18\x64\x60\xc0\xc2\x3c\x04\x53\xff\x0e\x4f\x61\xe6\x13\x02\x41\x04\x91\x61\x69\x7f\xf9\x20\x63\x82\x21\xfa\x23\x6c\x74\xa3\x10\x85\x5b\x44\x62\x0c\x06\xc5\x80\x80\x05\xa9\x35\x0f\x5b\x8d\x1f\xe6\xfe\x64\x02\x18\x22\x7f\x1e\xcc\xad\xcd\x53\x7f\x36\x71\xaf\x80\xe3\x6a\x70\x20\xb2\xb8\x10\x01\xfe\xd6\xd1\x0a\xe1\xbe\xeb\xb8\xda\x6f\x30\xec\xb7\x00\xc2\xda\xd8\xc6\xd6\xcb\xa6\x06\x86\xdc\xbe\xe3\x65\x08\xb7\xe4\x94\xa2\x10\x30\x25\x50\x1a\x83\x08\x22\x7b\x62\xe4\x41\xd4\x92\x07\xe0\xe4\x88\x9c\xbe\x63\x20\xcd\x7e\x23\xff\x86\xf7\xe4\x94\x12\xdc\xde\x6f\x70\xb6\xc4\xc8\x51\x80\x61\x5e\xaa\x0d\xac\x8a\x39\x54\x24\xcc\x67\x7e\x4a\x31\xaa\x10\xdd\x86\x10\x1a\x7c\x0c\xe1\x69\x0c\x6b\x2e\xc4\xfd\xf8\x8a\x4c\x42\x6c\x3e\x4e\x80\x64\x4e\x63\xae\x9f\xee\xc7\xd8\x0f\x4a\x91\xda\x09\x76\x3f\x66\x7b\x96\xc9\x24\x19\xdf\xba\x94\x36\xd9\x7d\x35\xf9\xfa\xe9\xda\xd6\xac\xe6\x0c\x6f\x19\x4d\xba\x35\x91\x84\xd8\x76\x85\x56\xbd\x9a\x91\x4a\x54\xf6\x32\xa0\x3b\x2d\x97\xde\xc8\xd6\x1a\x2a\xf8\x26\x5b\x40\xcc\x32\xcd\x54\xbb\xcb\x11\x96\x3a\xfe\x3d\x9d\x6b\x29\x75\x57\xe7\xa4\xac\xa5\x67\xbc\x04\xb7\x55\xa6\x46\xf4\xa7\x06\xd3\x7c\x2f\xbd\x51\xc2\x8b\x5c\xd0\xa7\x05\xf0\x4c\xf0\x8c\xa1\x95\x90\xf1\xe3\x30\x0e\x35\x30\x17\xf6\x3b\x2b\x12\x16\x4b\x45\x5d\x2d\xbb\xdc\x9f\xd6\xeb\xe9\x8c\x90\xa5\x37\x6a\x55\x5d\xdb\xcb\x6d\xff\x56\x34\xe1\xbb\x62\x01\xc4\x7a\xab\xe9\xf6\x96\x75\x60\x39\x9b\x6a\x58\x7a\x35\xba\x64\xb4\xef\xaa\x2d\xd2\x5c\x0b\x86\x56\xd4\xba\xaa\xa7\x22\xcc\x8f\xf6\xc7\x7a\xb7\xf1\xa3\x6b\xe8\xaf\x34\xd6\x5e\x71\x6e\x07\x50\xb0\xb5\x1e\xa4\x6d\x92\xd2\x92\x3f\x21\x9e\x25\xec\xb8\x00\x62\x89\xf7\x69\xa2\xd5\x4e\x6b\x99\xbd\xe6\xea\x52\x3b\xf6\x67\x16\xb0\xe2\x5d\xad\x9b\x04\xc3\xbe\xcd\x89\xbe\xd9\xd8\x9f\xb8\xd8\x0f\x98\xe8\xce\x85\x65\x46\xf3\x1c\x95\x2d\xab\xd3\xa4\x14\x13\x54\xf3\x3d\x7b\x67\x7a\x57\xf4\xa6\xb3\xd2\xaf\x66\x64\xdb\xd2\x44\x1e\x16\xb6\x68\xe7\x47\x20\xf3\xfc\x08\x6a\xb3\xa2\x9f\xf1\x8d\xfd\xf8\x64\x7a\x7d\x63\x2b\x62\x7e\x74\x5f\xdd\xa7\xe4\x7a\xe9\x8d\xe4\x9e\xa9\xb5\x30\x30\x5b\x9e\x24\x2c\x7b\xcf\x30\xf4\x7b\x9e\x57\x6d\x98\x09\x96\xb2\x4c\x17\xb6\x1f\x33\xa5\xa4\x42\x09\xa7\x42\x6e\x8c\xb5\x75\x90\x02\x8c\xdb\x87\xa4\x4c\xea\xe1\x23\x3b\xd4\xc6\xdb\xa9\x1a\xf6\x4b\x42\x10\x95\x3e\x6b\x75\xf7\x72\x97\x0d\x78\x4f\xa6\x65\x5e\xe7\x9c\xc9\xb3\x66\x3a\xb0\x3e\x47\x4e\x86\x66\xa4\x15\x08\x64\x5f\x42\x81\x71\x71\x27\x2f\xeb\x02\xd0\x3f\x95\x2f\x9e\xe7\xa7\x32\xa1\x02\x35\xde\xbc\x38\xa5\x58\x74\x5c\xf3\x31\xbf\xa9\x32\x1b\x6d\xa8\xb5\x96\x69\xcd\xbf\x76\xea\xb4\xcd\x64\x72\x21\x15\xcb\x88\x43\xf9\xdf\x9f\xbb\xaa\x6b\xa9\xf5\x43\x84\x87\x12\x6f\x30\x63\x5f\x49\xf9\xd1\xd9\x18\x55\x86\x29\x9c\xbb\x30\xd5\x05\xa2\x4c\xf5\x5e\x26\x9b\x34\x25\x67\xb9\x1a\xdc\xd9\x4c\x8e\xf2\xa3\xfd\xe9\xe6\xf1\xa4\x65\x13\x6a\xba\x48\xed\x1b\x57\x31\xce\xe7\xd5\xfe\x4b\x28\x16\xb2\x60\xaf\x47\xc9\x61\x95\xd1\x71\x8b\x2a\x0d\x3b\x65\xc4\xad\xe2\x9d\x2a\x8c\x33\x72\xc9\x5d\x7a\xd7\x1a\x4d\xa5\x65\x99\xee\xf0\xac\x6a\x5b\x73\x24\xcb\x18\x98\x64\xaf\x7b\x62\x34\x33\x6e\xab\x81\xcc\x64\x8d\x4c\x2c\xf2\xe6\x8a\x87\xaa\x94\x29\xb3\x73\x68\x73\x5b\x22\xe8\x8a\x89\x37\xdb\x52\x79\x52\xad\xed\xad\xb0\xda\xb3\xd3\xb5\xa1\x6e\xb4\x67\x5a\x9d\x26\x9e\xe5\x3b\xfd\x1f\xfd\x94\xb3\xfb\x4f\xf1\x96\xc5\x8f\x2b\x79\xfc\xf4\xdf\x86\x7e\x95\xfc\xef\x63\xbf\xa7\x62\xc7\x5a\xf7\xcd\xc8\x32\xba\x64\xca\x9e\x29\xcd\x63\x2a\x2a\x73\xb4\xcc\x5b\x2e\x47\xc7\x56\x1d\x3c\x6c\xb9\x66\xa8\xc8\x69\xcc\x4c\xcd\x3a\x28\x9a\xbb\x83\xad\xa5\x14\x65\x2f\xec\x15\x97\x57\x12\xa7\x53\x64\x5c\x3d\x29\x5f\xea\xf6\xc1\x5f\x73\x1e\x9a\x83\x3d\x19\x3e\xaf\x13\x6c\x3e\xd6\xbb\x95\x39\x3b\xe1\x52\xe8\xd8\xd4\xda\x8f\x0c\x5b\xad\x0b\x69\x17\xd7\x4d\x4e\xed\xcb\xbe\xea\xd4\x4c\xc6\xd8\x2b\x01\x1b\xd2\xd5\x80\xff\xf8\xb1\xd2\xaf\xb6\xf9\xb3\x23\x78\x5e\xa0\xce\xbb\xcb\x50\xdf\xe8\xb7\x91\x8b\x77\xdb\x3e\xbb\xc5\xd6\x64\x97\xe1\xd8\xbb\x1f\x9b\x8d\x2c\xe1\x5a\xaa\x1f\x3f\x4c\x72\xe5\x4c\xa1\x35\x3f\xb2\xcb\x8d\xa2\x37\x31\x55\x6d\xa3\xdb\x21\x06\x50\xe5\x4e\xf7\x2f\xc9\xad\x6a\xde\x45\xed\x5e\x90\x07\xc0\x78\xf6\xfe\x1b\x77\x1f\xcc\x4c\x0f\xdf\x78\xc2\xe0\xc0\x56\xa8\xc8\x59\xcc\xd7\x3c\x86\x9c\x2a\x5d\x00\xcf\x0a\xf3\x24\x61\xc5\xa3\x96\x39\xd0\x3c\xb7\x43\x45\xb9\x46\x66\xdd\xbe\xf1\x9f\xfd\xd9\xe9\xd2\x4e\x57\xdc\x6f\xe0\xd2\xf3\xea\x0e\x00\xdd\xf9\xe4\x0c\xb1\x3d\xc9\xb5\xff\x84\xe2\xf4\x77\x16\x17\xa9\xc9\x4c\x3c\xbd\xad\xe9\xd2\x6e\x97\xd3\xe0\xdc\xf8\x20\x13\xf6\x9d\x9b\x89\x0b\x5c\x84\xa0\xd0\x4f\x82\xb9\x49\xac\xf5\x70\xc0\x51\xcd\x53\x54\xc4\x4a\x0a\x93\xaa\xc8\x5c\xd8\xac\x1b\x9a\x62\x51\x8e\x0f\x64\x3a\xbd\x81\xe6\x0b\xfb\xc1\xf5\x19\x0c\x4f\x73\xc1\x1c\x18\xda\x4a\xc5\x4f\xc6\xbd\x02\x12\xbe\xbf\xb9\xbc\xb1\xaa\xc5\x66\x1b\x3c\xc3\x40\x3e\x75\xc8\x54\x27\xf6\x7d\xba\xdf\xa3\x77\x58\x67\x5d\x3a\xa3\xe5\x2f\x75\xc6\x33\xd4\x7d\x79\x09\xd5\xa8\x57\x47\xc7\x9c\xdd\xf7\x7b\xb5\x0b\xd6\x8b\x30\xbc\xcb\xf4\x7a\xc4\x84\xb2\x90\x54\x39\xfc\x16\x93\x5e\xd8\x1a\x9c\xce\x19\x70\x59\xfa\x37\x49\xcd\x60\x00\x3c\x4b\x78\x4c\x4d\x96\x7e\xb9\xf5\x7e\x13\x4e\x8a\x8a\x7c\xa0\x98\x9c\x57\xa6\xb0\x3b\x39\x96\xcb\xa1\xa6\x36\x99\x2c\xbd\xa6\x5f\x05\xd8\x34\xce\xb2\x67\x55\x7f\x5a\xa6\x19\x4f\xcb\xcb\x75\xf1\x88\x94\xd4\x54\xb3\x5c\xd0\x8c\x41\xe0\x13\x53\x85\xd6\x3c\xe3\x9a\x01\xa3\x05\x43\x3c\x33\xb5\x73\xe9\x8d\x7e\xea\xad\x17\xcf\xfb\xff\x4a\xed\x23\x7b\x5a\x2b\x9a\xb2\xa2\xff\xfe\xb3\x37\xc2\x57\xf0\x0c\xd5\xc6\x56\x4f\xc9\x99\x32\x35\xd2\x38\xe3\x73\x60\x86\x80\x6b\x78\xf1\x46\xd3\x0f\x6c\x77\x8a\xfe\xfd\x39\x98\xe3\x84\x6d\xec\xeb\x26\x3a\x3f\xfd\x7e\x29\xf8\xb3\x05\x68\x8c\x7c\xd3\x38\x6f\x34\x7a\x8f\xa2\x3f\x3f\x3b\xd4\x4a\xad\x5d\x2d\xbd\xd1\xe8\x23\x6c\x07\x41\xc0\x1b\xbd\xc0\xf4\x63\x5c\x50\x30\xc7\x7e\xf0\x2b\x08\x5d\x42\xb2\xac\xca\x80\x7c\x88\x56\x07\x0a\x05\xb3\x3b\xff\xee\xe7\x99\x5d\x06\x33\xd1\xfd\x5f\x00\x00\x00\xff\xff\x4d\x2f\x6a\xe2\x3b\x1a\x00\x00")

func styles_css() ([]byte, error) {
	return bindata_read(
		_styles_css,
		"styles.css",
	)
}

var _vendor_codemirror_codemirror_css = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x59\x7b\x6f\xdb\x38\x12\xff\xdf\x9f\x62\x0e\xc1\xa1\x6d\x60\x25\x72\x1e\x4d\xe3\x00\x87\xed\xb5\xdd\xed\x02\xb7\xb7\x45\x9b\x2e\x70\x7f\x52\xe2\xc8\x22\x4c\x91\x2a\x49\xf9\xd1\x20\xdf\xfd\xc0\x87\x64\x49\xa6\xd2\x14\x58\x04\x28\x6a\x72\x34\x33\x9c\x17\x7f\x33\x3c\x3f\x85\x7f\xbf\xfd\xf2\xfb\xbb\x2f\x70\x7a\x3e\x9b\x9d\xbd\x93\x14\xff\x60\x4a\x49\x05\x0f\x33\x80\xf3\x53\xf8\x82\x06\x4a\x64\xab\xd2\xcc\x61\xcb\xa8\x29\xe7\x90\x49\x45\x51\xe9\x39\x10\x41\x61\xc5\x65\x46\x38\x14\x52\x18\xa8\x95\xac\x51\x19\x86\x1a\x4a\x54\x68\x59\x82\xdb\x49\x0a\x52\x31\xbe\x5f\x42\x25\x85\xd4\x35\xc9\xf1\x6e\x06\x81\xed\x12\x2e\xd3\xb4\xde\xd9\x85\x5c\x72\xa9\x96\x90\x71\x92\xaf\xed\x6f\xca\x14\xe6\x86\x49\xb1\x04\x6e\xd4\xdd\xec\x71\x36\x3b\x3f\x85\x4f\x6f\xdf\xbf\xff\xfd\xbf\xbf\x8d\x15\x4e\x38\x13\xa8\x9d\xda\x35\xa1\x94\x89\xd5\x12\xae\xea\x1d\xa4\x77\xf6\x18\x7f\x59\xbd\x72\xc2\xdb\x3d\x20\x4a\x36\x82\x42\x2e\x85\x41\x61\x2c\xb3\xc7\xc1\xf1\x6b\x85\x43\x5e\xa9\xe5\xe6\x78\x7d\x94\x8a\x7d\x97\xc2\xf4\xb8\xc9\x62\xc8\x69\xa0\x98\xce\x95\xe4\x3c\x23\x2a\x29\x18\xe7\xa8\xe6\xd0\xdf\x5d\x35\xc6\x60\xbb\xe5\x44\x66\x24\x5f\xaf\x9c\x7a\x49\xb0\xc8\xb6\x64\x06\x9d\xec\xfb\x12\x81\x33\x63\x38\x82\xfe\xd6\x10\x85\x90\xa1\xd9\x22\x0a\xf8\xe8\xdc\xf1\x17\x74\xd2\x74\x50\xe5\xfc\x14\x7e\xfb\x7a\x7f\xff\xe1\xf3\x91\xc5\xbc\x68\x6f\x33\xef\xd4\x44\x79\x97\x2c\xea\x1d\x68\xc9\x19\x85\x13\x4a\xe9\x5d\x54\xa9\x93\xe2\xc6\xfe\xd9\x4d\xa7\x5f\xe2\x1c\xbb\x04\x21\xb7\x8a\xd4\x77\x43\x7b\x3a\xef\x88\xa6\xca\x9c\xbc\xa9\xad\xb1\xc5\x2f\xad\xff\xe0\xda\x47\x47\xc5\x44\xe2\x22\x70\x09\x17\x21\x60\x0c\xee\x4c\x42\x38\x5b\x89\x25\x38\xcd\x7b\x51\x74\x72\x7b\x7b\xfb\x84\x6e\x11\x43\x54\x44\xad\xad\x0e\xc3\x38\x84\xc7\x49\xd2\x44\x37\x99\xf5\xc4\xc3\x40\x26\x78\x9b\xbf\xfb\xfa\xf9\xcb\x9f\xc7\x36\xcf\x1b\xa5\x43\x76\x05\x93\x73\x2c\x06\x16\xef\xc2\x7f\xe8\x12\x21\x85\xcb\x9a\x60\x82\xd4\x1e\xc2\xe6\x67\x29\xb7\x02\xb6\x25\x0a\xa8\xe4\xc6\xc6\x22\x13\x90\xb1\xa4\xcb\x1d\xc2\x9d\x99\xac\x22\xfd\xf8\xa6\x6c\x33\x88\x51\xcc\xa5\xa0\x44\xed\x7f\xac\x9f\x66\x7c\x83\x2e\x1b\xcf\xf2\x2a\x29\x88\x69\xcf\x34\x71\xcc\xa0\x30\x69\x8c\x3c\x9c\xca\x7a\xf7\x1f\xac\xaa\xa5\x32\x44\x98\x61\x80\x2d\xe1\xe4\x06\x6f\x22\x02\x46\x3a\xfb\x55\x1f\xbe\xdf\x13\x26\x28\xee\x96\xb0\xf0\xce\xcd\xab\x84\x08\x56\x11\x83\x7d\x06\x4f\xa9\x63\x7f\x24\x5b\xcc\xd6\xcc\x84\x4f\x5d\xe1\xc9\x38\x13\x6b\x58\x9c\xa5\xaf\x35\x68\x83\xb5\x7e\xb9\x78\x05\x4c\x14\x4c\xd8\x94\xb4\xdf\x54\xf2\xfb\x4f\x7d\xf0\x33\xb4\x91\xac\x0b\xa6\xf9\xc5\xc9\x5d\xe3\xbe\x50\xa4\x42\x1d\x58\xd9\x03\xa6\xff\xb4\x09\x06\x70\x6d\xff\x13\xe1\x60\x14\x11\xba\x26\x0a\x85\xb1\xb1\x0a\xb0\x48\xfd\x27\x96\x69\x30\xc0\xdf\xcd\xf7\x6f\xe6\xe7\xf2\x8b\x08\xd0\x66\xcf\x11\xba\xe8\x28\x0a\xb4\xd4\x36\x03\xe4\x06\xd5\x56\x31\x83\xf0\x52\x48\x91\x30\xa1\x51\x99\x57\x50\x49\x8a\xa3\x4c\x48\x0e\xa4\xb1\x00\x0e\xc1\x64\x48\x06\x0f\x40\x99\xae\x39\xd9\x2f\x81\x09\x5b\xb4\x92\x8c\x4b\x5b\x21\x5c\x19\xa2\x98\x4b\x15\xfc\xca\x44\x89\x8a\x39\xb5\x07\xa2\x54\xc3\xdb\x7a\x5b\x4b\xcd\x3c\x31\xc9\xb4\xe4\x8d\xf7\xb7\xcf\xb5\xf4\x0e\x42\xd2\xa7\x77\x60\x64\xbd\x84\xe4\xda\x56\x3c\xc8\xa4\x31\xb2\x5a\x42\xd2\x16\x40\xab\x7b\xc1\xe5\x76\x09\x25\xa3\x14\xc5\xb8\xea\x3a\x81\x4f\x25\xf3\x49\x9e\xe7\xae\x92\x5a\x29\xe9\x41\x82\x4b\x87\x98\x8e\xde\xf8\xef\x3f\xfc\xfa\xf6\xeb\x7f\xee\xe1\xfe\xe3\x87\x3f\x3e\xf8\x1a\x97\x57\x89\x4e\x28\x16\xa4\xe1\x06\xec\xaf\x12\x09\xb5\xc2\xbb\x6a\xda\xe0\xdd\x63\x84\xee\x5b\x23\x0d\x76\x64\x27\xe9\x6d\x1a\xc8\x04\xae\x88\x61\x9b\xde\x1e\xbd\xba\x0a\x7b\x5e\xb5\xfe\xde\xc5\xed\x45\xd8\xf3\x82\xe7\x8e\xb9\x36\x4a\x8a\x15\x3c\x38\x14\xb2\x0d\x80\x23\x93\x9c\x06\x5a\xac\xc2\x9e\x0b\xa5\x25\x30\x43\x38\xcb\xc3\xa6\x0f\xd5\x23\xef\x36\x82\xa2\xb2\xfe\x6f\x8f\x63\x14\x5b\xa3\x29\x95\x6c\x56\x65\x84\xde\x85\x4a\xd8\xbe\x7b\x8c\x99\x6a\x8d\xfb\xad\x54\xf4\x70\x98\x9b\xf4\x4d\xd4\x56\xc4\xc8\xaa\x77\xe4\xc5\x6d\x94\xaa\xbd\x4c\x5b\xba\xc5\xeb\xab\x28\x1d\xc5\xa2\x67\xf7\xb4\x88\x12\x6d\x88\x62\x24\xe3\x38\x8f\xec\xd5\x8d\xc8\x4d\xe3\x8e\x19\xdd\xf6\x78\x70\x1f\xdb\xb3\x3b\xc4\xf8\x0c\x9b\x16\x9a\x5c\xf4\x14\xbc\x26\x4f\x2a\x98\x5c\x06\x97\x0f\x76\xcd\xbe\xee\x07\xd7\x9b\xeb\x28\x8f\x5c\x56\x95\xad\x1c\x1d\x21\xb9\x4e\xa3\x84\xd6\xd7\x36\x9e\x3a\xba\xc5\xe2\x09\xba\xbe\xfa\xc5\x04\xc7\x0a\x0d\x39\x50\x5d\x5f\xc7\x15\xfc\xd6\x10\xce\x0a\xd6\xf7\xea\x14\x69\xd6\x30\x6e\x98\x38\x10\x5e\xa6\x71\xc3\x65\x8a\xe4\x6b\xec\x1d\xfa\xf6\xf6\x26\x4a\x68\x48\xef\xc4\x8b\x9b\xf8\x39\x88\x31\x8a\x65\xcd\x20\x95\xd3\x3c\x4a\x5a\xaa\xbe\xcc\x78\x0c\xfb\xdc\x1b\x72\x8a\x90\xa1\xef\x55\x3a\x23\xa7\xad\x72\x4c\x6c\x08\x67\x34\x2f\xc9\xd1\xf6\x10\x8f\xc9\xca\xd6\x12\xeb\xd3\xb6\x46\xb6\x35\xf0\xa2\xad\x92\x2d\xa4\x7b\x1f\x04\xbb\x5a\xa1\xa1\x90\x0a\x6c\xe0\x48\x01\x84\x52\x29\x1c\xe0\x9e\x0d\x41\x0a\xe8\x9a\x88\xbe\xbc\x8a\x98\xbc\x64\x62\x75\x64\xfc\xb4\xb0\xba\xfd\xe0\x6b\x21\xc5\x24\x83\xe2\xc2\x15\xc0\x88\x2c\xe7\xbf\x01\xc0\x52\xab\x8c\xbc\xbc\xb8\xbe\x9e\xc3\xe2\x3a\x9d\x43\x3a\x87\xb3\xcb\x57\x63\xa8\x4b\x72\x5b\x61\xfd\x45\xd7\x7d\x0b\x0f\x03\xa0\x86\x6f\x8a\x8b\xc2\x16\x0e\x87\x45\xef\xff\xfc\xe4\x6c\x10\x1a\x15\x85\xda\xd8\xd6\xc8\x94\x4c\x43\xc1\xec\x55\x6d\xdb\x26\x26\x74\x6b\x42\x85\x9c\x18\xa4\x60\x24\x98\x12\xa1\xc2\xbc\x24\x82\xe5\x1a\x64\x31\x03\x70\x6b\x48\x99\x91\xea\x0c\xfe\x27\x1b\xdb\x60\x66\x24\xe3\x7b\xd0\xa5\x6c\x38\x15\x2f\x0c\x18\xd9\xe4\xa5\x25\xac\xce\xa2\x2d\xec\xe1\x0e\x73\xb2\xd8\x06\xe3\xf7\xe6\x10\x80\xfa\x86\x2b\xde\xc8\x39\xb6\x07\x06\x61\xb1\x07\x66\x7d\x9f\xc6\xc4\x4a\xc3\x96\x71\x0e\x99\x42\xb2\x06\x16\xec\xc0\xb4\xfb\x58\x39\xb9\xbe\x45\x3e\x3f\x85\xcb\xb4\xde\xd9\x2d\x67\x05\xb2\x62\x39\x54\x44\xad\x98\x80\x46\x7b\xf3\x94\x8c\xa2\xb7\x07\x47\x5b\xaa\x5e\x58\xe3\x11\x3e\x6a\xf7\x42\xcb\x8e\x47\x07\xb4\x98\xa8\x6f\x1a\x47\xeb\x45\x74\xf1\x9e\x5c\x3a\x90\x11\x56\x03\x02\xf1\x8b\x87\xb6\xac\xa3\x6e\xd7\xdb\x2e\xde\xa2\x33\x67\xda\xc6\xd8\x90\x09\x0d\x8b\xd5\xe7\x93\xc2\x8d\x2d\xae\x54\x91\xd5\xca\x66\x5a\xa1\x64\x05\x25\x5b\x95\xdc\x7e\x6a\x57\x7a\x07\xf3\xaa\xc5\xdc\x36\x8c\x4e\xcd\xbe\xe3\x53\x2e\x1e\x76\x4f\xce\xbe\x1e\xf2\xf4\x71\x65\x80\x33\x36\x58\x0b\xb2\xc6\x39\x6c\x98\x66\x99\x6d\xae\x3b\xb3\x9e\xc1\xd7\xe0\x82\x42\xaa\xdc\x06\x35\x55\x64\x0b\xb4\x71\x17\x81\xa7\x63\x62\x65\xc3\x35\xc3\x42\x2a\x04\x62\xef\x44\x7e\xd8\x82\x92\xd4\x35\x0a\x3d\x07\x53\x36\x1a\x6a\x6f\x0e\xf7\x75\x49\xd6\x6e\x18\x21\xa8\xfd\xbe\xe0\x2c\x5f\xa3\xf2\xe3\x09\xc3\x0a\x92\x1b\x7d\x36\x86\xab\x9b\x4e\xb5\xe1\x1c\xa1\x9c\x58\xff\xd9\xe9\x43\x1c\x98\x76\xfd\xd5\x6b\x3f\x98\x09\x38\xd8\x37\xa5\x8f\x13\x0a\x3a\x7e\x23\x24\x9b\xf6\xd3\x2f\xd9\xf5\x13\xb0\x5b\xdd\xb7\x59\x35\x66\x5d\x0e\x59\x1f\xc0\x6a\x07\x9c\x47\x6c\x22\xcc\x77\x53\xcc\xc7\x86\x1a\x69\xdf\x43\xc6\xb1\x89\x40\xff\xa3\x0e\xc5\x0f\xbe\x99\x1c\xbd\x44\x2c\x7e\x60\x71\x30\x5a\xc5\x44\x32\x4e\xb6\xce\x2d\x97\x71\xad\x7c\xc7\x3b\x9c\x80\xa8\x8a\xf0\x58\xe2\xc6\x9b\x9b\x19\xc0\x26\xcc\xce\xda\x49\x8b\x91\xf5\xdd\x54\xf5\x88\xdb\x66\xab\x6c\x06\x3c\x2b\xbe\xae\xc6\xa5\xd8\x86\xd8\x78\x54\x10\x7a\xf6\xa3\xad\xa8\xf0\xfe\xdd\x35\x29\x3f\xda\xff\xf4\x95\x8a\xb2\x46\x6e\x9e\xe0\xe9\x5b\xc8\x25\x04\xbc\xf2\x2c\x8e\xad\xa5\x96\x4b\x8d\xdc\x0f\x70\x7e\xd4\x1c\x47\x07\x54\x3d\x46\x6e\x50\xf0\x33\xdc\x26\xa6\xaa\xed\x71\x6c\x7f\x73\x14\x8f\x61\x34\x1a\x6a\x9b\x86\x5c\x72\x4e\x6a\x87\xab\x42\x55\x2c\x98\xd2\xee\x0e\xd8\x4e\x0f\x5b\xcf\x4f\xe1\x33\x6a\x34\xa0\x65\x85\x2d\x46\x30\x25\x31\xee\x82\x38\xc0\x09\x84\x9a\xac\x10\x2a\x2b\x1c\x4a\xb2\x41\xb0\x1f\xb9\x8b\xc3\x9d\xb6\xad\xfd\x84\xb2\x46\x3b\xbf\xb6\x83\x8d\xe3\x9d\xa3\x95\xc3\xdd\x71\x18\xb5\x0d\x43\x72\x70\x83\x8c\x26\xdc\x6d\xeb\xdf\xae\xdb\x6b\x6a\xb0\xea\xd3\x26\x70\x1d\xa4\x66\xad\xfc\x80\x4f\x2a\xea\xdc\xd7\x4f\x56\x97\x91\xad\xb5\x7b\xdc\x82\x03\x7b\x2b\x5d\x88\x5d\xdc\x3d\x03\xfe\x84\xfb\xae\x3f\xfc\x32\xa4\x4e\xba\xcb\x39\x36\x8c\xe9\xd1\xba\x23\xba\x06\x4c\x98\x84\xb3\x15\x31\x8d\x42\xbd\xf4\xc3\xf0\x9d\xbd\x06\x3b\x43\xfc\x80\x6a\x18\xc4\xf6\xf8\x5d\x54\xf4\x0c\xe2\xa0\x54\x62\x17\x62\xd6\x4b\xfc\x70\x37\x7c\xe1\x68\x0f\x36\x8c\xc4\xf5\xb3\x2a\xc3\xd4\x48\x66\xb2\x58\x1c\x17\x7b\x2b\x6b\xcb\xe8\x0a\xc7\xd5\xa2\xef\x93\xa1\xdf\x0e\x1e\xf2\x83\xca\x11\xc7\x96\xdb\x78\xbe\x64\xb8\xb7\x5a\xff\xe9\x44\x19\x7e\x34\x88\xca\x25\xf5\xb6\x1d\xa2\xb5\x00\x87\x7e\x75\x40\x27\x3c\x68\x24\x99\xdc\x81\x66\xdf\x1d\x70\x93\xaa\x0f\xd5\x34\x6c\xdd\x3b\xcf\x16\x01\x77\x35\xe6\x06\xd8\x78\xce\x1c\x6e\xd5\xf9\x31\x74\x9b\x47\xaa\x56\x6c\x4d\xcf\x9f\x7a\x2c\x08\xe9\xbe\x4b\xbc\x86\xcb\xbe\xd6\x3e\x93\x27\xb6\x46\x06\xa9\x90\xe8\xa6\x7d\xf2\x89\xc6\x41\x28\x06\xed\x6d\xd9\xe6\x62\x3a\xd5\x4e\xb8\xcc\x62\x9c\x99\x7d\x7f\x38\x37\xf5\x16\x10\x97\x59\x4b\x26\xdc\x3d\xe3\x8a\x6a\x1c\x6e\xb5\x9a\x7b\xbf\x1f\xf8\x68\x43\x0c\xcb\x9d\xe7\x9f\x98\x9b\xc7\xb4\xfc\x61\x84\x3a\xb0\x31\x62\x6a\xc1\xfd\x14\xe3\xae\xc8\x8c\xce\x5f\xc8\xdc\xb5\x37\xcf\xd4\x6f\x8a\x8d\xbf\xdb\x90\x8e\x7a\xdc\x13\x7a\x6b\xff\xc6\x5d\x6d\x2b\xf4\x59\x1c\x6e\xe8\x55\x91\x8e\x39\xe4\x4a\x6a\x5d\x12\xe6\x9e\x8a\xc2\xa5\xd8\xad\x8d\x89\x5d\x76\x1d\x2e\xf3\x21\xfa\xb6\x9b\xf0\x2f\xd7\xe5\x3f\x87\xe6\x98\xf4\x79\x0a\x7b\x1d\x86\x38\xe0\x09\x45\x9e\x49\x38\x41\x3f\xad\x92\x1f\xdf\x20\x51\x6e\x28\x31\xf1\xd4\x79\x52\x14\x24\xfe\xf2\x71\x98\x59\xb8\x7f\xd2\x39\x9c\x5d\xbd\x6a\x4b\xd6\xb0\x47\x23\xe1\x06\x77\xf3\x7e\xee\xca\x16\x01\xd1\xce\xfe\xf3\x2a\x71\x64\x01\x0c\xd8\xac\x09\xbd\x6d\x28\xf1\x67\x0e\xce\x3c\xce\x66\xbf\x54\x48\x19\x81\x5a\x31\x61\x5a\x80\xf2\xb1\x6d\xc4\x43\xf6\xba\xa7\x37\x47\x61\x0f\xe5\x30\xc8\x13\xef\x6c\xfd\xd8\x9e\xca\xbe\xf6\x85\xc3\xf6\xf1\x4c\xeb\x06\xe1\xe4\xe2\x36\x5d\xb4\xba\x1b\x92\xb9\x8b\x2e\x29\x49\xbe\x5e\x92\xc2\x84\x37\x4b\x57\xdc\x96\xf0\xe2\x45\x3b\xae\xfa\x88\xbc\x86\x46\xdb\x36\xa3\xd1\x68\x81\xc7\xfa\xe0\x25\x23\x41\x93\x02\xf9\x3e\x3c\xa2\xb8\x37\xc2\xde\x85\x78\x7a\x3e\x1b\x0f\x9f\xda\x2c\x71\xa4\x0f\x47\x20\xdd\x8a\xfd\x7f\x00\x00\x00\xff\xff\xb6\x6e\xef\x8a\x4f\x20\x00\x00")

func vendor_codemirror_codemirror_css() ([]byte, error) {
	return bindata_read(
		_vendor_codemirror_codemirror_css,
		"vendor/codemirror/codemirror.css",
	)
}

var _vendor_codemirror_codemirror_js = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\xbd\xe9\x76\x1b\x39\x92\x30\xfa\x5f\x4f\x01\x73\xaa\xec\x64\x8b\xa4\x48\x79\x91\x2d\x99\xd6\x51\xb9\x54\x5d\xfe\xc6\xdb\xb5\x5c\x5d\x33\xd7\x52\x57\x83\x99\x20\x99\x56\x32\x93\x9d\x00\xb5\x94\xa5\x77\xbf\x27\x16\x6c\xc9\xa4\x6c\x77\xcf\x7c\xd7\xe7\x98\x22\xb1\x04\x02\x40\x20\x10\x08\x44\x04\x76\x76\xc4\xcb\x2a\x53\x6f\xf2\xba\xae\xea\x9e\x48\xab\xe5\x75\x9d\xcf\xe6\x46\x24\x69\x57\x4c\xae\xc5\x1b\x59\xe7\x9f\x4b\xf1\xab\xbc\x50\xf5\x44\x9d\x2b\x21\xcb\x4c\x54\x66\xae\x6a\xbd\xb5\xb3\x23\x7e\xce\xb5\xa9\xf3\xc9\xca\xa8\x4c\xac\xca\x4c\xd5\x42\x96\xe2\xcd\xab\x8f\xa2\xc8\x53\x55\x6a\xb5\x2f\xe6\xc6\x2c\xf7\x77\x76\xd2\x2a\x53\x0b\x6c\x64\x50\x2a\xb3\xf3\xfa\xd5\xcb\xe3\xb7\x27\xc7\x5b\x00\xe3\xe3\x3c\xd7\x22\xd7\x01\x1e\x22\x69\xad\xd5\xed\x09\x29\x20\x49\xa8\x2c\x37\x55\x0d\x95\xf3\xc5\xb2\x50\x0b\x55\x02\x02\x79\x29\xfe\x8f\xbc\x90\x27\x69\x9d\x2f\x8d\xa8\x4a\x61\xaa\xa5\xa8\xa6\xc2\xcc\x95\x98\xd4\xd5\xa5\x56\xf5\x03\x2d\x7e\x7e\xf7\x66\xb0\xb5\xb3\x03\x95\xff\xbb\x5a\x89\x54\x96\x62\x9a\x97\x99\xd0\xd5\x42\x09\xa3\xd2\x79\x99\xa7\xb2\x10\x13\x99\x9e\xcf\xea\x6a\x55\x66\x62\x5a\xd5\x94\xcb\xb0\x10\x85\x89\x2a\xaa\x4b\x00\x22\x8d\xed\xe3\x02\xc7\x6a\x6e\x87\x6a\x50\x16\x3b\x93\xa2\x9a\xed\xfc\x47\xba\xe8\xe7\xa5\x51\x75\x29\x0b\x2d\x06\x5b\x5b\xc9\x74\x55\xa6\x26\xaf\x4a\x91\xcc\x8a\x6a\x22\x8b\x9e\x98\xca\xd4\x54\xf5\x75\x57\x7c\xd9\x12\xc2\x5c\x2f\x55\x35\x15\xea\x6a\x59\xd5\x46\x8b\xf1\x78\x2c\x1e\x54\x93\xcf\x2a\x35\x0f\xc4\xfd\xfb\x36\x7b\x51\x65\xab\x42\x89\x7b\x90\x0b\x63\x3f\xcd\x4b\x95\x3d\x10\x87\x9c\x31\x70\xd5\x2d\xf0\xa4\x2b\xf6\x3d\x74\xaa\x40\xc0\x2d\x3e\x08\x9e\x32\x06\x72\x91\x89\x43\xfe\x91\x38\xf4\x00\x00\x23\x3d\x08\x26\x2c\x68\xa3\x7b\xb0\x75\x9b\x98\x79\xae\x7b\x22\xe8\x67\x57\x7c\x11\x0f\x56\x5a\x09\xa0\x97\xd4\x3c\x38\xc0\xa9\xff\xcf\x62\x95\xcd\x94\xc6\x11\x9e\xac\x66\x1a\xa9\x6b\xa2\xe6\xf2\x22\xaf\x6a\x91\xe5\xd3\xa9\xaa\x55\x99\x2a\x2d\xcc\x5c\x1a\x98\xab\x07\x46\x4c\x94\x98\x2a\x69\x56\xb5\x02\x10\x99\x32\x2a\x85\xd9\x97\xb5\x12\xaa\x94\x93\x42\x65\x62\x22\xb5\xca\x80\x02\x56\x5a\xd5\x47\x33\x55\x1a\xa1\x4c\x2a\x74\x99\x4f\xa7\x79\x39\x1b\x6c\x5d\xc8\x3a\xc8\x1b\x8b\x52\x5e\xe4\x33\x69\xaa\x7a\xe0\x52\xb1\xcc\xb2\x90\x66\x5a\xd5\x8b\xa8\x88\x4d\xdc\xc2\x22\x33\x95\x9e\x57\x62\x2c\x76\xf0\xcb\xe9\xce\x69\xb6\x93\x0f\x8c\xd2\x26\x71\xa0\xba\x58\x30\x57\x7f\xac\x96\xa6\x1a\x0d\xa1\xf0\x9b\x93\x57\xc7\xe2\x34\xdb\xd9\x54\x72\x34\x5a\x2d\xa1\xdc\xc7\x3a\xcf\x54\x69\x4e\x77\x92\xc3\xfd\x4f\x7b\xfd\x67\x67\x37\xa7\xd9\x97\xdd\xde\x6d\xf7\x74\x30\xf8\x4b\x7d\xb1\x9f\x9c\x66\xdb\xdd\x9d\x81\xba\x52\x69\x13\x8a\xca\x66\x0a\x40\x1c\x67\x33\x75\xba\x73\x47\xc1\x1c\x8a\x79\xec\x6e\x6e\x1c\x02\x37\x37\x08\xc5\x22\x75\xa1\x6a\x0d\xb3\x09\xa5\x81\x52\x12\x5f\xe9\x50\x64\x55\xba\x82\x85\x38\xb0\x5f\xde\xc0\x32\xb9\xb9\x11\x4f\xc4\xbe\xd8\x4e\x10\x1b\x0f\xba\xfb\x69\x74\x46\xad\x5f\xaa\xc9\x79\x0e\x73\x70\x0f\x8b\xdc\xbf\x2f\x76\x7e\x57\x93\xff\xcc\xcd\xe9\x4e\xfb\xe8\xfc\xd3\xb8\x2a\xfc\x05\xea\xfc\x3f\x06\x86\x7e\xfb\x74\x70\x9a\x6d\xb7\xd7\x4b\xe7\x35\x2c\xe2\xb0\xa1\x97\x98\xb4\xa9\xa1\x65\xad\xb4\xc1\xa9\x7d\xb7\x54\xb5\xdc\x54\x4c\xcb\xa9\xac\x73\x28\x76\xb4\x5c\x16\x4a\xbc\xac\x16\xcb\x95\x51\x35\x97\xf6\x74\x73\xa1\xca\xac\xaa\xa9\xd2\x42\xa6\x7f\xcc\xd4\x9b\x6a\x55\x1a\x99\x97\xaf\x69\x54\x77\xde\xc8\x54\xbc\x3b\x11\xff\x25\x46\xa7\xd9\xe9\xcf\xc9\xa7\xa7\x34\xe1\xa7\x59\xf7\xf4\xe7\x0d\x38\xce\x65\x69\x2a\xa0\xcf\x9d\xf7\xf4\xf5\xff\x9c\xac\x97\xa4\x09\xac\x74\xd4\x79\xc4\x96\x86\x7a\xad\x06\x16\x78\x53\x4d\xf2\x42\x9d\xee\x9c\x5e\x6e\x18\x51\x59\x66\x75\x95\x67\xd8\x75\xfa\xba\x5e\x2e\x60\xf0\x97\x95\x9a\xae\x8a\xe2\x5a\xe4\x65\x5a\x01\xdf\x36\x6a\x20\x4e\x56\xb3\x99\xd2\xc0\x24\x88\x0d\xc8\x02\x19\xa5\xc9\x2f\x94\x58\x28\x33\xaf\x32\x2d\x2e\x55\x91\x56\x0b\x45\xcb\x76\x81\x58\x01\x0d\x56\x1a\x08\xca\x22\x71\x73\x23\x76\x2e\xd5\xe4\xdd\xc9\xcd\x4f\x85\x4c\xcf\x7f\x52\x75\x7d\x7d\x83\x13\x27\xde\xe4\x65\x6e\xbf\x56\x93\xfc\xe6\xd5\x31\x75\x6d\xc3\x42\x5d\xc8\xd4\x83\x87\x39\xe1\x5e\xd9\x75\x1f\x92\xd3\xbb\x13\xe8\xfd\xe9\xe4\x65\xfd\xee\xe4\x74\xd2\x3e\x4c\x97\x79\x99\x55\x97\x30\xf8\x3b\x97\x79\x69\x1b\xf5\xd0\x02\x62\x0b\x96\x18\x53\xdf\xfd\xfb\x9e\x51\x0d\x16\xd2\xa4\xf3\x64\xe7\x6f\x54\x08\x17\xf5\x5f\x80\xe2\xff\xd2\xdd\xe9\x6e\xe5\x53\x91\xc4\x50\x80\xe9\xae\xc1\x7d\xbb\x5a\x4c\x54\xdd\x28\x09\xab\x51\xdc\xb6\x80\x80\xf6\x1b\x29\x2f\xc6\x62\xf4\xd8\x83\x46\xde\x5f\x68\x75\xe0\x57\xb2\xa9\x57\x4a\xdc\xc2\xd4\x9f\xc0\x8a\xe3\xbd\x57\x43\x47\x70\x03\xbd\xac\xab\x72\x26\xd4\x05\xf0\xde\x65\x5d\x2d\x55\x6d\x72\xe0\xf1\x95\xd0\xf9\xac\x94\x85\x48\x17\xd9\x4e\x6a\xea\x02\x58\x38\xac\x07\x1c\xa1\x69\x91\x2f\x5f\x9a\xba\x78\xb9\x00\x8a\x83\x49\x02\x16\xe4\xb8\xc1\xcd\x4d\x30\x64\xcd\x5e\x8c\xc7\xa2\x5c\x15\x85\x2f\xe4\x72\x9e\x8b\xd1\xee\x60\x34\xea\xf2\xa4\xca\x25\x6c\x2c\x1f\x40\x04\x7a\x59\xe4\xe9\xb9\x18\x33\x83\xbf\xb9\x01\x76\x07\xb0\x03\x46\xf8\x62\x2c\x9e\x75\xb7\xb6\xdc\x36\x97\x16\x52\xeb\x8f\x30\xbb\x69\xa1\x61\x88\x6a\x65\x56\x75\x29\x4a\x75\x29\x3e\xa8\xd9\xf1\xd5\x32\xe9\x24\x7f\xbf\x39\x3d\xd5\xdd\x8e\xd8\x16\x69\xa1\xc5\xb6\xe8\x24\x87\xfb\x3f\x60\xda\xe9\xa9\xfe\x4b\x07\xe6\x01\x71\xa9\x17\x2f\x01\x1c\x8c\x2f\xc3\x4f\xca\x2a\x53\x3d\x41\xb0\xb7\x84\x40\x8c\x57\x75\xcd\x7b\x58\x95\xa9\x01\x62\xf0\x56\x2e\x14\x67\x23\xc5\x88\x71\x03\x33\xda\x06\xb8\x6a\x77\x4b\x08\x98\x78\x2c\x4a\x80\xa9\xae\x9c\x1a\x05\x5b\x3b\x97\x1b\x68\x10\xea\xa8\xd8\x20\x2f\x33\x75\x25\xb6\x09\xfe\xa7\xe1\xd9\xa0\x50\xe5\xcc\xcc\xbb\x58\x39\xc6\x64\x0d\xc2\xb0\x27\x02\x20\x5d\xb1\x2d\x12\x6a\xea\x90\xc1\x8d\xce\xc4\x36\xb7\xbe\x2f\x3a\x1d\x00\x7a\xbb\x75\x1b\x8c\x73\xad\x16\xd5\x85\x7a\x39\xcf\x8b\xac\x56\x65\xa2\x08\x6b\x60\x1f\x09\x8e\x09\xb0\x55\x31\x16\x6a\x90\x42\x91\xb7\x55\xa6\x34\x23\x78\xc0\x99\x2f\xc4\xf0\x40\xf4\xfb\xf8\x83\x90\xfe\x22\xd4\x20\x80\x9b\xa8\xc1\x34\xaf\xb5\xc1\x1f\x30\x27\xc2\x4e\xa6\xba\x03\x95\xa3\x32\x3b\xca\xb2\x64\x29\xa1\xbb\x3d\xc1\x88\x71\xc5\x06\xd6\x54\xa8\x3b\x90\xcb\xa5\x2a\x33\x6e\xb4\x1b\x01\x57\x85\x49\x8c\x9c\x81\x5c\x5e\x1a\x84\xe8\x46\xb5\x27\xb4\xb9\x2e\x94\x27\x04\x18\x67\xb7\x07\xa7\xb5\x92\x46\x1d\x93\x68\x0c\x20\xec\x24\xbb\xfa\x5d\xec\x70\x34\x49\xee\xfb\x2d\x17\xb6\x2d\x08\x35\xc0\xaf\x83\x14\x68\xe8\x0a\x86\x16\x7f\xbb\x82\x2c\x52\x32\x96\xb0\xda\x3a\x20\xe7\x95\xb3\x0e\xd5\x0e\xbb\xd8\xc0\x11\xe0\xc1\x04\x25\x5c\xb9\x4b\x63\xad\x0a\xad\x08\x61\x4e\x16\x5f\xfc\xfc\xc2\x66\x3b\x3c\x10\xb9\x78\x6e\x9b\x74\xb3\xbb\xbd\x9d\xaf\x37\xc9\x85\x3e\xe5\xc0\xe4\x9a\x53\xb9\xb3\x23\x2e\x6b\x28\x5d\x63\x03\xaa\x30\x3d\x71\x39\xcf\xd3\x39\xcf\x97\x46\x96\xa5\x0a\x23\xa6\x75\xb5\xc0\x1f\x32\x4d\x95\xd6\xf9\x24\x2f\x72\x73\x2d\x4c\xad\x54\x34\x65\xef\xbf\x6b\xce\xbe\x61\x8e\x61\x3c\x06\x5a\x99\x23\xc3\x87\xad\xa4\x53\x57\x85\xea\xf4\x44\x07\xb8\x99\x2a\x8d\x84\xb6\x71\xa1\x84\x44\x8a\x5c\x44\x96\x33\x85\x8c\xbd\x31\xf0\x1f\x20\x03\x79\x14\x7c\x59\xe7\x32\xda\xc8\x1a\x48\xb8\xcc\xf0\x03\xe6\xc8\x23\x5e\xaf\x13\x1b\xc2\x4b\x10\x05\xc0\xf5\xb8\xcc\x12\xae\x06\xbc\x93\x60\xaa\x32\x73\x05\x4e\x00\x7e\xd8\x56\x80\x7d\xbd\x05\xd3\x84\x34\xf0\x0d\xf8\x6d\x40\x6b\x52\x65\xd7\x01\x91\x79\xfc\x4c\x7d\x0d\x60\x07\x30\xbb\x1f\x2b\x5e\x24\x50\x04\x21\x0f\x68\x5d\x52\x7f\x81\x56\x52\xdc\x74\x55\xc0\xce\x6b\xa2\xa1\x41\x5a\x15\x85\x5c\x6a\x95\xc0\x86\x47\x1d\x03\x98\xd0\xf5\x4e\x3a\x97\xb5\x4c\x8d\xaa\x3b\x41\xb7\x21\x97\xfa\x1d\xe5\xb7\x77\x3f\xd8\x56\x2a\x94\x12\xb5\xe3\x2b\x29\x31\xa5\x2f\x76\x51\xc3\xcf\x01\x20\xff\xf1\x7a\x09\x47\x3a\xf1\xb0\x2b\x76\x76\x04\x0b\x65\x76\x03\x16\xb2\xb8\x94\xd7\x9a\x5b\xd1\xb4\x6d\x8b\xcb\xb9\x2a\x09\x20\xc8\x68\x52\x18\x75\x65\x00\x14\x33\x45\xca\x19\xd3\xdf\x60\x6c\xdc\xda\xa7\xa4\x81\xc5\xd1\x32\x53\xee\x4a\x23\x37\x49\x3d\x3b\xcd\x2a\xde\x6b\xda\xbb\x30\x1a\x75\xd7\x9a\x9f\x57\xda\x60\xdd\xa0\x12\x94\x65\x56\xea\x9b\x65\x09\x44\x88\x5b\x58\xcb\x85\x72\x65\xd7\xfa\x11\x33\x5c\x99\x82\xe0\x79\x5c\x98\x84\x46\x77\x67\x47\xbc\x3a\xc6\x53\x29\x9c\xa2\xc4\x42\x5e\x0b\x33\xaf\xab\x4b\x21\x4b\xd1\xf9\xad\xd4\x4b\x95\xe6\xd3\x5c\x65\xe2\x18\x8e\xc1\x1d\x1a\x4c\x66\x0f\xe5\xcc\xd3\xa2\x85\x8b\xa4\x36\x70\x80\x9f\x8b\xd1\x50\x5c\xe6\x45\xc1\x50\x83\xea\x2a\x63\xcc\x81\xe1\x2c\xe5\x4c\xc1\xec\x14\x95\xcc\x00\x6e\x55\x8b\xbc\x04\x1c\xf2\x69\x2d\x41\x30\xb6\x00\x5f\x88\x67\x1e\xdb\x8d\x80\xc3\xba\x30\x90\xd1\x92\x81\x76\x56\xa5\xbc\x90\x79\x01\x87\xe9\x01\x2f\xad\xa8\x07\x76\x11\xe1\x4c\x44\x39\xe1\x02\x6c\x56\xb9\x0d\x96\xd2\xdd\x35\x11\x0f\xe0\x1a\xab\xa2\xc0\xcd\x5f\xd8\x69\x8c\xab\xdc\xbf\x1f\xc3\x18\xe8\xb9\xcc\xaa\xcb\x0f\x55\x75\x67\x5e\x8c\x99\xa5\xd8\x26\x36\xdf\x56\x3b\xdc\x4e\xe2\x0e\x47\x74\x95\x65\x28\xcc\x7d\xa7\x04\x07\x44\x7e\xaf\x21\xba\xe1\xe1\xc1\x8a\x6e\x40\xf2\x0d\x69\x6b\x7b\x2c\x6c\xb6\x38\x14\x1d\xd1\x21\x19\x8a\xc5\x4d\x90\xa3\x1c\x56\x9f\xab\xbc\x44\xb4\x94\x4e\x64\x4f\x4c\x3c\x4e\x12\xc4\x4e\x39\xd0\xcb\x22\x37\x49\x47\xe0\xce\xd2\xb6\xfd\x4a\x2f\x57\xe5\xdb\xdb\x76\x24\x01\x6d\xa9\x3f\xe5\x67\x30\x09\x01\xfe\x98\xc6\x3d\x98\x20\xee\x13\x40\x17\x70\xdc\x16\x54\x21\xda\x9e\x27\x76\x13\xd3\xaa\x50\xa9\x79\x55\x2e\x57\xa6\xb9\x11\xb8\x11\xa0\x32\x89\x3d\xc6\xe4\x95\x46\x1e\x48\x27\x3d\x71\x42\x87\x74\xb9\xa4\x95\x5f\x5c\x8b\xb9\x04\x6e\x37\x59\xcd\x60\x71\xd4\x4a\xb8\xfa\xb9\x06\x86\x79\xae\x4a\x20\xfd\x2f\xdf\xd1\x76\x5e\x95\xc8\xdc\x69\x78\xe2\x8c\xe3\x32\xb3\x13\x7c\x21\x8b\x95\xe2\x61\x13\x6e\x9f\x43\x9c\x15\xa2\x7c\xb2\x5a\xc2\xb6\xae\xc5\xe2\x5a\x1b\x55\xe7\xd5\x4a\x8b\x57\xc7\xa3\xa1\x50\xc0\x64\xf4\xb7\x60\x45\x5b\x5c\x63\x5c\x78\xf9\xfd\x01\x25\x6e\x45\xbc\xc5\x4c\xf2\x32\x4b\xa6\x01\x01\xd4\x33\x20\x81\xa3\xba\x96\xd7\x83\x65\x5d\x99\x0a\x64\x3c\x12\xe0\x07\xa9\x2c\x8a\x44\xd6\x33\x5c\xac\xba\x27\x46\xc1\xde\xe5\x50\xe9\x7e\xb1\x29\x20\x8b\x15\xd7\x09\x2c\xe6\x1e\x02\xee\xc6\xd2\x7c\x5a\x2d\xaf\xdf\x4d\x3e\x27\xd5\xe4\x73\x4f\x18\x59\xcf\x94\xe9\x89\xea\x42\xd5\x97\x75\x6e\x94\xdf\xe6\xee\x51\x1e\xf6\x0f\xbf\x89\x31\x76\x24\xa4\x4d\x38\x4e\x02\x7f\xab\x26\x9f\x43\x6a\xac\x26\x9f\x07\x73\xa9\xdf\x5d\x96\xef\xe9\xbc\x79\x9d\x40\x49\xd4\x73\x24\xae\x29\xd4\xa5\xd2\xae\x78\x73\x23\xb8\xb9\xd6\x7a\x5d\x02\x2e\x1c\x2a\x9f\x20\xf9\x4c\x8c\xa1\x61\xfe\x1e\x91\x32\x95\x82\x6e\xa3\xc6\x7d\x55\x1a\xcd\xba\xe4\x62\xb5\x28\x45\x35\x9d\x6a\x65\x90\x31\x0b\x92\x9c\x61\x24\xce\x81\xd7\x1b\x39\xd1\x22\x2f\x4d\x05\xfc\x1b\x2a\x0e\x00\xc4\x6f\xc0\xc7\x17\x95\x06\x4a\x36\x15\x69\xb0\xe1\x38\xc5\xa2\xe0\x20\x1c\xdd\x55\x69\x5e\x62\x33\x89\x05\x8d\x42\x9d\x91\x93\x93\xfc\x4f\x2b\x49\xbd\x82\xb3\x18\x7f\xff\x1b\x50\xa8\x1f\x77\x55\x66\xf6\x00\x6d\x39\x37\x26\x31\xa6\x03\xad\x64\x9d\xce\x93\x9d\x4f\x7f\x3f\xd5\xa7\xab\xe1\x50\x0e\xcf\x76\xba\x6e\x93\xe6\xda\x7d\xdc\xce\xa3\x7a\x76\x09\x30\x87\x8f\xf8\x8b\xc7\x09\xa6\x62\xd8\x13\xa5\x4d\x44\xe4\x30\xf1\xe0\x20\x3c\xad\x96\xea\xca\x7c\x94\x13\x0f\x1e\x4f\x97\xef\xa6\x49\xe7\xd4\x74\x7a\x22\xf7\x18\xd9\x92\xcf\x05\x2a\x3b\xed\xcf\x17\x63\x2b\xa8\x45\x12\x4c\x09\xe7\x53\xc0\xbb\x2f\xf2\x2e\x0b\x1f\x25\xb0\x2d\x5b\xaf\x2f\x72\x9f\xc8\x83\x2a\xfa\x22\x29\xc5\x8f\xf6\x27\xb7\x2d\x7c\xa5\x6d\x31\xb2\xa7\x5a\x40\xfe\x67\x55\xc8\x6b\x95\x85\x4b\xb9\x2b\xbe\x98\x79\xae\x07\xa8\x5f\x83\xb1\xbf\x3d\xd8\xe2\x62\xe1\x82\x54\xe1\xfa\x17\xc9\x42\xf7\x04\x2f\xe3\xb4\x50\xb2\xfe\x98\x2f\x54\xb5\x32\x09\x83\x42\xf1\xd7\x41\xd5\xca\xd8\xfc\x69\x4f\x2c\x74\x77\xeb\xf6\x20\x58\x97\x76\x00\x25\x30\x81\x1e\x1c\x54\x1a\xe7\xec\x70\x23\x40\x46\x11\x9e\xc2\xc2\xbd\x00\x32\x81\xbb\x8f\xc7\x0c\xc5\x0e\x6e\x1e\xaf\x92\xfe\x88\x57\x08\x29\xa9\x44\x35\x15\xcb\xfc\x4a\x15\x1a\x36\x50\x95\xa1\x86\x28\xad\xab\xa2\xc0\x8b\xa6\x4c\xe8\xfc\x4f\x55\x43\xea\x3c\xcf\x14\x67\x4d\x64\x4d\x7b\x06\x17\xfc\xab\x5c\x8a\xb1\x78\x38\x44\xb8\x1f\xb0\x1d\x95\x81\x04\x85\x92\x51\x29\x26\xd7\x40\x3e\xc8\x64\x71\x58\xd3\xaa\x08\x55\x51\x0f\x5e\x3d\x58\x88\xb2\x32\x50\x7b\x2e\xcb\xac\xc0\x35\x39\xcf\xf5\x03\x52\x47\xbe\x27\x15\xcd\x17\x53\x9d\x20\xd9\xed\xb7\x70\xc0\x8e\xbf\x29\x19\x40\xf9\xce\xed\x2d\x63\xb3\xc2\x7b\x8a\x25\x0e\x37\xdd\xf0\x90\x16\x14\xce\x47\x76\xeb\x10\xf7\xc5\xb4\xce\x55\x99\x69\xbb\x17\xfe\x91\x55\xa5\x39\xc1\xfe\x41\xd3\xd4\xd3\x7d\xe2\x5c\xb7\x07\xae\xd4\xa2\x5a\x69\x38\x38\x7d\xa9\xea\x7c\x96\x97\xfb\xa2\xf3\x17\x4c\xea\x44\x65\x2e\xe2\x22\xdb\x90\x02\x25\x50\x71\xab\x44\x5e\x5e\xa8\x5a\xe3\xdd\x57\xc0\x49\x44\xbf\x4f\x3c\x07\x78\x18\x33\x2f\xba\xa2\xa9\xea\x5a\xe9\x65\x55\x66\x30\x88\x78\x3f\x06\xd2\xb9\xc9\xd3\x55\x81\x9a\x19\xa8\x1d\x70\x27\x00\xd2\x60\x4e\xb3\x4a\x16\x8e\x3b\x35\x28\x6e\x89\x3a\xec\x21\x1c\x96\x0b\x24\xbe\xef\x61\x01\xcb\x4a\xaf\x33\x01\xc7\x9a\xd6\x2a\x07\xec\x89\xc0\xeb\xf3\x7c\xb9\xc4\x45\xea\x97\xfe\xb2\xd2\x6d\x20\x63\x10\x37\x37\x88\xef\xb6\x83\xf0\x62\x8c\xbd\x5c\xe3\x35\xd0\xbd\x6d\xf1\x46\x9a\xf9\x60\x91\x97\x09\x17\xa7\x21\x11\x7d\x00\x62\x39\x10\xc2\x6b\x43\x84\x33\x02\x3e\x04\x29\x0d\x4e\x44\xc3\x18\xf3\x22\x3e\x52\x55\x85\xc3\x2e\xc6\xeb\x36\xe4\x57\x7a\x29\x53\x75\x62\x6a\x00\xf3\xa9\xd3\x39\xf3\x13\x6a\x73\x92\x92\x66\x86\xe5\x76\x57\xc1\x8e\xc9\xf3\xb1\x28\x2d\x8f\xf0\x99\xcb\x95\x9e\x27\x85\x36\xbe\x3c\x08\xae\x20\x80\x86\x6c\xc2\x65\x7e\x2a\xcf\x22\x49\x02\x6a\xca\xba\x0e\x30\x97\x75\xfd\x49\xd6\x35\xb7\xda\x1f\x9d\x45\x52\xcf\x42\x2e\x2d\x77\x0b\x64\x9f\x0a\x65\xaa\x4f\x67\xdf\xc4\xea\x40\xec\x15\x5f\xa0\x0e\x32\x38\x31\x75\xdc\xae\x67\xf7\x0b\x46\xa5\x5a\xc5\x67\x82\xbc\xd4\xaa\x36\x27\x55\x6d\x54\x66\xb1\x40\xd9\xb0\x27\x74\x5a\xd5\x81\xb6\xc5\x51\xfd\xb2\xce\xab\x3a\x37\xd7\x40\xa4\x50\x24\xc1\xf2\x5d\x3f\xcc\x50\x32\xc6\x10\x24\x1c\x2a\x4b\x78\x2d\x2b\x7d\xd6\x85\xd1\xb7\xb0\x50\x93\x5f\xe9\xed\x6d\xc4\x95\xaa\x82\xdc\x9f\x2a\x80\xd6\x83\x66\xb9\x95\x10\xf9\xb2\x32\xf3\xbc\x9c\xc1\x2e\x15\x89\x72\xa8\x6e\x01\x61\x6e\x22\xb5\xea\xa1\x38\x16\x1c\x75\xf2\x52\x1b\x16\x2a\xde\x21\xb7\x63\xfd\x8c\x5d\xc4\x90\x2f\xc6\x22\xca\x43\x48\xa8\x02\x26\xa5\xe0\x17\x56\x31\x63\xfb\x7e\x27\x14\x63\xbc\xf5\x0d\xc1\x94\xea\xd2\xe3\xc9\x42\x06\xdd\x70\x10\x52\x4e\xf0\xc4\x84\x1e\x56\x8b\x66\x0c\xd1\x65\x8a\x2f\xab\xf2\xe8\xe4\xe5\xab\x57\x27\x79\x39\x2b\xd4\x4b\xa9\xd5\xef\x55\x9d\xbd\x9c\xcb\x5a\x8c\xc5\xce\x27\x90\x7b\xb2\xe9\xe9\x6a\xf8\xf8\xe9\x1e\x7c\x3e\x1b\xf6\xe1\xcf\xf4\xd1\xe9\x6a\xf8\x64\x88\x3f\x9e\x4c\xa7\xa7\xab\x87\xc3\x47\xf0\xe3\xe1\xf0\x19\xfe\x90\xf4\x03\x73\x1e\x61\xb1\x47\xd9\xe4\xf1\xe9\xea\x91\xc2\x1f\xcf\xa6\x69\x7a\xba\x92\x29\xfe\xc8\xf6\xe4\xf4\x6c\x27\xa0\x1f\x6d\x31\xf8\x49\xea\x3c\x4d\xac\xf2\x9e\x91\xdf\x39\xbd\xe4\xeb\x28\xc8\x00\x16\x34\x17\x2f\x44\xe7\xf4\xea\xe9\xb0\x23\xee\xdf\xc7\x81\x4a\xd2\xf9\xc0\x54\xbf\x2d\x97\xaa\x86\x1e\x25\x5d\x71\x6f\x2c\x30\xed\x75\x75\xe9\xd2\x50\x7d\xb7\xa9\xf7\xae\x89\x6e\x78\xb2\xf4\xb8\x25\xe9\xbc\x27\xe6\xaa\x58\xaa\x3a\x90\xe4\x5d\x82\x1b\xea\x96\xce\xd8\xf9\xa2\xc2\x03\x5d\xad\xea\x54\x05\x3c\xfd\xf4\xb2\xd3\x15\x2f\x44\x7f\x84\xb7\x32\xeb\x00\xda\xf4\x41\xfc\x9b\x41\x5a\xdc\xe3\x75\xa9\x8f\x17\x4b\x73\x0d\x67\x86\xc6\xee\x53\xda\x93\xc5\xe6\x53\x45\x89\x47\x0a\x38\x04\x94\x67\x41\xfb\x74\xa8\x88\x4f\x04\xf5\x4a\xb1\xb4\x73\x7c\x65\x54\x89\x8a\x9d\x55\x99\xa3\x75\x89\xd3\x0e\xea\x81\x38\x12\x5a\xd5\xb9\xd2\xb0\x05\x4b\x98\x89\xbe\x72\xe5\xa1\x9c\xd8\xc6\x6d\xb6\xbc\x16\xa5\x93\x9a\xe2\x12\x78\xfb\x6a\x70\x35\x65\x02\x8f\xbd\x1a\xe7\x11\x9a\x33\x90\x30\x95\x68\x4c\x23\x35\x5a\xd6\x40\x35\x90\xae\x16\x4a\xea\x15\xec\x63\x50\x3d\xad\xca\x54\x81\xe8\x34\x70\xf7\xb9\x65\x65\x04\x5d\xe8\xe2\xae\x9f\x9a\x1e\x00\xd1\x79\x99\x2a\xb2\x97\xd1\x68\x89\xa3\x77\xa6\x55\x69\xf4\x8e\xbb\x06\x94\x85\xae\x08\x1d\xb2\x24\x02\xd8\xd3\x7c\xb6\xaa\xf1\xe8\x82\x76\x45\x28\x6d\x64\x4a\x2c\xab\x1c\x4e\x4a\x88\xf3\xac\xae\x56\x4b\x12\xba\x5c\xf7\x5e\x62\xef\x78\x01\x3e\xa4\x75\xf6\xf0\x09\xac\xc3\x47\x4f\x1f\xf6\xf1\xcf\x33\x5c\x8e\x23\x5c\x8e\x93\x0c\x3f\x71\x9d\xa6\x23\xfc\xdc\xc5\xcf\x47\xf8\xf9\x18\x3f\x61\xfd\x3e\x19\xd1\x92\x1d\x49\xf8\x7c\x34\xc1\x1f\x8f\x15\x7c\xee\x0d\xe1\x33\x7b\x82\x49\x59\x8a\x9f\x0a\x7f\x28\x5c\xec\x0a\xeb\xab\xa7\xf8\x29\x29\x03\x9a\xdd\x1b\x41\x83\x7b\x0f\x11\xf0\xde\x23\x00\xbc\x27\x11\xca\xde\x04\x40\xee\x29\x6c\x65\x6f\xfa\xf0\x74\x35\x7c\x3a\xc2\x9c\xa7\xa3\x67\xf8\x89\x39\x4f\x77\x31\x67\xf7\x31\xfd\xd8\xc3\xcf\x67\xf4\x03\x1a\x78\x46\xdd\x7f\x36\x84\x2e\x3d\x7b\x08\x98\x3d\x7b\x84\xfd\x7e\xf6\xe8\x29\x7e\x62\xa9\xc7\x94\xf4\x18\x3a\xfb\xec\x09\x96\x7d\x02\x80\x9f\x3d\x05\xfc\x9e\x4d\xb0\xde\x04\xba\xfa\x2c\xa5\xa2\x38\x3a\xcf\x52\xac\x9d\x41\xb3\xcf\x14\x56\x53\x50\x4d\x0e\x47\xf8\x09\x29\x12\x1b\x95\x8f\x30\xe5\x11\xa6\x3c\xda\xc3\xcf\xa7\xf8\x89\xdd\x90\x88\x86\x7c\x8c\x85\x70\x30\xe5\x1e\x7d\x07\x8c\x24\x62\x21\x9f\x62\x65\xc4\x45\x12\x16\x12\x67\x47\xe2\xec\xc8\x14\xe1\x21\x46\x12\x71\x91\x88\xcb\x04\x71\x99\x20\x16\x93\x87\x0a\x3f\x61\xae\x27\x34\x0c\x93\x47\x8f\xf0\x13\xaa\x4d\x1e\x3f\xc1\x4f\x00\x37\xc1\x51\x98\xe0\x28\x4c\xb0\xe5\x09\xf6\x7f\x92\x0e\xf1\x13\xcb\x63\xc7\xd3\x87\x38\xd3\xe9\xa3\x21\x7e\x3e\xa1\x1f\x4f\xf1\x53\xd2\x0f\x28\x9c\xe2\xe0\xa6\xd8\x44\x8a\xc0\x53\x04\x9e\x62\x87\x52\xa4\xbf\x14\x29\x2f\x4d\xb1\x4c\x8a\xe9\xd8\x50\x9a\x61\xdd\x0c\xd3\xb1\x6f\x29\xf6\x2d\xc3\xfe\x64\xd4\x93\x0c\x7b\x92\x61\x63\x19\xf6\x21\xc3\x66\x32\x6c\x26\x4b\x25\x7e\x42\x33\x59\xb6\x8b\x15\x32\xac\x80\x50\x33\xdc\xa7\xd4\xc3\x11\x7e\x3e\xea\xe3\x1f\xa8\xa1\x1e\xed\xe1\x8f\x47\xd0\x92\x9a\x60\xfe\x84\xf2\x27\xcf\xf0\x73\x82\x9f\x80\xac\x4a\x9f\x62\x06\xe2\x3c\x1d\x3d\xc5\x4f\x28\x34\x7d\xf8\x18\x3f\xf7\xf0\x13\x53\xf6\x10\xe7\xe9\x1e\x80\x9d\x3e\x45\x22\x9d\x3e\x7d\x84\x9f\x4f\xf0\x13\xcb\xd2\x8e\x39\x7d\x46\x3f\x90\xae\xa7\xd8\xd4\x14\xc6\x68\x34\xdc\xcd\xfa\xf0\xe7\xe1\x10\x3f\x77\xe9\xc7\x1e\x7e\x3e\xc3\x4f\x89\x9f\x19\x7e\x2a\xf8\x7c\xfc\x14\x3f\x31\xf7\xb1\xc2\x0a\x4f\xb0\x36\x22\x34\x1a\xee\x3d\x82\x4f\x98\xf0\xd1\xf0\xe9\x63\xfc\xc4\x96\x9e\x22\x8c\x67\xf0\xf9\xf0\xf1\xf4\x74\x35\xda\x1b\x61\x73\x7b\x23\xa8\xb0\x47\x6d\xef\x3d\xc4\x1f\x8f\x77\xf1\xf3\x21\x7c\xee\xe1\xf7\x3d\xfc\x3e\xd9\xc3\x42\xc0\x70\x46\x7b\xd8\x81\xbd\xf4\x19\x26\x65\x98\x9f\x41\xc6\xd3\x21\xac\x88\xd1\xd3\x21\xfe\x90\x80\xe8\xb3\x5d\x18\x86\xd1\xb3\xdd\x5d\xfc\xdc\xc3\x4f\xe8\xc7\xb3\x87\x98\xf2\x10\x81\x3c\x7b\x38\x39\x5d\x8d\xe4\x68\x0f\x3f\x21\x5b\x02\xb1\x8d\xe4\x63\x98\x95\x91\x04\x4e\x35\x92\xd8\x59\x09\x84\x31\x92\x4f\x1e\x63\xc6\x93\x14\x3e\xf7\x1e\xe2\x8f\x3d\xfa\x01\x3d\x9c\x20\xef\x18\x4d\x86\x80\xdc\x04\xbb\x36\x79\xf8\x04\x93\x70\x5c\x71\x4d\x8d\x26\xb0\xa6\x47\x93\x27\x88\xf5\x04\x3b\x3a\x79\x3a\xc4\xcf\x11\x7c\x4a\x1c\x99\x89\x7c\x8c\x9f\x4f\xf1\x13\x3a\x95\xee\xa6\x90\x91\x3e\x7c\x88\x9f\x4f\xf0\x13\x70\x4f\x33\x6c\x36\xcd\x76\xf1\xf3\x11\xfe\x50\x43\xfc\xdc\xa5\x1f\x4f\xf1\x13\x06\x28\x4b\xb1\x70\xa6\xa0\x7e\x36\x45\x72\xc8\x40\x72\xda\x1d\x0e\x53\xfc\xcc\xe0\x13\x41\xee\x0e\xa7\xc3\xd3\xd5\x6e\xaa\xa6\xf0\x23\x9d\x8e\x4e\x57\xbb\x99\xc2\x9c\x8c\xc4\xb0\x5d\x89\x92\xd7\x2e\xfe\x78\xf6\x0c\x3f\xe5\xe9\x4a\x3e\x79\x02\x55\xe4\x13\x98\x4c\xf9\x04\x86\x48\x3e\xd9\xcb\xe0\x13\x20\xca\x27\x00\x4a\x3e\x05\x76\x27\x9f\x0e\x9f\xe0\xe7\x04\x3e\x77\x1f\xe3\x27\xa6\x00\xc3\x94\x4f\xb1\x39\xf9\x14\x2b\x3c\xdb\x85\xc1\x94\xcf\x80\x51\xcb\x67\xb8\xce\xe4\xb3\xc7\x98\x83\x0b\x42\x3e\x03\x32\x94\xcf\x26\x0f\xf1\x93\x0a\xc3\xa2\x93\xc8\x90\xa5\x44\x46\x2f\xe5\xae\x82\x4f\x58\xba\x52\x02\x41\x48\x09\xcb\x4d\x4a\x18\x53\x29\x1f\x3d\xc4\x4f\xac\x00\x7b\x8a\x94\x93\x5d\xac\x36\x79\x84\x9f\x7b\xf8\xf9\x14\x3f\x11\x10\x70\x22\x29\x61\x27\x94\x13\xf5\x18\x3f\x9f\xe2\x67\x76\xba\xca\x58\xea\x9c\xc2\x78\x4d\x27\x23\x75\xba\x9a\x92\x54\x3a\x55\x43\x48\x52\xbb\xf4\x03\xfa\x3c\x9d\x3e\x53\xf8\xd9\x90\x50\x8f\xc3\x8d\x9a\x24\x54\x2b\xff\xa4\xf3\x01\xc8\x26\x2f\xab\x4c\x1d\x99\x64\xd8\x85\x63\xe7\xde\x93\xa7\x20\x3e\xc5\xdb\xbb\x17\x62\x6f\x03\x1d\x0e\x48\x04\x2c\xef\xb8\x7b\x79\xba\x29\xfe\xf4\x8f\xe1\x3f\x0e\xc4\x3f\xb4\xb1\xa7\xbe\x7f\x9c\x89\x55\x59\x28\xad\xc5\x3f\x96\x95\xfe\x07\x88\x2e\xd5\xca\xe8\x3c\x53\xa4\xb3\xc0\x6a\x81\x4e\x02\x8e\xdd\x11\xe2\x3a\xd1\xa6\x46\xfd\x41\x4f\x64\x79\x1d\x1d\x6c\x93\x2c\xaf\x51\x93\x78\x88\xc7\xb4\x17\x62\x28\xf6\x05\x1d\xc3\x3c\x06\x5d\x92\x50\xe3\xd1\x80\x6c\x18\x81\x23\x03\x07\xad\x6e\x97\x0f\x62\x70\x7a\x07\x98\x81\xa8\x08\x67\xfb\xb8\xef\xd0\x5b\x3c\x95\xad\x77\x1e\x12\xa0\xff\xa6\xfa\xc7\x19\xf5\x4f\x4b\x93\xeb\x69\xae\x50\xb2\xfa\xc7\xb2\x56\xd9\x3f\x50\xbe\x03\xa9\xae\xa8\xb4\xd2\x46\x98\x4a\x50\xc5\x81\x38\xd2\x7a\xb5\xb0\x16\xb7\xd2\x88\x42\x49\x6d\x10\x1c\x4a\x77\x16\x16\x03\x1a\xe0\x6d\x05\xda\x19\x13\x00\x31\x51\x20\x31\xce\x50\xda\xac\x01\x4a\x89\x95\x1b\x3a\x9f\x5f\xf2\x5a\x9b\x04\x40\xf4\xb0\x0b\x3d\x61\x2a\x77\xe5\x7a\x64\x50\x9c\x45\xe1\x4f\x5c\x2a\x34\xed\x4d\x55\x6d\x64\x4e\xb0\xd6\xb0\xe8\x89\xac\x2a\x1f\x18\x71\x5e\x56\x97\x04\xe2\x72\xae\x50\xb4\x64\xa4\xb2\x4a\x69\x7b\x93\x09\x83\x3b\xa6\x71\x7b\x01\x1d\x3f\x84\x13\xc4\x3e\xea\x40\x50\xd2\xf7\x3a\x25\x90\xf1\xb1\xdc\x78\x4c\xe8\x39\x71\x1e\x12\xbd\x62\x68\x91\x67\xbf\x88\x31\x97\xdd\xc6\xa2\x3b\x62\xb7\x07\xe9\x82\x26\x93\x08\x04\x15\x3b\xa9\xca\x8b\x04\x6a\x74\xc5\x3e\xa5\x4c\x8b\xaa\xaa\x29\xc9\x35\x8b\x55\x09\xcb\x50\x0f\x53\xab\x0c\xb2\xba\xe2\x90\x70\xd8\x87\x0e\xf8\x0b\x71\x97\x8f\x77\x24\x95\x18\x23\x0a\x94\xcf\xd6\x14\xd4\x1f\x4c\xdf\x76\x74\x76\xcb\xe4\xf5\x71\xae\x44\x96\xeb\x65\x21\xaf\x49\xd9\xc9\xd6\x2f\x3f\xbf\x7b\x23\xf2\xd2\xa8\x19\x89\xe8\x3d\x31\xa9\xcc\x1c\x47\x2b\xc7\x1b\xa8\x5a\xe1\xbd\x34\x9d\x43\x32\x67\x07\x94\xd5\xf2\x12\x0e\xe9\xe2\x95\x11\xf3\xaa\xc8\xb4\xa8\x95\xb7\xe8\xae\x10\x6c\x59\x65\x0a\xed\xbe\xd1\x98\x9b\xda\xee\xd7\xaa\xc0\xb3\x8a\x36\xd2\xa8\x41\x70\x36\xfb\x99\x0a\x24\xcb\x42\xa6\x0a\x66\x3d\xed\x11\x0a\x5e\xc7\x00\x43\x6e\xe6\xb9\x76\x9a\x6e\xbe\x23\xc3\xbf\x5b\x44\x1d\x2f\xab\x0b\x38\x88\x4c\x2a\x63\xaa\x45\x9f\x1c\x1e\xf4\x3f\x57\x40\x67\x78\x53\x8e\xdd\x73\xea\x64\x8d\x04\xc8\x96\x36\x40\x45\xd9\xc0\xe5\xfd\x92\xa3\x32\x9a\xcc\x78\x3a\x59\x7e\xd1\xe9\x09\xba\xe8\x0a\x94\xbe\x7d\x57\xbc\x3f\xc5\xf2\x78\x9f\xba\x06\xa5\x61\xe2\x93\x2e\xfa\x65\x65\xfa\x3c\x98\x9d\x9e\xe8\xc0\x91\x11\xab\x36\xbb\x00\xe7\xa5\xd9\xca\xc0\x82\x23\x73\x0e\xc8\xfc\x2b\x26\xbc\x55\x57\xe6\x63\x75\x62\x5b\x42\xe6\x57\x12\x08\x98\xaa\xa0\x9b\x90\x15\x75\x92\x20\x7e\x5b\x0f\xa9\x6c\xdc\xbd\xb0\xfe\x77\xf5\xed\xf7\xbc\x28\xac\xd1\x0b\x1b\x5c\x99\x95\x2c\xf0\x48\x88\x6c\x38\x07\x62\xa0\xfb\x00\xec\x2a\xf1\xc3\x5c\x5d\x02\x27\x22\xe4\x8b\xbc\x54\x3f\xe7\x17\x84\xf7\xfb\xcd\x88\x03\x4c\xdb\x2e\xdf\xdc\xd3\x7c\xbb\x1b\x07\x33\x57\x5a\xc1\x97\x5a\xf1\xf0\x08\x77\xad\x4b\xe4\xbe\xaa\x75\x55\x6b\xa6\x0c\x9b\xe5\x1a\x8f\xdb\x66\x0c\x6c\x27\xf6\x05\xd2\x7a\x7e\xa1\x0e\xc4\x9f\x7d\xd4\x6d\xec\x8b\x11\x0f\x20\x01\xde\x00\x28\xea\x04\x61\x60\xfb\x71\x24\x2e\x72\x6b\x9e\xb6\x2f\xe6\x79\x96\xa9\x52\x28\xb6\x57\xc0\x2b\x07\x7b\x65\x08\xe3\xa6\xf3\x3f\xd9\xb5\x25\x2f\x67\xdc\x0b\x3a\xfa\xab\xaf\xb5\xcb\xc5\xdc\xbc\x01\xed\xc1\xc0\xfb\x0d\x96\x5d\x66\xec\xdc\xe0\xc8\x72\xad\xac\x07\x59\xd7\x98\x04\x9c\x02\xb5\x2b\xb8\x64\xdd\x04\xbe\xf9\xd7\xd0\xa8\xe5\x52\x0b\x75\xa1\xea\x6b\xec\x13\x6d\x65\xa5\x52\x78\x27\x21\xd4\x55\xae\x8d\xc8\x4b\x16\x00\x94\xb8\x50\xb5\xc9\x53\x59\x14\xd7\xfd\x25\xcd\x7a\x5a\x55\x75\x96\x97\xd2\x28\xa1\xaf\xb5\x51\x0b\x87\xd1\xc9\x52\xa6\xaa\x41\x54\x9f\xdc\x78\xf5\x62\xbc\x7b\x0d\x7a\xe8\x85\x73\xda\xf3\x44\x7a\xd6\xe3\x8b\x80\xf8\xdf\x1d\xa4\x52\xad\x0c\xd4\xdd\x17\x65\x55\x52\xbf\x81\xf5\xd1\xd0\xaf\x21\xe7\xf0\x3e\x8b\x87\x0d\x8b\xdb\x41\x7b\x53\x5d\xa0\x13\x0d\x7a\x3c\xe5\x46\xb3\x4d\x95\x5f\x62\x48\x52\x05\x4d\x25\x13\x09\xa6\x47\x73\xf3\x09\x61\x9e\xdd\x41\xe6\xb6\xbd\x13\x65\x78\x71\x89\xb9\x42\x06\xcc\xa4\x62\x8d\x80\x7a\x42\x16\x45\x05\xfb\x07\xb3\x28\x74\xdc\xc1\x25\x86\xb7\x7e\x71\xbb\x8c\x4d\xa3\x87\x58\xd2\x32\x5b\xf8\xfe\x7b\x9e\x99\x39\xdf\xa7\x12\x1e\x3f\x59\x6f\xa3\x6a\x0a\x00\xb5\xb8\xcc\xcd\x1c\xad\x0f\xa6\x45\x75\xb9\x2f\xe4\xca\x54\xb8\xca\x81\x34\x48\x17\x46\x15\xf3\x32\xad\x4a\x9d\x6b\xdc\xe9\x64\x5a\x57\x5a\x3b\x4b\x77\xaf\x23\xb3\xab\x4d\x95\x48\xc8\x66\xae\xa8\x36\x75\x49\xc2\x80\xca\x5a\x49\x34\x3a\xc9\x67\x42\x95\xd5\x6a\x36\xa7\x6e\xd2\xb0\xfc\x52\xd5\x69\x3b\xfb\x5d\x1b\x62\x39\xd1\x55\xb1\x32\xea\x80\x47\x74\x1f\xed\x6a\xc2\x7b\xd0\x6d\xd1\x59\x5e\x1d\x88\x4b\x18\x85\x7d\x31\x5a\x5e\x1d\x6c\x64\xb9\xc4\xbc\x75\x0f\xe4\x0a\x59\x5e\x87\x3b\x82\xfe\xb6\xcd\x40\xf3\xc0\x03\x49\xd0\x5e\x14\x0d\xfc\x11\xf1\xf4\x60\x20\x94\x37\x8f\xb3\x7b\x63\xcb\x3c\xe3\x3c\xf6\x1a\xe3\xd3\xf3\xc8\x35\x49\x00\xe1\x44\x1b\xee\xda\x6e\x64\xe4\x04\x4d\x0d\x60\x1f\xea\x8f\xec\x90\x7c\x9c\x3b\x94\x80\x33\x91\x4d\x30\xda\x02\xa3\xf7\xa1\x28\xf2\x0b\xc5\xbc\xca\x1a\x10\xaf\xe1\x1a\x6f\xf0\xbd\xc6\xa6\xd8\x0b\x50\x8a\xd1\xee\x74\x59\x52\xf9\xbd\xaa\xcf\xed\xaa\x7c\x75\xbc\x67\xf7\x08\xb4\x5b\x4a\xca\xca\x88\xa5\xaa\xa7\x2a\x35\x3d\x31\x07\xb1\x0a\xcb\x40\x72\xad\x80\x9f\xb1\x30\xae\x49\x44\x57\x99\xb5\x02\x5f\x73\x64\x78\x2e\x9e\x82\xc8\xe8\x06\x91\xed\xbd\xff\x24\x0b\x8c\xb1\xe8\x8f\x0e\xa2\xe1\xc3\x5c\x5e\x11\xe8\x2c\x21\xc6\x62\xe8\x14\xf6\xf7\xbc\x5f\xd6\xbd\x84\xdc\x27\xee\xdf\x67\xc7\x9d\x2e\xb5\xe3\x40\x65\xb5\x9c\xcd\x70\xfa\x9d\xdf\x88\xbd\xa6\x01\x19\x2f\x14\xc5\x31\x21\x34\xec\xc6\x13\x53\x33\x31\x71\xd3\xd1\x8d\x25\x5f\x2c\xd9\xcc\xbd\xb5\x12\x21\x5b\xcc\xd5\xaa\xcc\x54\xad\x32\x3e\x4e\x25\x0b\x09\x83\x08\x6b\x73\x66\x4f\x33\x76\x3f\x63\xbf\x9e\x2e\x91\x00\xa4\xfc\x42\xb2\x35\xfd\xf8\x58\x91\x45\x23\xb9\x11\x60\x99\x5a\xd1\x34\xfc\x2d\x2c\x1b\x26\xae\xd5\xd9\xd9\x11\xaf\xca\x69\x55\x2f\x24\x49\x1b\x93\x6a\x65\xe8\xb4\x67\xf1\x44\x86\xeb\x51\xb0\x17\x97\x00\x97\x4a\xfc\x8d\x52\xfd\xc2\xfb\x15\x25\xf1\xbc\x9c\x56\x0c\xcf\x5d\x07\x44\x40\x49\x92\xcc\x8d\xb8\x94\xda\xe5\x10\x04\x10\xfc\x79\xc7\x23\x4e\x4d\x67\x61\xa0\xbb\xbc\x0c\x36\x08\x38\xc7\xd7\xa5\x2c\x78\x3b\xcc\x22\x34\xf0\x92\x85\xae\x72\x45\x92\x97\x6c\xe8\xd1\x05\x9c\x2e\x94\x1b\x64\xd7\xb1\x77\x64\x64\x30\x16\x43\x62\x2a\x52\x1b\xd8\xe7\x7f\x55\x4c\x7d\x3e\xc9\xf2\x78\x2a\xb8\x5a\x66\xd2\xa8\xd7\x79\xa9\xc8\xa6\x44\x5b\x24\x30\x97\x1c\xcd\x7e\x92\x6e\x63\xc8\x06\x13\x59\x07\x40\x27\x3e\x6b\x18\xcb\xec\xfa\x65\x61\xcd\x01\xf0\x76\x87\x09\xe9\x37\x66\xf8\x55\x59\x5c\x8b\x5a\xa1\x70\x05\x9d\xc1\x21\x65\x85\x45\x28\xaa\x97\x2a\x55\x5a\xcb\xfa\x5a\x24\xf0\x9b\x80\xa0\xcc\xbb\x40\x47\x95\x6a\xca\xdb\x3a\xee\x30\x0a\x6d\x16\x81\x1b\x40\x0d\x94\x6b\x16\xf2\x5c\x69\xdc\xb1\x91\xad\x8b\x74\x8e\x86\xfd\x8e\xf5\xbe\x5d\x2d\x7c\xe7\x38\xe1\x55\x59\xaa\x7a\x2d\xd5\x5e\xa6\xf8\x39\xb2\x9b\x34\xac\x4b\x32\x21\xc6\xfb\xa7\x79\x55\xe7\x7f\xc2\x5e\x51\xf4\xdd\xd6\xcc\x34\x93\x67\x33\x65\xdc\x1e\x89\xd2\xd4\x40\x1c\xc1\x01\x0f\xcd\x5c\x16\xf9\x9f\x7c\x82\x0c\x8b\xcb\x22\x9f\x95\x7c\xcf\x64\x4d\x24\xc2\xc1\xa0\xad\x14\x47\x99\x08\x0b\x2b\xfc\x8e\x95\x75\x38\xfe\xd9\x20\x95\xe9\x5c\xe1\x35\xa0\xef\x1e\xa5\x7d\x54\x57\x26\x98\x58\x4a\x7c\x4f\x2c\xec\xd7\x80\x28\x80\xf3\xd7\x32\x3d\xa7\x93\xef\x42\x5e\xe5\x8b\xd5\x82\xd0\xe5\x1b\x75\x5d\xd1\xc8\xa3\xec\xe2\x86\x22\x30\x3f\x42\x20\xa9\x2c\x81\x73\x9c\xab\xa5\xc1\x73\x6c\x9e\xd2\x10\x36\x84\x99\x85\xbc\x7a\x8d\x7e\xd8\x76\xd8\x5d\xd2\x6b\x6a\xcd\x12\x1e\xa7\xbe\xc4\xe9\x6d\xa5\x3a\xbf\x2c\x61\x2c\x2f\xe7\x4a\x15\xbe\x35\x31\xab\x65\xb9\x2a\x64\x9d\x9b\x6b\xda\xb3\x20\xff\xe7\xff\xc2\xc1\xa0\xef\xff\xed\xbf\xa3\x1d\xeb\x7f\x35\x7e\xff\x77\x73\x94\x2c\x55\xe8\x79\x3e\x85\x49\x17\x73\x55\x64\x22\xab\x2e\x4b\xde\xc3\x31\xbd\x7d\x7d\x18\x18\x63\xa7\xa6\x91\x25\x8b\xea\x73\xe4\xe4\x70\xf4\xc7\x6b\x44\x32\x91\x2c\x8d\xba\x32\x62\xa1\xca\x15\x2b\x77\xa4\x16\x15\x16\x73\x67\xae\x5f\xaa\xfa\x25\x95\x7b\xa3\xca\x55\xb4\xc6\xc9\x2a\xfb\x63\xb5\x4a\xe7\x41\x3a\xaa\x03\x06\x79\x99\x9b\x24\xeb\xb2\xfa\xe3\x17\x7b\x24\xc2\xd9\x26\x7b\xac\xc0\xa2\x09\x8f\x12\x24\xb2\xce\xf2\x0b\x3e\xea\xf0\x9a\x0e\xd4\x5b\x33\x65\x60\xa2\x12\x54\x4e\xb0\x15\x4c\x29\xfa\x31\x63\x47\x7b\x21\x67\x81\x28\x5e\x50\xae\x26\x8b\x27\x36\xda\x2f\xd5\x25\xf9\x15\x24\x9d\x8f\x68\xa2\x8c\x77\xae\xd4\x2a\x48\x76\x49\x29\xb6\x3d\x50\x32\x94\x61\xe9\xcd\x59\xd2\xb3\xe1\x0c\x39\xac\xae\xca\x73\xda\x5f\xbc\xfa\xf2\x1e\xa6\x22\x07\xd0\x76\xaf\x6d\x18\xbd\x58\xa7\x2a\x3e\xa3\x10\x28\xeb\x4c\x01\x95\x53\xf6\x68\x43\x9b\x17\xfd\xa7\x73\xb2\xc0\xdc\x93\xfc\x4f\xf2\xba\x71\x56\x52\xe2\xb9\xd0\x7f\x92\x6f\x07\x21\x84\xa5\x0f\xc4\xa4\x56\xf2\x9c\xb7\x6c\x1e\x31\xfd\x27\xfe\xb2\x16\xa2\x4e\x73\xec\x50\x66\x03\xa0\x9d\x1d\xf1\x57\x65\xd8\x55\xa2\x36\x74\x53\x6e\xc7\x40\x4c\x94\xb9\x54\xaa\x14\xe6\xb2\x72\xca\x03\xdd\xc3\x4b\xe5\x92\x0c\x5e\x44\x35\x45\xe5\x26\x5a\x6d\xe9\x78\x2e\x7f\xa2\xda\x34\x9d\x6d\x4e\x47\xd6\x5c\x28\xb0\x51\x45\xe4\xd0\xc5\x25\x1d\xe4\x46\xd5\x89\x4f\xc5\xca\xf8\x4d\x6c\x8b\x51\x2f\x30\xdd\x84\xb4\xd0\x9a\xcd\x90\xa7\x1d\x24\x0f\xe0\xbb\xb7\x33\x43\x3b\x4a\x86\x82\xe4\x42\x25\xe1\x8f\x77\xb1\x84\x02\xd6\x8a\x22\xa8\xe7\x31\x69\xaf\x49\xf9\xbe\x62\xb5\x32\x64\x95\x05\x65\x68\x1e\xb7\xb7\x81\x33\xdf\x76\x9b\xa6\x4d\xc1\x2c\xd0\x96\x65\x07\x1e\x75\x8e\x70\x86\x32\x15\x0d\x3b\x8f\x79\xfb\x80\xc3\xe2\xd1\x34\xdc\xb1\x66\xb8\x61\x9b\xe5\x06\xd7\x96\x6a\x19\x4c\x8f\xbe\x1b\xc6\xae\xb8\x45\x2b\x7b\xa8\x0a\xc2\x46\x0d\x3b\x27\x2a\xcd\x24\x70\xef\xf4\xdc\xf9\x47\x99\x7a\x65\xe6\xd7\xa4\x67\x5f\x33\xe3\x02\x56\x86\xa2\x45\xe3\x08\x2b\x05\xcd\xf2\xb2\xae\x96\x72\x26\x0d\xe9\x1f\x5c\x09\xda\x9d\xa1\xf6\x6a\x79\x29\x6b\xd2\x48\xf0\x51\x1b\x55\xa1\xc1\x58\x78\xd1\x85\xf6\xad\x84\x20\x13\xa4\x40\xe1\x99\x4f\xa7\x62\x6c\x1b\xe8\x13\xc1\xd0\x2f\x66\x34\x50\x22\x72\xa0\x2c\x99\xae\x0e\x44\x79\x80\x3f\xca\x81\x77\xa1\x2a\xb9\x32\x5d\x44\x4c\xa7\x68\xb6\xc2\x8b\x0c\xd9\x9e\x0c\xf9\x63\x8f\x6d\xcf\x8d\x8e\x44\x9c\xc9\xb5\xb8\x94\x05\x1a\xb0\xaf\x96\xc8\xcf\x56\xb3\x39\x06\x6c\xf1\xaa\x85\x22\x2f\xcf\xc3\xfe\xa2\x18\x52\x05\xeb\x00\x70\xc7\xde\x70\x05\x6f\x84\xee\x8c\xb3\x57\x45\xe1\x19\xdc\xaa\xb6\xeb\xc5\x3a\xca\x95\x15\x6a\x7e\xc9\x62\x28\x5d\xd5\xc4\x35\x48\xfa\x88\x7c\x5a\x1c\x2f\x5a\xd5\x5c\xf9\x80\xd2\x0e\x18\x2c\xfe\xe8\x05\x3c\x0b\x78\x90\x1b\xb4\x6f\xe0\x9b\xe4\xb0\xd6\xe0\x97\xd0\xa5\x74\x85\x86\x50\x0d\xf6\x57\xc1\xf0\xaf\x95\x5f\xe3\xa9\x0d\xd6\x08\xd5\xb0\x0f\xb4\xcf\xb4\x6d\x6b\x2c\xb8\xd0\x0e\x66\x55\x5f\x8e\x2f\xf6\xc4\x4a\xc7\x24\x8b\x93\x16\x9c\x41\x1a\x3b\x0c\xba\xbf\x36\x26\xf1\x88\x05\xad\x84\x07\x6d\xee\x89\xb5\x74\x63\x67\x77\xc2\x6a\x65\x54\xbd\xef\xbd\x01\xfd\x28\xfe\x30\x62\xa3\xcb\x1f\x46\xe2\x79\x63\x2c\x42\x53\xf3\x1f\x46\xdf\xb6\x3b\xfd\x30\x3a\x83\x09\xf4\xde\x84\x76\x8d\xd8\xe9\x99\x63\x33\x2d\x5b\x13\x88\x20\x79\xb9\x52\x84\xac\x9b\xa4\x39\xec\x51\xe9\xdc\xed\x58\xdb\x9b\x76\x3e\xaa\x60\xe7\x28\x74\x4b\x8c\xf6\x5f\x6b\x25\xc9\x32\x1f\xdd\x46\x91\x9b\xb3\x2f\xd5\x70\x75\x76\xdb\x45\x41\x52\x64\xb8\x39\xc2\x7e\x5c\xcc\xed\x9a\x08\xba\x6b\x3b\x5b\xcc\x9b\x94\x87\x5d\x2a\xe6\x0d\xaa\x12\xdb\x22\x6f\xd8\xc8\x79\x11\x07\xd6\x23\x17\x2c\xac\x20\x83\x93\x0b\x87\xfe\x42\x3c\x0f\x12\xb6\x9d\x94\x13\x59\xed\xba\xc3\xd9\x2f\x55\x9d\x90\x35\xbc\x46\xeb\xd9\xc0\x9c\x91\xac\xeb\x6d\xee\x20\xaa\xb3\x90\x70\x9e\x4a\x72\xb1\x2d\x6c\x3e\xb6\xe7\x4f\x7d\x5d\x2b\xe2\x1d\x89\xf7\x95\x46\xc3\x4e\x09\xf2\xa5\x53\xe9\xc3\xb9\xca\xae\x01\x54\x01\x32\x99\xe3\xce\xe8\x51\x7d\x5f\x69\xe6\xc2\xe9\x1c\xa4\x81\x3c\x3d\xbf\xf6\xbc\x8a\x13\x30\xa6\xd2\x45\x95\x67\x62\x28\xba\x2e\x0d\x79\xd5\x81\x55\x6e\xdc\x4b\xe8\x58\xc3\x88\x54\x53\x00\xdd\x6d\x84\x8c\x68\x6f\xed\xd6\xde\x6c\xf1\x8c\xb3\xac\x81\x49\x4c\xdd\xf6\xa7\x6b\x9b\xbe\x38\xf7\xa3\x05\x30\xae\xa6\x3c\xc4\x0d\x0f\x01\x3f\xa7\x98\xc7\x0b\x02\x74\x45\x97\xa2\x54\x33\x3c\x2e\x03\x0c\x66\xf3\x7c\x28\xcc\xb5\x28\x94\x06\x99\xaa\xcc\xdc\x40\x5e\xb8\xcd\x00\xad\xfc\x2e\x73\x1d\xf2\x89\x74\xb1\xb4\x3e\x87\xce\x56\x9b\x7a\xd4\x17\x13\xfa\x72\x73\x23\x24\xf4\x08\x12\xd2\x79\x64\xb8\xad\xfe\xb9\x92\xc5\x4b\x54\xa5\xc3\x20\xad\x01\x72\x13\x21\x26\xf6\xfb\xfd\xfb\x41\x9b\x63\x52\x57\xc5\x3e\x68\x00\xe9\xca\x13\x33\xfe\x64\x99\xed\x0a\x24\xa2\xdb\xd0\x70\xfc\xaa\xa5\x5d\x0f\x9f\xee\x7b\x27\x62\x5f\x48\x11\x56\xcb\xcb\x6f\xa8\x26\xc5\xbe\x98\xb0\xb1\xc3\x9b\x4a\x3b\xcd\xb8\x55\xa7\x88\xa3\xf7\xaf\x44\x5a\xe4\x4b\xcd\x5c\xdc\x4d\x22\x08\x13\x0b\x79\xae\x84\x55\x36\x5f\xe3\x95\x2c\x6a\x5a\x8b\x6b\xbe\xf9\x08\xa8\xdb\x1d\x13\xc2\x10\x26\xf9\x32\x3e\xbe\x30\x96\xe4\x95\x20\xaf\x12\xb7\x9c\x7b\xde\x53\xa1\xec\xb5\xae\x72\xd1\x17\xa3\x6e\x38\x6e\x00\x1d\x46\x00\x81\x2f\x2b\xed\xd7\xce\xb2\x62\x82\x7e\x1e\x1e\x69\xdc\x18\x71\x25\xdb\xf0\xd0\x1f\x6b\x0a\xa9\x4d\xa8\x35\x6b\x34\xdf\x04\xff\x02\x2b\x34\x20\x43\x52\x2f\x3e\xb8\x61\x29\x14\x18\x9d\x0d\x47\x78\x04\x29\xf2\xe5\xc7\xea\xb5\x2a\xc9\x46\x3e\xaa\x69\x9b\x8a\x6b\x6f\x35\x46\x21\xa8\x0d\x85\x0b\x55\x06\x1e\xc1\xb0\x8a\x01\x0c\xae\x64\x12\x1c\xc2\x10\x36\x68\xc9\xed\x6b\x85\x3d\xb1\x8d\x07\x50\xe3\x70\x1a\xc0\xf6\x87\x1b\x2b\x0d\x83\xe2\x0d\xef\x8f\xf5\x59\x44\xe7\x50\xea\x33\x4a\xf4\xff\x43\x1e\x14\x11\x8d\x58\x67\x8a\x36\x4f\x8a\x9d\x1d\xf1\x8e\x74\x4a\x6c\x6f\x8c\x26\xc3\xc8\x92\xe8\xce\x96\xc3\xc4\xd1\x7d\x6e\x59\xd1\xdd\xe7\x80\x83\x76\x5d\x7e\x50\x32\x7b\x57\x16\xd7\x27\x4b\x59\x3a\x2d\xd2\x81\xcd\x7d\xc9\xb1\x1d\xb2\x46\xb6\xb7\x12\x52\x2a\x82\xc0\x11\x03\x5a\x00\x5b\x4b\xef\xb0\x6a\x0c\xde\xd7\x5d\x6b\x36\x30\x13\xff\x78\xfc\x5f\x1f\xdf\x1c\x7d\xf8\xcf\xe3\x0f\xe2\xe4\xfd\xd1\xdb\x93\x00\xe2\x1b\x59\x9f\x53\x9d\x64\x01\x5f\xeb\xe6\xd9\x09\xb7\x03\xca\xc2\xe0\x49\xf0\xc5\x26\xb3\x49\x08\xfc\x39\xa0\x14\x34\x1d\x31\x15\xb7\x7b\x82\xfe\x9d\xe1\x61\x59\x68\xc4\x0e\xe3\x75\xe1\x77\x0a\xdc\x63\x05\x47\xe2\x4a\xd4\x48\x7c\xb6\xf3\x78\xc2\x56\x8f\x50\x7a\x5c\xd0\xb3\x02\x4c\xde\x14\xf0\x05\x33\x37\xc9\x40\x88\xca\x98\xca\x7c\xca\xcf\x9c\xac\x03\x09\xae\xf7\x63\xdf\x60\xe0\x50\x54\x72\xb8\x88\x5b\x3a\xc8\x7e\xc0\xd8\x2f\xb6\x77\x7c\x80\x15\xec\xa5\x43\xb5\xc8\x5e\x9f\xe3\x2e\x42\x33\x65\xc5\xe3\x22\x29\x34\x61\xa1\xa6\x46\x24\x97\x8a\x8d\x93\xb4\xa9\x6a\x45\x20\x68\xe8\xe8\x90\x0c\xec\x18\xd6\x0b\xf5\x7a\xd0\x8c\x2c\x14\xcc\x2c\x0f\x17\xfc\x09\x42\x9e\x6c\x58\x63\xeb\xe3\x14\x38\x64\xda\x01\x12\xf7\xc6\x16\x9c\x48\x6a\x8c\x71\x55\xe3\xc2\xed\x76\xe9\xd4\x6c\x0b\x36\xe2\xe6\xd4\x34\x48\x47\x59\x66\x47\xc8\x54\x7c\x2c\x1c\x44\x41\x0f\x02\xec\x89\xc1\x78\xe4\xb1\xf0\xc2\xe5\x6b\x2b\xa6\x86\x49\x87\x6b\x49\x83\xb4\x2a\x53\x69\x92\x4f\x00\xe8\xac\x2b\xf6\x05\x7d\x83\xd5\xe3\x27\x79\x20\x8d\x91\xe9\x1c\x79\x32\x1d\xf5\xf8\xc4\x6e\xd5\xa4\xa8\x60\x2f\x66\x55\x9d\x9b\xf9\x82\x4d\xdd\xb2\xcf\x2b\x6d\x34\x13\x87\x25\x6e\x3a\xaf\xf3\xa1\x07\x4d\x94\xec\x96\x29\x3e\x12\x8f\xe1\xde\x6a\x91\xae\x4c\xcb\x1a\x01\xc8\xb4\x20\xa0\xb6\xf3\xeb\x08\x0e\x5c\x9e\x9a\xc2\xda\xb5\x5a\xc8\xbc\x24\x0f\x8e\x55\x79\xae\x45\x42\x01\x4f\x1b\x14\x47\x5a\x53\x2a\x1c\x51\x4f\x30\x66\x3f\xa9\x69\x55\xab\xa4\x2a\x32\x56\x60\xbd\x9c\xf7\x44\xae\x5f\xa1\xff\x59\x70\x34\xbb\xe4\xf5\x57\xd1\xcd\x5a\x1b\x55\x55\x45\xf6\x95\xb5\x57\x15\x19\x9e\x3b\x1c\xaf\x09\xa6\xc5\x97\x05\x2c\x18\x2f\x5b\xc4\x1a\xda\xd9\x4d\x8e\x19\xd9\x20\x2f\xd3\x62\xa5\xf3\x0b\xf5\x1a\x96\xd3\x61\x50\xf8\xf9\xd8\x76\x47\xec\x87\xc9\x36\xd5\x5b\xd3\x45\xed\xdd\xdc\xc4\x0d\x5a\x18\xf7\xef\x5b\x96\x65\x38\x04\x4d\x67\x52\x55\xe7\x90\xd6\xc1\x38\x01\xf7\xec\x98\x61\x74\x80\x90\xdc\xc8\x95\x0f\x10\xec\xc6\x47\x51\x55\x66\xfa\x88\xc3\xa8\x61\x05\xe0\xac\x77\xf4\x91\xee\x52\x0f\x5d\xd9\x17\x6b\x5d\x84\xc4\xb8\x83\x42\x1c\x24\xe5\x25\x82\x2b\x2f\xa3\xd5\x0b\x67\x88\x96\x9d\xc1\xf5\xbe\x17\xe0\x77\x48\x48\xb9\x56\xba\x81\x7e\x21\x3a\x0b\x5e\x6e\xdd\xb6\x52\x19\x82\x21\x22\xc3\xab\xd8\xff\x9f\x49\xec\x7f\x60\xe4\xb1\x1b\xd1\xb8\x63\x4a\x14\xda\x80\xdb\x68\xd2\x14\x55\xfd\x3e\x8a\xfa\x26\x82\xfa\x1f\x5b\x39\x51\xe7\x78\xdd\x04\xdd\xfb\x7e\xa2\x0a\x11\x8b\x89\x09\xa1\xf7\x99\x2a\x5a\x2d\x9d\x36\xfd\x6b\x4e\x5c\x93\x48\x2d\xd4\x3b\x89\x35\x54\x5c\x32\x3b\xb7\xaa\xcb\x94\x42\xb5\xe2\x76\x00\xfd\xd2\x0a\x0f\x5b\x4c\x58\xc4\xc0\x61\x73\x40\xd6\xed\x0c\x0d\xf1\x1c\x11\x59\x84\x30\x58\x53\x55\xe7\x6c\x90\xc0\x02\x84\x26\x20\x50\x5f\x95\x26\xaf\x55\x71\x1d\x9e\xbf\xa8\x1e\x6c\x01\x69\x55\x96\xe8\xfd\x4f\x8d\x4e\x54\x51\x95\x33\x7f\xe1\x44\xa6\xd7\x0b\x65\x51\xa3\x1d\x6b\xb9\x54\x20\x6c\x5b\x7b\xd5\x3c\x23\x27\xc1\x10\x32\xd9\x27\x1a\x48\xa7\x2b\x0e\x04\x8f\x1e\xf9\x78\x24\x5c\x43\x66\xe0\xed\xeb\x1b\x7b\x19\x1e\x25\x49\x7a\x21\x1b\xa9\xd2\xdb\xc7\x60\xe4\x3c\x99\xce\xdd\xd8\x50\x44\xc7\x6e\x08\x38\x90\x7f\x4d\xad\x4c\x3a\x47\xb6\xf1\xee\x42\xd5\x74\xa7\x49\x02\x3f\x5f\x5f\x07\xb1\xcd\xb0\xf2\xf4\x0e\xbd\x6f\x55\x90\x39\xb9\x18\x47\x7a\x29\x5b\xb3\xae\x16\x7c\xdf\x71\xff\x7e\x7c\x52\x5b\x2b\x11\x4a\x1a\x1e\xf8\x6b\xb9\x09\xb6\xa9\xee\x86\x6c\xf3\x1b\x70\x51\x01\xe4\xb0\xbe\x7f\x5f\xdc\xe3\x56\xd6\x7b\xb8\x15\x2c\xfb\x97\xa4\xdc\xf1\x38\xa7\x73\xe6\xb5\x3e\xdd\x54\x98\xea\xf8\xca\x18\xb5\x0b\x41\xa5\x00\x37\x52\x83\xd0\x95\xaa\xbd\xb8\xf1\x34\x2f\x1e\xa0\xe2\x04\x0e\x5b\x0f\x62\x1a\x63\x9c\xa6\x3c\xe6\xad\x92\xc6\x2f\x74\x4e\x5f\x17\x37\xe2\x53\x7b\xdb\xfe\xf1\x1a\x0f\xe3\xcd\x3d\x84\xaf\x8f\xdf\xaa\x2b\xd3\x13\x0b\x55\xc3\x72\x9b\x57\x9a\xb4\x58\x18\x1c\x83\x47\x4a\x2e\xd4\x6b\xab\x0a\xa5\x8e\xfa\x53\x38\xc6\x95\xeb\xd9\x80\x15\x63\x8c\x17\x10\x94\xea\xda\x62\xdb\x22\x71\x70\x0e\x83\x1d\x78\x68\x0d\xa8\xac\x7a\x02\xd9\x0e\xaa\xd8\xaf\xc4\x6a\x29\x80\x25\x05\x01\x6d\xab\xa9\xb0\x5a\xee\x76\x21\x1d\x73\xdb\x76\xbb\x68\xbf\xc3\x52\xf6\x38\x13\x1c\x68\x3c\x63\xf4\xd5\x78\x6a\xd0\x5e\x6c\xbc\x7e\xe2\x22\x45\x47\xb0\xd3\x74\x5d\x3d\x24\x4a\xac\xd8\xa5\x90\x0c\xd4\x80\xeb\xfd\xad\x2b\xe9\x94\x09\x76\x8c\xe2\x0a\x08\xa3\x95\x6b\xbb\x9c\x6d\x3b\x05\x16\xe8\x6d\x74\x99\x81\xf7\x3e\xb2\x75\x80\x71\x2f\xc9\x4b\xa2\x9f\xa4\xaa\xc5\x82\xad\x85\x16\x14\x23\x89\x88\x32\x2f\x45\x2a\x29\x68\x89\xc3\xf1\xce\xcb\x05\x00\x77\xd7\x95\x02\xf4\x0e\x6b\x40\x41\xbc\x49\x68\x4c\xc6\x0f\x23\xe8\xd7\x3d\x7f\x41\xe5\x13\xb7\xc7\xcd\xde\x06\x95\xc2\xbd\xbb\x75\x16\xb1\xd5\xb5\x79\x64\x35\x18\x03\xd9\x3c\x95\x61\x3f\xec\x86\xea\x5a\x65\xb4\x82\xec\xe6\xa4\x52\x3b\x28\x05\xd8\xd5\x1e\x9f\x0d\x01\xbe\x27\x0c\x37\x9b\x61\xa4\x86\x66\xb3\xdb\x6b\xed\xfe\x5b\xad\xc6\x94\xb3\xb3\x23\xde\x38\xfd\x27\x9c\xbc\xf3\x0c\x8e\xde\x14\x49\x02\x9d\x8a\xfe\x54\x75\xd5\xb7\x86\x3c\x01\x3f\x76\x0a\x47\xdb\x24\x86\x4f\x42\x23\x35\x52\xd1\x70\x81\x90\x3e\xf1\x82\x03\xfe\xde\xe3\x45\x0a\xf5\x99\xb3\x35\xab\x13\x3d\x3b\x86\x5e\xaa\xcb\x37\x7c\xd0\x1c\x8b\x4f\x58\xf9\xcc\xee\x0c\xc1\x58\x78\xf2\x2f\x0a\x31\x93\x4b\xda\x79\x2f\xe7\x55\xa1\xd0\x7c\xbb\x6f\xbb\x40\x50\x67\x18\xeb\xa8\x85\xef\xf5\xc5\x6e\x0f\x72\xb9\x4d\x27\xc1\x42\x85\x17\x62\x08\x1d\xa1\x0e\xb8\x88\x34\xc1\x4a\xd9\xb5\x2b\x65\xb7\x8d\x65\xfd\xb0\xeb\x09\xef\x8b\x1f\xca\x4f\xf9\x0f\xbb\x67\x21\x8b\x0a\xc8\xec\x0b\x36\x6c\xfb\x0f\xf3\x1c\xfc\xbc\x43\xd6\x0c\x00\x5b\xb1\xd3\x9b\x42\x77\x51\x47\xc1\xf4\x10\x60\xff\xd0\x62\xff\x50\x3c\x87\x21\x20\xa4\x1f\xfa\x9e\xfa\xa9\xa0\x46\x3d\x2e\x2e\xdc\x57\xa3\x04\xce\x65\xe3\x8a\xcc\x15\x71\x9e\x7a\xc8\x99\x82\xfd\x14\x1f\xa8\x40\xa3\x47\x10\xca\x48\x27\x34\x97\xa8\x64\x42\x62\xf9\x7d\xae\x4a\x24\x18\x0c\x80\xc0\x31\xa1\xa6\xd6\xec\x2d\x50\xbe\xc6\x84\x65\xb5\x65\xdf\xac\x07\xfa\x56\x7d\x19\xae\x56\xe6\x68\x18\x45\x26\x3a\x34\x33\xbb\xb7\xe9\x7c\xe4\x88\x3b\xe2\xe3\xe9\xf9\xd1\x26\x7c\x38\xc0\x4c\xde\xef\xf7\xc4\xa8\x1b\x31\xfe\x7b\x21\xc6\x6d\x22\x5f\xa0\xb3\xd3\xa1\x5e\xc7\x54\xe2\x41\x5a\xe4\xcb\x07\xa8\x7e\xae\x59\x09\x4b\x86\xbc\x6c\xe2\xb1\xa0\x90\x7a\x72\x5d\x24\x25\x65\x9b\xd5\xdc\x62\xac\xe0\x8d\x36\x28\x0b\x47\xa9\xd6\x64\x2f\xb4\x44\x61\x4d\x3a\x8b\x7e\x77\x19\xf9\x38\xf3\x86\x40\x0a\xda\x74\x2a\x5e\xd3\x83\x6d\x14\x1a\xa0\x50\x8b\x2e\xed\x53\x7e\x16\x1e\x91\x6d\xc8\xf7\xfa\x7c\xe0\x46\x0a\x4f\xa4\x0b\xbf\x2a\xad\xdd\x04\x27\xd1\x81\xbb\xcb\x11\xb3\xc2\x45\x9f\x04\x95\x92\x45\xcb\x3a\xa6\x8a\xcc\xaa\x69\xb6\xad\x24\x65\x1b\xdc\x24\xdc\xc3\x51\x05\x81\x7d\x81\xc1\xdd\x77\xd3\xb1\x2f\x4c\x75\xbb\xe9\x82\x81\x61\x6e\x22\xfb\xc5\xb9\xd3\x81\xd3\x25\x39\x7a\x44\x9e\x0f\xa6\x79\x99\x25\xc3\x86\xa4\xf0\x99\xc0\x7e\x16\xcf\x09\x97\x00\xe8\xe7\x78\xe4\x81\xf7\x62\x91\x4f\x9f\x43\xf1\x00\x04\xf0\xe5\xc0\x54\x3d\xb1\x18\x90\x3f\x27\x9b\xfd\x51\x06\x75\x68\x81\xf2\xf8\x0b\xba\x9a\x71\xe6\x06\xb7\x01\xf4\x52\x5d\xbe\xb7\x63\xf1\xb9\x27\x46\x67\x3d\x91\xf1\x3e\x1e\x03\xc2\x36\x7a\x22\x43\x61\x2c\x6c\xdc\x54\xa1\x1d\x5e\xc6\x87\x7e\x44\xe5\xde\xe2\xbc\xa1\x2e\x80\x53\x09\x16\x09\x27\xda\xe2\x40\xb3\xca\x33\x62\x5b\x86\x39\xa1\xd6\x6f\xbb\x91\xa8\x93\xa1\xee\x64\xbd\x1d\x52\xb9\x60\x43\x1e\xb5\x8d\xcd\x2c\xb0\x17\xd0\x08\xf4\x27\x68\x82\x66\x85\x38\x0a\x87\x1a\xc5\xa4\x9e\x83\x63\x61\x7f\xa6\x90\x69\x0c\xdc\x6d\x8d\x0f\xdb\x2c\x69\x10\x84\xbb\x30\xc7\xc3\xb9\xc0\x37\x89\x34\x1f\xd5\xed\x1d\x08\x5e\x0d\x34\x55\xdf\x99\x32\x32\x9d\xfb\xad\x4b\x07\x0b\xdf\x32\xde\x36\x8d\x77\xc4\x03\x83\x25\xb1\x16\x1f\xf3\x6b\x5a\x7e\x1d\xaf\xf9\x01\x21\xe4\x15\xe2\x08\xb1\x45\x05\x8f\x1c\x2d\x50\xf0\x91\x22\xbd\xd9\x91\x9e\x08\x76\x9d\xff\x1d\x84\x9b\x1a\xfc\x4d\x08\x87\xdb\xc0\xaf\x18\xd5\x89\x9d\xae\xd8\x11\x76\xb1\x5c\x19\x32\x87\xce\x53\xf2\xeb\x2a\xe4\x72\x89\x7a\x75\x7b\xd5\xe6\xb4\x1b\x29\xc5\x65\x95\x64\xfa\x5d\xc8\x7a\xa6\x6a\x51\x45\x13\xab\xae\x4c\x2d\x61\x81\x24\x6b\x97\x48\x1b\xb4\x6e\xe8\x5c\x3e\x0c\xad\x00\x10\x06\x12\xff\xd7\x81\x58\xb5\xa4\x05\xd2\x1a\x00\x21\x2f\xb3\x3c\x95\x61\x37\xa7\x78\x2c\x6e\xed\xad\xd7\x02\xe5\xda\xf6\x31\x41\xe3\xcc\xf9\x4a\x0b\x6c\x38\x63\xb7\x6f\xb4\xdb\xe8\x0e\xc4\x2f\xb2\x28\x34\xbe\x88\xc6\x31\x1d\x53\xb4\x20\x41\x8b\xfd\x4c\xbb\x1b\x57\x06\x4b\x8a\x32\x75\x25\x53\x0c\x4e\xcb\x06\x24\x6b\x51\x16\x08\x86\xbf\x08\x65\xf1\xa9\x11\x88\xba\x50\xe5\xcf\x64\xdf\x28\x23\xf3\x27\x67\x25\x62\x13\xac\x58\xce\xe5\xef\x8d\xa3\x5b\x6e\x9b\x6c\x77\x15\xf9\xbe\xa2\x08\xd7\xc8\xf2\xbb\x3d\x31\xa1\x84\x09\x27\x58\x15\x47\x5d\x2d\x5e\x2e\x96\xcc\x47\xa1\x12\xf3\xba\x89\xfd\x8a\xd1\xd1\x3c\x51\xc8\xae\xe8\x07\x3f\x27\x4e\x5f\x40\x80\x02\x8c\xfa\x16\xb6\x45\xc9\x54\x8d\x96\x80\xdd\x4d\xe8\x8b\x6f\x85\xc8\xc6\x37\x43\xbf\x5d\x3b\x08\x24\x8c\x7b\x56\xd9\x26\x6c\x48\xed\x41\x9e\x89\xbe\x90\x83\x3c\x0b\xad\x03\x41\x62\x72\xb6\xf8\xa4\xc4\x53\x65\xa6\x81\xe3\x91\x62\x97\x42\x13\xc7\x4b\x66\x20\x5e\x91\x4e\xb1\x72\xc6\x43\xe4\x32\x81\x2a\x4a\xba\x66\x93\xc4\x27\xa3\x79\x0f\x6e\xb8\x8f\xcc\x49\x9e\x29\xcb\x53\xf0\x19\x84\x80\x47\xe2\xfa\x5e\xbb\x13\x87\x43\x57\x83\x0f\xf4\xe8\xac\xec\xee\x8f\x63\x31\x4a\xc3\xb0\x26\x64\x90\xd5\xed\xc5\xdc\xa8\x55\x46\xc0\x0a\x7a\xd9\x10\x89\x9d\x8c\xeb\x06\x01\x04\x26\x44\x1a\x95\xeb\x03\x8e\xc8\xa0\x97\x56\xb7\xc6\x92\xb3\xdb\xd9\xf8\x50\x4e\xf1\x40\xdb\xa9\x1f\x0b\x00\x7b\xb5\x87\x7a\x34\xd7\x08\x8f\x65\xa4\xd9\x71\x05\xd6\x95\xde\x34\x14\xb7\x9b\x47\x1c\x1f\xa0\xb0\x06\xd2\xd6\xa0\x65\xe3\xac\xe0\xdb\x16\x62\x33\xb8\xe3\x32\xfb\x76\x60\x74\x18\x60\x3e\xf6\x51\x69\x4f\x75\x06\x3d\x1c\xd0\x42\x49\xaf\x51\x1a\x11\x92\xd3\x5a\xe3\x01\x89\x78\x9b\x16\x49\x4a\x91\x10\x90\xd1\xe0\x64\x54\x35\x05\xb8\x9e\xac\x0c\x5a\x7d\x4c\x2a\x38\x48\x50\xf4\x3c\x75\xc9\xf4\x88\x71\xd6\xfd\x8e\x60\xe3\xd9\xa1\xcf\xb1\xca\x22\x7a\x2d\xa7\x45\x9e\x02\x77\x75\xb3\xf5\xc1\xeb\xab\xc9\x68\xd9\x1f\x13\x62\x73\x86\xc0\x30\x33\xb6\x2e\xc2\x5a\xdd\xef\xa7\xf4\x0d\x24\xfe\x75\x9a\x76\x0b\xa1\x41\xd7\xf7\x5a\x08\xbb\x45\x06\x0d\xb5\x8a\xbe\x46\x28\x30\xaf\xf3\x4b\x52\xf7\xd1\xc0\xb4\xf0\xca\x80\xc6\xfb\xeb\xfb\xaa\x77\x83\xa8\x9a\x10\x49\x0e\x6c\xf2\xc4\x75\x70\xd1\x16\x1b\x05\x74\x01\x88\x2f\xc6\xa4\xf7\x20\xf8\xcf\xc7\x24\xa0\xda\xdc\xe7\x51\xee\x8b\x71\xab\x60\x1e\x82\xb3\x15\x02\x46\xb1\x2e\xe8\x6e\x10\x11\xe2\xae\xd1\x50\x21\x7a\xfb\xed\x59\x80\xcc\xcd\x8d\x63\x2b\xcd\x1e\xfd\x7b\x28\xf8\xf3\xee\xf3\x26\x0a\x41\x56\xc4\x94\xd6\x1f\x5d\xb9\x75\xe6\xb6\x17\xb9\x5e\xc9\x82\xef\x85\xb4\xdd\x5c\xa4\xe6\x90\x0f\x15\x4b\x0e\x69\xad\x54\x39\x10\xbf\x54\x45\x86\x41\xa0\xa7\x64\xed\xa0\xae\xe4\x62\x59\xa8\x1e\x7a\xd3\xa5\x72\xa5\x95\x58\xac\x0a\x93\x2f\x0b\x25\x8a\x6a\x86\xa6\xeb\x64\x46\x63\xaa\xe0\x3e\xcc\x0a\x1d\x00\x22\x40\x80\xdd\xf2\x81\x6a\x23\x7e\x61\x63\x54\x78\x4c\xad\x7f\x1f\x00\x08\x7c\xbd\x72\xed\xfc\x8b\x92\x95\x26\xa3\x4a\x2c\x9a\xeb\xe0\x66\xd0\x68\x55\x4c\x43\x5b\x0c\x82\x1c\xc8\xb2\x4e\x93\xa0\xea\x19\x3a\xd5\xb2\x35\x38\xfd\x06\x62\xdf\xc8\xb2\xad\xbc\xcc\x5c\x85\x6a\xd0\x42\xec\x8f\x98\x5b\x93\xe6\x21\xd8\x12\xd0\x44\x38\xb4\x40\xf3\x18\x05\xec\xfb\x3b\x91\x72\x35\xef\x40\xe9\xab\x18\x85\xe2\x6c\x70\xdf\xd8\x98\x5b\x8a\x2c\xce\x6b\xaf\x31\x57\xe4\xb8\x25\x6b\xa3\x32\x31\x21\x79\xd3\x3e\x4d\xd1\x83\xad\x20\x32\x98\xa1\x5d\x86\xcc\x01\x85\x5e\xf1\x85\xa5\x6e\x9d\xab\x97\xdc\x60\xfb\xf8\x10\x0f\xd7\xdf\x33\x4c\xcc\x89\xbf\x36\x4c\x58\xe8\x20\xa1\xae\xdf\xdc\x08\xfe\x16\xea\x53\xac\xfb\x4a\x63\x40\x75\xc3\x17\x2e\x74\xc8\x61\x22\xff\x5e\x8a\xb7\x27\x0c\x47\xf8\xad\x43\xf5\xb6\x0a\xb6\xb5\x6f\xd8\xf9\xba\x3d\xa8\x2c\xc6\x6b\x2b\x23\x70\xfa\x01\x01\xea\x22\x0f\xcf\x94\x58\xb5\xd9\xe7\xb7\x55\x02\xa5\xbe\xb3\xe7\xa5\xba\x32\x51\xf7\xf1\xba\x7a\x8b\x5d\xaf\x7d\xff\x5b\x7b\x7b\x5c\x66\x2d\x1d\xb6\x78\xbf\x15\x2f\x50\x21\x58\x48\x72\x40\x48\xba\xad\x5d\xf8\xda\xf8\xb8\x55\x88\x9b\x34\xa4\xbe\xd2\xbf\x62\x24\x1f\x5f\xae\x1d\xf2\xff\xf6\xb2\x75\x2e\x5a\xdb\x62\x14\x78\x14\xac\x8c\x6a\x1e\x21\x72\xcd\xc1\x87\x06\xe2\x35\xf9\xb0\xa3\x4b\xbb\xb4\xc9\xee\xe4\x48\x66\xea\x75\xe8\xbd\xb9\x46\x9b\x7c\x0e\xc1\x0b\x10\x59\x52\xe0\x60\x12\x2a\x2b\xf2\x43\xe0\xd9\xbb\xe6\x97\xa0\xd9\xda\x02\xa5\x43\x62\x0d\x6e\x20\x7a\xe8\xc5\xce\xce\xe7\x8d\xe3\xc9\x86\x91\xfe\x57\x4e\x25\xff\x9b\xc7\x91\x6f\x14\xdb\xf8\xe4\xd2\xb8\x65\x5c\xdb\xb0\x9b\x47\x1c\x1a\x1a\x7e\xf2\xef\x2b\x30\x87\x74\x07\xb0\x26\x71\x58\x2d\x62\x38\xa0\x18\x77\xc0\x8f\x2a\x9c\x73\xbe\x2a\x46\xb4\xce\x4c\x0b\x20\x6b\x57\x7a\xc7\xf5\x38\xdb\x85\xc5\x16\x63\x31\xc5\x87\x8e\x5a\x1b\x1a\xb4\x9e\xb7\xbd\xf5\x6b\x59\x9b\x15\x9f\x4d\xc3\xeb\xf6\x30\x0e\x7d\x6c\xf0\xd5\x14\xd4\x82\x3e\x14\xd6\x77\x35\x7a\x65\x75\x7d\xc0\xbe\x81\xc4\xbe\xe5\x1e\x01\x6b\xb7\xdc\x1f\x7c\xed\x2c\x7c\xaf\x8d\x80\x98\x3a\xd6\xef\x8d\xfc\xa9\x18\x0f\xcc\xa1\x01\x1b\x25\xdc\x0b\xcc\xdb\xba\xcd\x0a\xad\xd4\xb6\x66\x44\x17\x8e\x69\x04\xe2\xab\x44\xd9\x46\x8e\x4d\x77\x4a\x76\x93\xf5\x01\x4b\x5a\xf7\x0d\x2a\x75\x64\xdc\x26\xf7\xce\xc6\x95\xe7\x1f\xeb\xdb\x20\x94\xb0\x17\xc5\x73\x7e\xef\x84\x1d\x12\x39\x9b\x3d\x4f\x37\x28\x59\xff\x55\x6f\xc1\xe8\x56\xca\x12\x1e\xa1\x1b\x39\x09\xb2\x7b\xc8\x5c\x6c\x47\xae\x85\xeb\x2f\x39\x2d\x1b\x9e\xb2\x07\x62\x79\xe0\xba\xb2\xec\xad\xe5\xaf\x7b\xd2\xc6\x66\x1a\xcb\x6f\xf3\xff\x44\x87\xdd\x65\xec\xf9\x19\x5e\xc8\xac\xd0\x0b\x00\x1b\x5e\xf7\xbc\x0d\x3b\x97\xae\xea\xb0\x6f\x6b\x97\x04\xf3\xc6\xfe\xc7\xd6\x6e\x6c\xe2\xcd\x9a\xca\xc0\x29\x9c\x9f\xf4\x0a\x5f\xf3\x22\x75\xaa\x5d\x45\x7c\x59\x99\x68\x45\x7a\xb4\x8f\xe8\xb0\x4e\x71\x5e\x10\x0d\x7c\xe8\x88\xaf\x37\x64\x99\xe1\x13\x7e\xa8\x0e\x71\xfb\xa1\x16\x15\x80\xcf\x4d\x63\x53\xa3\x70\x22\x6d\xde\xd5\xdc\xc3\x71\xac\x32\x1d\x7a\x31\x45\x95\x62\x9d\x09\xf5\x9c\x20\xec\xfd\xae\xbf\xf5\x24\x93\xae\xea\x6e\x48\x8d\x56\xb3\x10\xca\x20\xc3\x90\x23\x53\x13\xfe\x14\xea\x05\x65\x40\x6e\x3b\xca\x42\x8f\x41\x7b\x66\x26\x17\x2a\x7c\xc6\xf5\x3b\xb0\x04\x19\xa9\x15\x47\x24\xc7\x8d\x58\x02\x2e\x7d\xa2\x9a\xd8\xf8\x82\xeb\x5a\xfc\x9a\x5d\x42\x3b\xa1\xb5\x2e\x6d\x06\x13\x76\xcb\x2b\xb8\xd7\xbc\xbd\x2b\xa0\x25\xe3\x4c\x32\x37\x38\xfc\x41\x37\xde\x50\x6c\x99\x24\x5d\xc4\x71\x54\xd3\xc5\x80\x43\xb2\xa2\x7f\x1f\xa7\x60\xfc\x90\x30\x72\x4d\x24\xc0\x7a\xef\xbd\xd6\x60\x36\x01\x29\xba\xcc\x6e\x7b\x80\x1b\x74\x7d\x0a\x6f\xd7\x37\x86\xca\xf0\x14\x1a\x52\xb9\x67\x67\xaa\x04\xa1\x3c\xc6\xc5\xf3\x8c\x16\x24\x31\xf6\x50\x94\xe7\x69\x47\xd8\x0b\x6c\x1a\xef\x9f\x5e\xfd\xfc\x4a\xfc\x7a\xfc\xfa\xfd\xf1\x87\xd0\x23\x0b\x30\x96\x46\xfd\x94\x67\xf9\x09\x05\x80\xd4\x49\x55\x67\xa1\x67\x96\x7b\x74\x88\xec\x41\x21\x33\x8c\x31\x1c\xc4\xb5\xe8\x14\xa6\xee\x44\x5e\x8f\x76\xc5\x50\x68\x9d\xf6\x6d\x00\x21\x6e\xda\x00\x96\xf4\x50\x25\x96\x09\x59\x3f\xa4\x5b\x7b\x70\xb2\xef\xc0\x14\xbc\xc2\xc5\x64\x56\x92\x51\x4c\xe4\x30\xdf\x87\x2b\xe6\xb1\x9b\x26\xce\x67\xd4\x41\x65\x1d\x56\xe0\x3a\xca\xd5\x51\xaf\xd4\x23\x60\x85\xba\x50\x05\xda\x6a\x8a\x43\xd1\xa9\x4d\x81\x6f\x98\xd2\x18\xe4\x56\x5e\xb4\x23\xc0\x54\x12\x5b\x0f\x7a\x43\xc6\xb5\x61\xec\xfa\x57\xac\x26\x79\x96\xbf\x43\xc6\xc9\x17\x9f\x51\xdc\x97\x3c\xcb\xdf\xcb\xda\x1c\x19\x3b\x6f\x4d\x97\x6f\x37\x0f\x5b\x62\x1d\xd4\xbf\x30\x25\xc4\x11\xd6\x66\x04\xc3\x39\xd0\x84\xa4\xe8\x53\x80\x8c\x01\xe6\x23\x8a\xa7\x9e\x87\x0f\x23\x53\x09\xdc\xe4\x1a\x11\x28\x2c\xb0\x7b\x63\x0b\x07\x04\x34\xe7\x2e\xdd\x99\xa0\x09\x6f\xa7\x1b\xdc\x35\xe4\xcd\xbd\x31\xec\x6c\x1e\xec\x8c\x8d\x26\xbe\xb7\xf9\x7b\xff\x66\xf3\xcd\x3b\x10\x67\xbc\x74\xc8\xbf\xf7\x7d\x55\xbb\x78\xf3\x2c\xaf\x69\x79\xca\x82\x86\x1e\x0d\x84\xac\x6b\x18\xb9\x3f\x2a\x31\x37\x66\xb9\xbf\xb3\xc3\xcf\xf3\x0c\xaa\x7a\xb6\x43\x71\xfb\xf4\x8e\xa9\x9f\xc1\xff\xfe\xe8\xe1\x60\x6e\x16\xc5\xba\x7b\x19\x9d\x4b\x51\xbb\x92\x6b\x5a\x60\x78\x8b\xd1\x15\xf9\x62\xc9\x11\x87\x07\xe4\xcd\x5a\xaa\x3e\xbe\xe8\x93\x62\x50\xec\x95\xf5\x56\xf3\x22\x85\xb9\x5e\x2a\xbd\x0f\x65\x5f\x8b\xe4\x75\x77\x5f\x08\x01\x92\x6f\xdf\x54\xfd\x0f\x36\x58\xc7\x07\x91\x7c\xc0\x1c\x4c\x81\x2c\x28\x02\x39\xb5\x48\x8e\xb0\x52\x94\x23\x8e\x6a\x39\xc9\x53\x28\x30\x12\xc9\xf1\x5b\x28\x70\xbc\xaa\xab\xa5\x92\x25\x3f\xc4\x08\x79\xdb\x22\x39\x3e\x69\xc9\x13\x27\x6a\x29\x6b\x69\x48\x61\xfb\xa3\x48\x8e\x3f\xb6\x95\xfa\xa8\xea\x45\x5e\xda\x62\xa5\x48\x8e\xb0\x21\x6a\x3b\x68\xa6\x27\x92\x97\xd8\xcc\xcb\x6a\xb1\xa8\xda\x1b\x59\x88\xe4\xed\xc9\x9b\xee\xbe\x78\x5b\x95\xfd\x93\xa5\x4c\x61\xce\xe0\x24\x06\x99\x13\x91\xfc\x84\xa0\x7f\xb2\x61\xf2\xde\xaa\x95\xa9\x65\x81\x8a\x42\x91\xfc\x84\x63\xf3\x5e\xd6\x72\x56\xcb\xe5\x3c\x86\x6c\x44\x82\x8d\x8b\x13\x35\x43\xc7\x86\x28\xf7\x52\x24\xbf\x63\xf6\xef\xf3\xdc\x28\x0c\x5d\x88\x8f\x55\x8a\xe4\x1d\xb6\x48\x44\xc9\xcd\xe9\x48\xb9\x89\x74\x98\x4f\x83\x87\x9d\x50\x4d\x81\x14\x47\x8f\x32\x91\xea\x02\x55\xd8\x50\x31\x29\x78\x5e\x31\x3a\x79\x17\xb5\x1c\x91\x47\x06\x6f\x2a\x82\xec\x63\x88\xc1\x21\xe3\x44\xd7\x4c\x7e\x4c\xb2\x6b\x37\x7e\x6c\x28\x72\x5a\xb9\x16\x55\x0a\x1c\x87\xce\x1e\xc5\xf5\xc0\xb3\x44\xbb\x0c\xc6\x22\x09\x9f\x23\xe5\x48\x99\x31\x31\x12\x81\x56\x99\xe2\xa7\x9a\x86\xb0\x2b\x0c\xaf\xa6\x53\x2b\x3c\x56\x97\x1f\xb1\x1c\x2c\x6e\xfb\xcf\x68\x73\xa9\x27\xd1\x3f\xad\xb5\xb9\x7c\xfb\xf6\xc7\x1f\x7f\x7c\x8b\xff\x7a\x6f\x7b\x6f\x47\xee\x1f\xa5\xbd\x7d\xbd\xf1\xdf\xb7\xe4\x73\x43\x93\x8d\xff\x7a\xd0\x3c\xb6\x4f\xf0\x7e\xfc\x71\x34\xc2\xaf\xa3\xd7\x77\x81\xbf\xa3\x59\xca\xef\x7c\xdb\xc8\x5d\x3d\x19\xf2\xe8\x3d\x99\x3e\x73\xef\x30\xc3\xfa\x70\x23\x58\xe2\xbf\xb7\x6f\xeb\x1f\x7f\xac\x7b\xf5\xdb\xb7\x0b\xff\xaf\xfe\xce\x7f\x8b\xb6\x7f\xa5\xfb\xf7\x63\x59\x42\xa1\xef\x85\xfa\x2f\xfd\xb3\x8d\xbf\xb5\x3d\x59\x2c\xde\xd2\x17\x4f\x01\x30\x86\xfe\x4e\x76\x2e\x6b\x18\x93\x24\x25\x15\x95\xdf\x7b\xaa\x4c\xe1\xbd\xd5\xd5\x74\x2f\x54\x8e\x32\x11\xda\xf7\x36\xa8\x5a\x70\x98\x85\xba\xc3\xab\xc7\xcf\x86\x50\x39\x65\xb5\x85\x07\xf6\x78\xfa\x28\x80\xd6\xf9\xd0\x59\xaf\x0b\x73\xd7\x5a\xf7\xc9\xf4\x59\xf4\x1e\xa5\x9b\xcf\x10\x19\xd1\xa7\xe9\x6f\x41\xea\x89\x52\xed\x80\x9f\xca\x34\x44\xaa\x6e\x41\x6a\x77\xb8\x09\xab\xdd\xe1\x30\x0c\x41\xd2\xb9\x5c\xab\x8d\x65\xc7\x5c\x36\x6a\x69\xd2\x89\xf5\x00\x36\xfd\x75\xc7\x87\xd4\xb5\xbc\xe4\xc3\xb1\x7d\x9d\x6d\xe3\x93\x88\xc3\x3d\xfa\xf1\x54\xa6\x67\x3b\x36\x04\x92\x66\x2e\x8a\xb5\x81\x33\x9c\xed\xf4\x44\xae\x4f\x4c\x5d\x21\x63\xda\xf9\xf4\xfa\x43\x0d\x69\x64\xb3\x75\xa4\x71\x27\xc3\xf4\xc9\xa8\x0c\x33\xde\xae\x16\x98\x0e\xa9\x5b\x21\x11\xa1\x68\x8e\x9e\xe9\xc0\x35\x9b\x86\xbe\x36\xc6\x0e\x89\xa2\xc4\x59\x7d\xf2\xe6\x90\x09\xdc\xff\xe6\x6b\xe8\xf8\x80\x8c\x93\x35\x42\xa9\x0f\x43\x4a\x7d\xa4\x17\x2c\x5d\x01\x14\xc5\x40\x5a\x05\x01\xf8\x35\x8a\xbf\x1f\x3a\x5b\x5e\x01\xe7\x5e\x96\x21\x0d\xec\xcd\x4d\x5b\xd5\xfb\xf7\xc5\x3d\x9a\x03\x7a\x42\x47\x9b\xba\xbb\xfe\x26\x61\xe3\x10\xe5\x41\xf7\x98\x4d\x71\x20\x8f\x76\x81\xb6\x50\x65\x60\xc6\x87\xef\xa1\x23\x6d\xe3\x35\x95\x5b\xa6\xf6\xa9\x1b\x7e\xec\x27\xef\x76\xd9\x15\x82\x62\x5c\x8f\x06\xe2\xf8\x4a\x2e\xd0\xea\x48\xa6\x73\xd4\xce\x6b\xde\xd6\xd1\x9c\x19\xb7\x7b\xbb\x95\xd1\x94\xd4\xab\x12\x35\x20\x16\x88\x75\xc1\x9c\x2b\xc4\xc0\x5e\xf4\xbc\x3d\x79\x63\x63\x76\x86\xc9\xcb\x5a\x5d\xe4\xd5\x4a\x07\xb5\x89\x35\x0f\xc4\x2b\x5f\x31\xd7\x36\x5a\x5a\x74\x79\x14\x20\x90\x1b\x71\x99\x17\x85\x05\x33\xe3\xeb\x27\xdb\x94\xae\xea\x41\xab\x42\xab\x87\x18\x80\xb4\x6f\x67\xdf\x79\x22\xf1\x80\x36\x95\x5a\xfc\xc6\x29\x8e\x6e\x53\xa1\xe5\xbc\x8b\x17\x28\x38\xfb\x32\x62\x4c\xed\x34\x04\x68\x6e\x1b\xab\x59\xf1\xd9\x4d\xc6\xee\xc0\x06\xfc\x98\xc8\xf4\x9c\x62\x14\x22\xb9\xe3\xd4\xb8\xc8\x59\xa8\xd5\x72\x42\x1e\x5d\xb5\x59\x18\xab\xd2\xe4\x05\x0e\x04\x39\xd3\x68\x5a\xb5\xd8\x5e\xf2\xa1\x27\x5e\xf7\xc4\xd1\x6b\x94\x68\x74\x55\x77\x31\xb6\x2f\xaa\x6b\x60\xec\x65\x69\xa1\x1c\xbd\x76\x39\xbd\x4d\xd3\xdb\x40\x00\xa6\x9a\xa5\x59\x06\x62\xa3\xb3\xda\xde\x3d\x1c\x08\x52\x30\x08\x59\x14\xe2\xe8\x35\x1a\x0e\x7c\x58\x9b\xa4\x5d\xd6\xba\xd2\x89\x2c\x9c\xa3\xdd\x70\x8e\x76\xd7\xe7\x08\xe7\xd7\xce\xc0\x6e\x73\x96\x20\x77\x2c\x3a\xa3\x0e\x9f\xe3\xf0\x57\x1d\xcd\xda\xee\x19\x6e\xf4\x9d\x78\xd2\x30\x6a\x3b\xb3\x3f\x5a\xcd\x04\x0e\x17\x34\xa1\x49\x09\x07\xcd\xb6\xda\xa0\xc3\x06\xb6\x3e\xf3\x8f\xf0\xad\x51\x0a\x05\xee\x06\x56\x5b\x01\x38\x0a\xa3\xda\x18\x77\x1d\xaf\x42\xb2\xc6\x68\x16\x0a\xa0\xa7\x24\xdb\xaf\xc1\xb6\x60\xa0\x09\x86\xec\xae\x6f\xe5\x82\xa7\x3e\x68\x83\x8e\x55\xd7\x4b\xb5\x36\x81\x0f\x05\x7a\x7a\x02\xa5\x07\x33\x32\x3c\xb3\x8e\x40\xa8\xaa\x13\x23\xeb\x0c\xb4\x3e\x8d\xbb\xc1\x34\x3e\x5c\x9b\xc6\x5d\x1c\xda\x6d\x9c\x46\xdb\x86\x9b\x57\x57\x6d\x7b\x74\xc6\xc9\xe1\x14\x3c\xc4\x29\x18\xb5\x4c\x70\x00\xba\xd7\x00\x1d\xc1\x0c\x2e\x32\xf8\x5f\x12\x23\x71\x73\x13\x62\x55\x76\xba\x6b\xed\x73\xb6\xb3\xa1\x0f\xc7\xe9\x87\xdd\x26\x65\x3c\xa6\x57\x68\xff\xb9\x52\xbc\xf4\xdd\xd4\x1a\x77\xac\xd3\x42\x66\x9f\x65\xca\x6f\x86\xd8\x02\xf1\x3a\xd4\x11\x81\x14\xc5\x1a\x1d\xf9\x85\xfa\x64\x40\xc7\xa9\xcb\x5c\xab\x9e\xa7\x14\x4d\x71\x64\x83\x56\x9d\xef\x3d\x95\xb7\x00\x58\x7e\x58\x23\x8c\x47\xf6\x3e\xe1\x51\xb8\x90\x1f\xb5\x50\xc0\xc3\x80\x02\x1e\xad\x51\xc0\x43\x9e\xa6\x70\x64\x1f\xe1\xcc\xbe\xdd\x34\xb3\x54\xe5\xc7\x4e\xd3\xcf\x93\xae\x24\xed\x75\x9d\x37\xeb\x02\xa4\x29\x0f\xb0\xdd\x06\x6a\x85\x9f\x44\xbc\x8e\xce\x54\x99\x9d\x31\x60\xe8\x0b\x85\x26\xbe\x8d\x1a\xa8\x15\x06\x25\x80\x46\x00\x52\x40\xa2\x8f\xfa\x4c\xa2\xf7\x3a\x68\x4f\x97\xdc\xd5\x00\x90\xf1\x21\xd2\xd7\x3e\xf4\x32\x46\xd4\xba\xca\xe4\x3f\x3c\x22\x67\x19\x55\x66\xd6\x47\x86\x01\x7d\x86\xe1\xb1\xb8\x78\x0c\x69\x4e\xa0\xe1\x3e\x3f\x44\x2f\xd6\x79\xd3\xde\xff\x95\x5d\x69\xc3\x8e\x24\x5e\x53\x44\x7b\x7e\xfc\x00\x37\x24\x83\xee\x05\xdf\xbc\x2b\xbd\x5e\x23\xc4\xc7\x6e\x8b\xc1\x85\x17\x6d\x32\x8f\x43\xda\x7c\xdc\x42\x9b\x8f\x02\xda\x7c\xdc\xb8\xdb\xe2\x55\xff\xda\xf1\x22\x28\xbd\xc6\x85\x1e\x23\xad\xbe\xfe\xb6\x6d\xe6\x91\xdd\x66\x3c\x8f\x78\xb4\x36\x47\x6f\x47\x4d\x2e\x51\xb2\x26\x44\x18\x7c\xa3\x00\x2f\x20\x9c\x98\x4a\x63\x65\x2b\xeb\x55\x8d\x8f\x9c\xe0\x73\x25\x3c\x31\xea\xca\xb0\xcd\x16\x7d\x8f\x03\x5d\xcc\xd9\x4d\x03\xed\xfc\x18\x8a\x83\x3e\xf0\x73\x00\xfc\x82\xb5\x4c\x96\x09\xc9\x14\x8d\x50\x6c\x9c\xcb\x4b\x55\x2b\xf1\x41\xe4\x7e\xfb\x51\xf5\xc2\x6e\x3c\x79\x2d\xf2\x72\x5a\x70\x9f\x4a\xd7\xa7\x81\xc0\xab\xac\x7e\x35\xed\xa3\x3c\xd8\xaf\x57\xa5\x48\x80\x7a\x2c\x14\x68\x58\x95\x59\xa3\x84\x02\xfa\x92\xb5\x22\xed\x1e\xbe\xaf\xc8\xd2\xa4\x7d\xd7\x21\x57\x9e\x0d\xbe\xdd\x1d\x88\xa3\xf2\x3a\x88\x06\x15\x8d\x29\x85\x85\x5c\x4c\x14\x3d\x4d\xe4\xbb\xdf\x24\xb6\x27\x96\xeb\x3d\x09\x29\xeb\x49\xac\x9c\x75\x87\x2e\x3f\xf3\x40\x29\x4f\xce\xba\x2d\x1c\x0b\x29\x61\x23\xcf\xc2\x5c\x68\xcd\x72\x2d\x2b\xdb\xd2\x43\x98\x2d\xed\x60\x99\xb3\x2e\xb3\x30\x94\x7e\x63\x26\x36\xb1\x31\x6f\x12\x80\x7b\xe8\x08\xf9\x09\xb0\xb0\x7d\xbf\x7e\xba\x4c\xfd\x51\x65\xc9\x91\x80\x92\x10\x95\x43\x11\x36\xfd\x55\x18\xcc\xb9\xb0\x6b\x16\x99\x31\x43\x3e\x14\xc9\xc4\x86\xbe\x71\xe7\xb5\x6e\x08\xb2\x85\x5b\xda\x41\x3a\xc0\xaf\xcf\x69\x98\x90\x67\x62\xf7\x2d\xd7\x24\x39\xde\xb7\x1e\x72\xce\x27\xc4\x39\x7f\x18\xdd\xc1\x3b\x7f\x55\xec\x0b\xaf\xf0\xce\xc7\x3d\x18\x6a\xef\x02\x81\x0c\xad\xae\xba\x87\x2f\xdc\xa3\xae\x10\x76\x68\x98\x5e\x0b\x66\xb2\xca\x8b\x8c\xe3\x79\xc3\xb2\xa2\xe7\x9b\x90\x7a\x39\xa2\xfb\x40\x9c\xd8\x47\x1b\xd8\xc8\x12\x1f\x41\x31\xf3\x5a\xb9\x15\xca\xe5\x93\x61\x0f\xc4\xb3\x5d\x3c\xd4\xc9\xd2\x6b\xc2\x29\xc6\x34\xca\x75\x59\xa5\x74\xf9\xc0\x20\xa1\xdb\xea\xea\x6a\x59\xe4\x69\x6e\x02\xa2\x0f\x2f\xd3\x7b\xd0\x4f\x7c\x78\x03\x90\xa5\xc8\xe3\x56\xf7\x59\xf9\xe5\x0d\x5b\x40\x71\xdd\x73\xa1\xf7\xa6\x95\x7d\x69\xcc\x1d\xef\xfa\x13\xa9\xc3\x81\x19\xf8\xf3\x3a\x42\xa3\x80\xff\x8b\xe6\x3a\xdb\xb3\xeb\x6c\x8f\xd7\x59\xe3\xfa\x23\x50\x56\xc4\x8b\x6c\x6f\x7d\x91\xd1\x99\x13\x28\x64\x2f\x26\x1e\x58\xba\x7b\x41\x23\xa4\xd9\xb9\x03\x32\xad\xf6\xbd\x68\x49\xd1\x4d\x94\xf3\xb2\x77\xca\x90\xa1\x7b\xe4\x00\x6a\xd8\x95\xbd\x16\xd1\x01\xaf\x10\xd1\x65\x2a\xff\x61\xaf\x07\x7c\x6c\x1c\x5d\x6e\x7d\x1d\x63\x8f\x1f\x5e\xfc\xbc\xee\xb4\x61\x19\x2c\x96\x5d\x8a\x89\x7a\x80\x5f\x9f\x03\xac\x83\x38\xb6\x45\x38\xc0\x6f\x57\x8b\x70\x14\x3e\xff\xb0\x1b\x8f\xaf\x2d\x4f\x0f\xf5\x7e\xc6\x83\x1c\xe3\xcf\xae\xe9\xd2\xf4\x60\x7b\x8e\xc6\x66\xc4\x6f\x00\x43\xf9\x30\xee\x85\x1d\x90\xd2\x4e\xd9\x67\x16\xa1\x1b\x83\xf0\xf9\x87\xdd\x00\xfd\x70\xda\xda\xf0\x25\x4e\xb0\x1b\x8d\x87\x9f\xb9\x3b\xd0\xdc\xed\x31\x26\x8c\x69\x54\x9b\x26\x2d\x46\xd0\xce\x2e\x35\xd8\x12\xd0\x23\x1c\x2c\x9a\xa2\x6f\x1f\x2c\x24\xa3\x96\x70\x1d\x1c\x08\x0e\x6f\x3b\x87\x67\xe1\x9d\xef\xfd\xfb\x22\x59\xb0\x2a\x0a\xe3\x8a\x26\x3b\x7f\x3f\xd5\xdb\x3b\xdd\x60\x0a\x5d\x3d\xfb\x9e\x2d\xc1\x08\x48\x8f\x10\x5c\x95\xf8\x08\xcd\x1a\x8d\x0f\x7b\x61\x95\x6e\xb7\x81\x56\xa1\xf9\xd6\xb7\xfb\x15\xc4\x4e\xf5\xf6\x0f\x11\x62\x41\x4d\x53\x89\xfe\x66\xcc\x5a\x97\x1e\x1d\x4b\x83\x2a\x98\xe4\xd0\xc3\x3f\xac\xbe\x8b\x15\x7e\x78\x49\x7e\xc8\xa0\x6b\x75\xa1\x6a\xad\x12\xdc\x80\x20\x85\xac\xd7\xba\x49\x37\x32\x92\x9e\xe4\x59\xee\xef\x3c\xed\xbd\x65\x60\xfc\x8d\x6e\xa1\xf8\x50\x92\xc8\x4d\xd7\x45\x06\x03\x18\xa4\x3c\xf4\x51\x4c\x5d\x84\x8b\xe9\xaa\x28\xae\x45\x74\x79\xc5\x61\xc1\xe3\xb7\x56\x6c\xaf\xed\x4d\x55\x6b\x90\xf0\x99\x32\x78\x19\xc5\xde\x63\x0d\xfd\x69\xc8\x8d\xd1\x3a\xc9\xf6\xd5\x11\x56\x68\xf3\xba\x5e\x12\xf6\xf1\xe0\xba\xcb\x3f\x11\x12\xb5\x14\xc6\x1d\x46\xf8\x74\x73\x7c\xfc\xb7\xe3\xb7\x1f\xc5\xaf\x47\x6f\x7f\x7e\xfd\xea\xed\x5f\x31\xe9\x35\x74\xf6\x92\x8c\xa9\xd4\x05\x86\x45\xab\xe5\x42\x5d\x56\xf5\xf9\x40\x54\xe5\x4e\x35\x9d\x0a\x59\xe8\x4a\x40\x0a\xc8\x92\xee\xfd\xe3\x1e\xde\xce\xaa\x59\xae\x0d\x4d\x06\xbd\x4b\x86\x05\xe8\x1d\x66\x38\x1a\xe3\x05\x5d\x59\xfd\xca\x09\xa4\x98\xc5\xc4\x0a\xc3\x44\x59\x5d\xb3\x5a\xe4\xc6\xa8\x9a\xf4\xb7\x91\x91\x09\xe7\x0c\x64\x96\x1d\x03\x82\xaf\xf1\xf9\x4a\xeb\xac\x26\xc4\xa6\xfc\x84\x21\xf5\x7c\x34\x8f\x5b\x7f\x60\x70\xb5\xd0\x65\x1b\x2b\xae\x01\xf4\x59\x49\xa7\x2a\x3b\x62\xdb\x21\xb7\xd5\xd8\x5d\x28\x86\xc5\x12\x04\x1b\xae\xfc\x87\x1d\x02\x3a\xa1\xae\xa5\x8e\xc5\x97\x5b\x5a\x21\x0b\xb9\xfc\x04\x70\x41\x60\x4a\xfc\x8f\x9b\x9b\x60\xd8\xba\x36\x84\x2c\x35\x1d\xb9\xc5\xcc\x94\xb1\xc5\xe2\x51\x8c\x9e\x22\x58\xc7\xe0\xfe\xfd\xf5\xc4\xb6\xb6\xa3\xc6\xaa\xe9\xf4\x1b\xa6\x8a\x02\x93\xdc\x39\x5b\x2d\x45\xbe\x6d\xc2\x28\x28\x40\xeb\x84\x05\x59\xff\xc6\x84\x61\xfc\x6e\x8c\xb5\xb1\x24\xdf\x33\x9e\x11\xc7\x67\x65\x5d\xc7\xa7\xdb\x9c\x1f\x9c\xb4\xb1\x47\x64\x5d\x73\x9b\xb6\x0a\x95\x78\x21\xfa\xa3\x30\x64\x44\x38\xf3\xb2\xae\xfd\x33\x48\x58\xdc\xcd\xb9\xcf\x22\x30\xdb\x62\xe4\x36\xa7\xdb\x35\x72\xd0\xf9\xac\x94\x45\x3c\x49\x62\xe7\x2f\x3d\x7a\x12\x48\x0f\x06\x83\xbf\xec\x78\x56\x14\xd0\xe3\x66\x3a\xb2\xf6\x49\x6e\x55\xaf\xc5\xb9\x71\x2e\xea\xf5\x0c\x40\x61\x90\xf5\xc1\xb2\xae\x4c\x85\x8a\x4e\xc4\x7e\x90\xca\xa2\x48\xac\x9b\x93\x06\x41\x7a\x83\xc1\x51\xa3\x1d\x6b\x73\xe4\xd2\x3f\xe5\x67\x1c\x33\x83\x22\x29\x41\xab\xdd\xe8\x3d\x78\xe0\x41\xc8\xcd\x98\xc9\xfb\x47\x4a\xdd\x13\xf1\xfc\xd4\x5d\x75\xa1\xea\x9a\x1c\x3b\x26\xd7\x4d\x8e\x26\x45\x52\x56\x65\xff\xe7\x77\x6f\xba\xb6\x71\xeb\xa9\xc7\xef\xa9\xda\x0d\x88\x58\x67\x29\x17\xaa\x67\x1f\x94\x5f\xd6\x98\xf8\xb3\x9a\xca\x55\x61\xfa\x56\x52\xa7\x92\x39\x9f\x17\x18\xea\xa0\x39\x7f\x3f\xbf\x7b\x43\x74\x9c\x2e\x7a\x42\xf5\x2c\x9a\x81\x15\x2c\x0c\x6c\x35\x15\x74\x87\x42\x6f\x52\x75\xac\x8d\x3d\x9c\x38\xbf\x40\x81\x7d\xa1\x7a\x0d\x44\xf6\x45\x68\x1e\x41\xf7\x80\x19\x65\xbd\xa7\x82\xce\x8e\x51\xdc\x92\xc2\x9d\x49\x0a\x50\xb1\x78\xa0\x1f\xeb\x80\x56\x17\xa2\x18\x3c\xac\xa5\xfe\x68\xc2\x4b\x14\x39\xbe\x0e\xd2\x2a\x53\x0b\x9c\x87\x57\xb3\xb2\xaa\x55\x0b\xe5\xd2\x03\x19\x47\xa9\xc9\x2f\x72\x73\x1d\x59\x77\xd2\xba\x4c\x17\x31\x13\x0b\x7f\xf3\x4b\xd5\xb6\xb6\x25\x5c\x5a\xb1\x4d\x62\xa5\x70\x8a\xe9\x02\x2a\xbd\x5b\x36\xaa\xfe\x1a\xb2\xef\xaf\x95\x41\x37\xb7\xcd\xef\x06\x34\xe9\xd8\x71\x84\x77\xd3\x44\x2b\x83\x0c\x07\xe3\x95\x53\x94\x22\x9e\x44\xad\xf8\x15\x30\x9b\x7b\xdb\x58\xe9\x73\xa9\x19\x83\x3b\xf8\xfe\xe6\x55\x6d\x2f\x63\x5f\x88\xa1\x75\x7c\xcd\x32\xc1\xcf\xc3\xc3\xb6\xbf\x50\x66\x5e\x65\x7c\x2f\x92\x56\xa5\x36\xf5\x2a\x35\x55\xfd\x40\x0b\xb7\xb4\x7b\xf6\xf5\x8e\xe6\xd2\xe1\xd5\x07\xd3\x8a\x1e\xeb\x2c\x30\x2d\xaa\x1a\x1f\x47\xbc\x50\x65\x1e\x9b\xf4\x62\x85\x37\xf9\x55\x5e\x26\xd0\x08\x75\x02\xbe\x05\x7c\x24\x16\x19\xfc\xf6\x03\x3f\xe6\xb9\xf6\x3b\xd2\x6d\x4b\x5d\x0c\xc8\xd1\x56\x79\x3a\x5d\xab\x4d\xe3\xf1\xf3\x4a\xd9\x7b\xd8\xa9\x4c\x0d\xad\xd8\x4b\x25\xb4\xc9\x8b\xc2\x3e\x50\x2c\x3e\xaf\x6a\xa9\x75\x9e\x8a\x57\xc7\x82\x9f\x26\xd6\x3d\x7c\xdb\xc1\x45\x1d\x31\xfc\xae\xbd\xe0\x67\x7c\xf9\x71\x07\xa5\x32\x95\x0d\xc2\x17\x62\xfe\x88\xd7\x6a\x12\xac\x77\x35\x88\xf3\x80\x90\x9a\x69\x49\xf4\x12\x86\x1a\x10\x0d\xfc\x0d\x18\xbf\x35\xbb\x8d\xdd\x93\xd4\x1f\xda\x54\xcb\xf7\xf6\xd9\x37\x90\xc3\xc2\x16\x1b\x99\xd4\x64\xb3\x46\xa3\xcd\x54\x96\xa9\x2a\x7e\x5a\x4d\xa2\xe7\x91\xa3\x36\xdb\xd8\x43\x28\xaa\xac\xf3\x23\x6f\x14\xd9\x92\xb9\xdf\xec\xa9\xb5\x30\x5e\xeb\x28\x36\xd4\x32\xc8\x07\xad\x03\x11\xbd\xdd\xf3\x87\x91\xf5\x4c\xd1\x8c\x38\x3c\x29\x8d\x58\x9b\xae\xd3\x63\x52\x07\x45\xcd\x4e\x56\xc6\xf8\x61\x45\x9d\x20\x08\x1d\x03\x34\x69\xe3\x81\x9e\x34\x7d\xbe\x68\xf4\xa9\xaa\xb8\x2f\x50\xb1\x06\xd5\x46\x4d\x7b\x97\xa0\xd0\xae\x2d\xf4\xf0\x8e\x42\x8f\x6c\xa1\xdd\xc8\xf2\x78\x21\x53\x14\x07\x07\xa9\xa9\x8b\xff\x54\x18\x55\x0d\x91\x1a\xc5\x40\x6d\x3c\x16\xbb\x3e\x94\x51\xa9\x11\x59\x2d\x67\x7d\x59\x66\xfd\xac\xae\x96\x28\xda\x43\xca\x51\x99\xfd\x5c\x57\xcb\x70\xcd\x39\x73\x3c\xf7\x32\xe8\x5f\x60\x99\xfc\x45\x9c\x63\x38\x97\x69\x0c\xc9\x2d\xb0\xbc\x14\xaf\x8e\x9f\xf4\x9f\x52\x70\x8c\x57\xfc\x52\x6d\xb5\x2a\x30\x4c\x26\x3e\xdd\x8b\xd7\x77\x78\x42\xb9\x56\xf8\x16\xfb\x86\x07\xc3\x9f\xb5\x9a\x92\x20\xca\xf9\x05\xbf\x84\xfe\x20\xcb\x2f\x1e\x04\xdb\x59\xc7\xbd\xf6\x8d\x2f\x95\x42\xc1\x9b\x1b\x4a\x85\x0e\xda\xc4\xad\x5b\x38\xa9\x02\xa8\x3f\x2f\xf5\xf2\xc4\xbe\x5e\xee\x69\xe1\x4f\x55\x57\xf8\xbe\x2f\x93\x49\xc2\xaf\x51\xfb\x05\x17\x55\x6c\xf3\x03\x34\x0a\xc3\x74\xe2\x7b\xed\x7a\x29\xcb\x4e\x4f\x74\x4e\x57\xbb\xc3\xe1\xa4\x63\x9d\x00\x41\xaa\x7e\xc9\x3e\x44\x47\x65\x76\x94\x65\xb6\x9d\x5e\x54\xef\x13\xc0\xea\x79\xdf\x0a\x8a\x36\xfa\x51\x5d\xa1\x03\x5c\xd2\xb9\xea\x74\xcf\xba\xde\x1b\x81\x61\x90\x93\x04\xc2\x1f\x50\x40\x54\x7e\x9d\x18\x43\x17\x39\x73\x9a\x46\x47\x10\x6f\x2e\x4f\x2f\x1c\x3f\x67\xcd\x44\x90\xc1\x80\x5e\x88\x5d\x7a\x82\xbd\xfd\xb9\x77\x4b\xb5\x74\xaa\xcc\x80\xc3\xc4\x8d\x1d\xb6\x8f\x8e\xd8\xe7\x35\x11\xe5\x0d\x87\x72\xd8\xb1\xf1\x38\x3b\xec\x35\xb2\x2f\xf2\x12\x4e\xd5\xfd\x49\x51\xa5\xe7\x07\xf4\x42\xf5\xbe\x18\x2d\xaf\x0e\xc4\x42\xd6\xb3\xbc\x24\x0d\xc1\xbe\xe8\x8f\x96\x57\x38\xf0\x80\x49\xe3\x79\xfe\x74\xd1\x87\x53\x39\xb4\xd3\xe9\x86\x6f\x1d\x66\x36\x84\xc0\x2f\xf4\xd0\x4f\x3f\xa3\x55\xf4\xea\xf8\x81\x16\x69\xbd\x5a\x2c\xae\x45\x5a\xe4\xf4\xae\x7b\x0a\x1f\xd0\x33\xab\xec\x40\xf5\x07\x3e\xac\x8a\xac\x44\x66\x3f\xe5\x59\xfe\x01\xb6\xd6\x48\x2e\xf8\x29\xc8\x58\xa7\xb3\xb0\x5a\x18\xfe\xd7\x2e\xef\x30\xdb\x45\x7a\xc2\x37\x57\xef\xa6\xaf\x8d\xc4\x74\x74\xba\x1a\x3e\xd9\x55\x47\x9d\xae\x8d\x1e\x53\x0f\x01\x1a\x46\xa4\x31\x57\xa4\x88\x1b\x75\x07\x33\x65\x7e\xe2\x0b\xb5\x97\x38\x04\x80\x83\x0b\x6c\x55\x8f\xe2\x3a\xa8\x8b\xbf\xa3\x4e\x8c\xac\x1b\x06\x2b\x14\xd6\x68\x82\x56\x0f\x07\xf8\xe4\xcd\x78\x0c\x5f\x6b\x7e\xa5\xb4\xc1\x23\xf0\x59\x71\x39\x95\x75\xee\xde\x59\x25\xdb\xe8\x92\xdf\x70\x92\x5a\x69\x91\xfc\xc7\xee\xde\xd3\x61\x30\xd9\xd1\x40\x8e\x45\x52\x8f\xa8\x01\xd1\x77\x6d\x89\xe7\xe2\x61\xd7\x3d\x59\x84\xfc\xba\xd3\x41\x0d\xa5\x8b\xcf\x31\xa9\xab\x73\x55\x06\xd2\x45\x0f\x4a\xe9\x0a\x9f\x6b\xbd\x00\x59\x9c\xc3\xdc\x17\xf8\xd2\x1a\xea\x60\x2e\xe5\x35\x70\x44\x82\xc3\xd1\x22\xc8\xc7\xb6\xc8\xe9\xad\xda\xa3\x15\x1a\xff\x75\x4e\xcb\xd3\x72\xc2\x2d\x26\x3b\xa7\xe5\x8e\x93\x0b\xef\x01\xd7\x3f\x0c\xc2\x80\xd2\x21\xc3\x6f\x64\xa4\x95\x1d\xf6\x44\xad\xf4\xaa\xb0\xef\x09\x17\xa4\x6b\xcc\xcb\x99\x57\x20\xb2\xe7\x1a\xea\x62\xc7\x22\x62\x69\x65\x50\xde\xca\xc4\x9d\x53\x58\x9f\xcb\x4a\x7b\xfe\x53\x16\x2c\x1c\x8b\x2f\x51\x15\xc6\x35\x30\x08\x24\xb7\x27\xce\xa6\x63\x33\xaa\x74\x39\x85\xed\x57\xcb\x02\x9f\x79\xc3\xc3\xd3\x29\x5a\x2c\x52\x8a\xd8\x17\x65\xe1\xe3\xf8\xd4\xee\x31\x63\x8f\x5b\xdd\xf1\x68\xd5\xc8\xf9\xfa\x81\xd9\x1b\x8d\x45\xf0\x7c\xaf\x3b\xd4\xd7\xc6\x69\xb5\x61\x20\xb6\xc7\x00\x7d\x9b\x6f\xc0\x1a\x77\x15\x4d\x28\x61\xc5\x31\xa0\xea\xea\xc5\x2e\x24\x54\x6f\xeb\x56\xec\xb7\xcd\x9b\x8b\x42\xcb\x83\xc3\x73\x5e\x9f\x96\x87\x37\x30\xf3\x07\x82\x7d\x8c\xe6\x52\x9f\xa8\xc2\x6a\x6a\xc5\x65\x5e\x66\xd5\x25\xac\x34\x9f\x1a\x12\x86\x61\xde\x62\xea\xeb\xc0\x05\x19\x38\x22\x97\xc6\x5b\x67\x18\xa9\x30\xf1\xb8\xcc\xc8\xc7\x11\x95\xd2\xaa\x65\x67\x8e\xbb\x61\x02\x19\x0a\xb9\x80\x6d\x11\x7f\xe0\x2e\x33\xa8\x2e\x4b\x55\xff\x6c\xd9\x90\x6b\x8a\x19\x12\x45\xc0\xea\xc6\x8d\x3a\xef\x2b\x02\x03\x2c\x01\x83\xfe\x91\x73\xaf\xdd\xab\xbb\x84\x7d\xab\xf8\x60\xc7\x1e\xab\x71\x8c\xb4\xe3\x32\x7b\x8f\x16\xf2\x49\x07\x3b\xff\xb1\x3a\x2e\xb3\x4e\x8f\x0a\x21\xb0\xe1\x96\x1f\xec\x97\xd5\xf2\x1a\x8f\xfb\xa1\xf7\x82\x48\x7c\x7f\x95\xdd\xf5\xb3\xfc\xa2\x63\x39\x58\xa7\x2a\xd3\x6a\x79\x8d\x02\x88\x6a\x73\xfe\x6e\xee\x49\x5c\xbe\x27\x3a\x54\xf2\x20\xdc\x99\xac\x3e\x61\x40\xa5\x70\x65\x58\x54\x3a\xac\x87\xe7\x3d\xe7\xff\xad\xaa\x85\xca\x2c\x5b\x8b\x9d\xd0\x68\xf3\x09\x4a\xb4\x6e\x3f\x21\x84\xd6\x0d\x28\x2c\xd0\xd8\xef\xbf\x5d\xc6\x01\x21\xa6\xeb\x2a\xd7\x0b\xb4\xcc\xc6\xbd\xfa\xee\x8d\x66\x5a\x57\x8b\x0f\x4c\x54\xb4\xdf\x40\xa5\xaf\x6f\x52\xed\xe8\x8f\xc9\x6d\x50\x4e\x74\x42\x48\xd0\x86\xd3\xf7\xcd\x60\x42\x57\xbc\xa0\xd0\x24\xa8\x9a\x44\x5f\xaa\xb1\xf8\x72\x4b\x6f\xfb\x2d\xf2\x85\x7a\x13\xa4\xed\xec\x88\xe3\x2b\x53\x4b\x17\x35\x88\x4e\x94\xf8\x5a\x9b\x75\xcc\x41\x20\x0f\xb4\xc8\xd4\x52\x95\x99\x2a\xd3\x5c\xe9\x1e\xbb\xd2\xe4\x78\x1f\x82\xd6\x1c\x93\x6b\x91\x14\x6a\x26\xd3\xeb\xae\x58\xa8\x74\x2e\xcb\x5c\x2f\xb4\x28\xf2\x73\x25\x8a\x4a\x66\x00\x65\xf0\x99\xb4\x00\x2b\x53\x2d\x24\xbe\xbd\x4c\xf1\xec\x20\x5f\x48\x6c\x68\x20\x92\xf7\xb5\x9a\xaa\x1a\x10\x70\x70\xec\x1e\x56\xab\x7f\xae\xf2\x5a\xed\x50\x54\x23\x7c\xb5\x5c\x0f\xba\x61\xe8\x59\x48\x87\x1e\x26\xa8\x43\x43\x90\x9e\x62\x5c\x2f\xbd\xce\x62\xd7\xaa\x49\xb0\xf1\xb0\x8f\xdf\xa1\x7f\x44\xd2\xc2\xb1\xfe\x04\xcd\x9e\x89\x31\xfe\x8a\xb4\x2c\x8c\xda\xab\x37\xc7\x09\xcc\x42\x4f\xe8\xa5\x4a\x09\x35\x37\x2b\x9f\xe0\xdb\x19\x86\xe8\x50\x69\xe3\xf5\x1e\xa8\xc9\x9a\x05\x29\xbe\x50\xef\x06\x83\x01\xbf\xf9\x7b\x8b\xa1\xfa\xf2\x99\x7b\xdd\x07\x1f\x70\x2b\x39\x0c\x18\x31\x6a\x17\xa8\x92\x46\x3a\xae\x11\x85\x03\xd7\x55\x71\x41\xa3\xe8\x91\x0c\x74\x85\x90\x18\xaa\x0b\x51\xbd\x6d\xfb\x30\x98\x4b\xfd\xee\xb2\x7c\x4f\x2f\x81\x5c\x13\x04\x1f\x5d\x03\x6a\x06\x1d\x86\x84\xb3\x58\x41\x8f\x65\xf8\x8e\x9c\x1b\x1b\x40\x47\xbe\xab\x45\xac\xd1\xee\x66\x1f\xb5\x8d\xe5\xbc\x4a\x9e\xdb\xe4\xb2\x81\x42\x34\x70\xc9\xc4\xb1\xe7\xf7\x3c\xac\x21\x31\xf7\x8b\xb6\x87\x77\x93\xcf\x3e\x94\xa5\x4a\xbb\xae\x04\x77\x83\xcd\xeb\x4a\xb2\xdd\xba\x8d\x0d\x25\x37\x0c\xef\xce\xdf\x3f\x9d\x5e\x9e\xf6\xcf\xb6\x4f\x77\xec\x97\xed\xab\x45\xf1\xc3\x0e\x7b\x37\x84\x83\xec\xf7\x70\x37\x8d\x1d\xb9\x5c\x16\x18\x26\xb7\x2a\x77\xae\x16\x45\xa7\xfb\x6f\xb5\xfc\x59\x57\xe5\xbf\xd4\x34\x54\xec\x84\x61\x60\x36\x34\x1c\x30\x71\x1e\x6e\x28\x71\x1b\x6a\x88\x5c\x24\x7c\x95\xc2\x66\xcb\xc5\x3a\xb0\x05\x74\xd6\x1f\xed\x47\x82\xc7\xb2\x89\x2c\xaf\x0d\xbf\xd6\x29\x4d\x88\xaa\x90\x69\xaa\x96\x46\x77\xf9\x59\x7f\x59\x66\xf4\xfe\x7b\x6e\x72\x59\xe4\x7f\xaa\xc0\xf4\x07\xe1\xad\xad\x9c\x99\x32\xd8\x67\xf7\x8c\xb7\x5f\x3e\x4c\x21\x6b\x6b\xcb\xc6\x55\x9b\xca\xd4\x54\xf5\x35\x73\x8e\x06\x71\x52\xac\x78\x2e\x12\x8c\xcd\x5a\x7b\x1d\x38\xd2\xed\x2c\x0b\x99\x97\x1d\xef\x2f\x0f\x10\x29\xd6\x8a\x85\xd1\xc0\xd0\xaa\x6f\xaa\x4c\x1d\x5f\x19\x55\xa2\xee\xf1\xdb\x96\x95\xba\xc2\xad\x29\xae\xda\x5c\x5a\x3e\x26\x4a\x5d\x2d\x51\xcc\xb8\x32\x3a\xb6\x0e\xba\x07\x49\xcd\x26\xa1\x78\xb7\x35\x28\xbc\x45\xf7\xdd\xe4\xf3\xc6\x4a\x9c\xff\xa9\xf3\x47\x47\x6c\x63\xd3\x96\x31\x43\x2a\xfd\xb6\xf0\xe2\xd4\x31\x22\x48\x3f\x22\xf1\xd8\x36\xc9\x0b\xd9\x75\xd3\x05\x35\x52\xe9\x60\x8e\x81\xb8\xc9\x92\xce\x21\x11\xa4\xda\x7a\x41\xca\x6d\x58\x1f\x6a\x40\x67\xe2\xc0\x59\x80\xcb\x0f\x23\x3c\x29\xc6\x85\x82\xed\xcb\x76\x80\x8c\xe6\xe2\x72\x2e\xe3\x36\xf2\xd1\xe2\x6a\xee\xca\x2b\x77\x17\x5a\x2b\x7e\x56\x82\x6e\xaf\xc3\x97\x9d\x4c\x15\x92\x3f\x99\x22\xa3\xdb\xed\xca\x68\x38\x46\xa2\x03\x78\xb0\x4c\x70\xe7\xcb\xc9\x34\xd3\x92\xa3\xa7\x15\x94\x44\xa2\xf8\xe0\xaa\xcc\x90\xaa\x17\x28\x2c\xf9\x86\x03\x31\xb6\x8d\xe8\x9a\x74\x40\x5b\xff\x61\x93\x34\xe1\xe7\x99\xd8\x6f\x52\x3b\xa7\xdb\xeb\x74\x10\x5d\x81\x8f\xfb\xd6\x7b\x44\xb4\x5b\xcd\x87\xd3\x4f\x8c\x34\x16\x57\x0d\xdf\x83\x48\x5c\xf0\x13\x1f\xc4\xa7\x38\xc2\xc1\xc1\x09\x32\x6e\x83\x65\x37\x70\xa0\xc2\x78\xe8\x51\x46\xc2\xd0\x9d\x18\xcb\xe0\xe9\xe8\xe1\x08\xa5\x44\x1a\xf1\x88\x50\xe1\x0b\x49\x87\x5d\x69\xd4\xa7\xd2\xef\x77\x90\x1c\x3c\xc3\x7f\xc4\x2f\x59\x73\xf1\x0b\x59\xb8\x27\x67\xcf\xdc\x7b\x30\x16\x08\x15\x68\xbc\x04\x83\x99\x6d\xbc\x97\x1e\xc7\x27\x94\x13\x17\x1e\x1b\xe7\x88\xd9\x2d\x90\x4d\x5e\x96\xaa\x76\x15\x38\xba\xa5\x51\xd6\x13\xcd\xbe\x1b\xeb\x02\x36\x72\x36\x0a\x8c\x40\x98\x01\x2f\x46\x50\x01\x1d\x05\x43\x42\x77\xed\xd3\x2a\x88\x85\x03\x23\xed\x6a\x38\xf5\x79\x39\xad\x98\xcc\x7c\x26\x4f\x83\x1b\xc2\x7b\x58\x0a\x5f\x0c\x99\x56\xb8\xde\xf0\x95\x65\x0e\x1f\x17\x86\x57\xb2\xf3\x85\x05\x69\xa0\x2c\xeb\xb1\xa9\x28\x35\x46\x23\x6a\xa1\x7f\x81\xac\x7d\x11\xf4\x65\x9f\xfe\x34\x6e\xed\xe1\x90\x18\x92\xa4\x1c\xf5\x84\xdc\x8d\xee\x45\xb0\x3f\xbe\x20\x2f\x91\x20\x25\xb1\x95\xf6\xc3\x17\xb8\x4f\x3e\x7e\x78\xf5\xf6\xaf\xf0\xe7\xf8\xe8\x0d\x6b\x1e\x33\x7b\xaf\x85\x9d\x58\xca\x5a\xa3\xe1\x03\x2b\x94\xb4\x20\x1e\x17\xbc\x13\x1c\xdc\xf2\x71\x69\xba\xca\xd3\xab\x34\xcd\x4b\xd8\x4c\x91\x45\x9c\xa0\x18\x70\x62\x6a\x25\x17\xa1\xe6\xdf\x0a\xb2\x46\x4e\x4e\xf2\x3f\xf9\xa1\xf7\x77\xb5\x4c\x0b\x15\x3c\xf5\x4d\xda\x0d\xfc\x6a\x8d\x12\x87\x36\x8f\x20\x38\xcd\x8e\x4d\x66\x80\x50\x8d\xbf\xdd\xdc\x88\xa7\x36\xb7\x90\xda\xbc\xac\x8a\xd5\xa2\x7c\xef\x41\xfb\x44\x7b\x31\xe6\x1a\x01\xac\x4e\x9a\x2d\x7b\x54\x6d\x28\x33\xfc\xb1\x75\x7b\xb0\xb5\x15\xf6\x37\x38\x6f\xa8\xaa\x08\x7a\x8f\x07\x79\x17\x6b\x9e\xfb\xf9\x62\x1c\xf6\x8b\xcf\x35\xb7\x07\x9b\x20\xea\xaf\x43\x1c\x8f\x1b\x9d\xd8\x0c\x6d\xa9\xd4\xf9\x5d\xe0\x62\x5d\x99\x6d\x01\xef\xf0\x5d\x64\xda\xcd\xd0\x31\x4e\x69\x03\xba\x15\x1b\x2d\xb2\xcf\x5b\x7a\xdf\x8c\x10\xb8\x19\x93\xed\x6d\x34\xf7\xd8\x88\x81\x92\x31\x02\x68\xf7\xe8\x79\x48\x3a\x17\xe3\x3b\x3b\x6a\xed\xf4\xce\x63\x69\x17\xc1\x34\xc5\xdd\xea\x1c\xe3\xc1\xd1\x13\xed\x90\x1f\xc8\xba\x36\x0f\x6d\x30\x21\x13\x45\x6f\x58\xb8\xee\x47\x02\x88\xed\x53\x02\x7c\xf7\x8f\xb5\x55\xe7\x5d\xf1\x65\x7b\xdb\x22\x75\xe0\x02\xd5\xcf\xbf\xd2\xf5\xdf\x91\x37\xde\xd1\x7f\xbb\xb8\x2c\x68\xcf\x4f\x31\x45\x49\xc3\x35\xba\x5f\x02\x8e\xe6\x49\x97\x00\xdc\x8d\xc4\xc9\x92\x9c\xb7\x9a\x54\xc0\xb7\x09\xf3\x5c\x93\x5b\xce\x3c\xd7\x07\x5b\x5f\xc5\x6b\xe7\xd3\xa9\xa6\xeb\x9a\x33\x3e\xbe\xdc\x35\x7d\x28\x45\xd2\xc8\xfd\x30\x42\x94\xff\xb5\x6e\xe8\xf3\x7c\x89\x8a\xbb\x66\x3f\xd6\xb9\xd5\xb7\x2d\x62\x84\x17\x01\x0b\xa7\xc5\x05\x87\x0a\x40\x5a\xb5\x73\x3a\xef\x89\x90\x3c\x31\x8a\x3b\x96\x7f\x41\xea\xe7\x00\x25\x4c\x3f\x08\xb5\x81\x77\x11\xcc\x44\xa6\xe7\xbf\x2d\x23\xa4\xca\x10\x5e\x7f\x2c\xca\xcd\xb5\x53\x64\xa4\x77\xad\xf6\x98\x07\x3f\x0f\xd8\x7b\x1c\xb3\x60\x8d\x2b\xa3\x99\x39\x25\x85\xb3\xdd\x0b\x20\xf4\xa2\x4d\xa0\xd7\xc2\xf4\xd7\xd2\x10\x7a\xb7\xad\xdd\xf7\x8d\xdd\x27\xde\xcf\x5b\x91\xec\xdb\x3e\xba\x7d\xe3\xf0\x2b\x68\xbb\x92\x31\xea\x5d\x7a\xa7\x75\xf3\x38\x03\x1d\x58\x47\x93\xf5\xc1\x76\x4f\x58\x6c\x68\x9a\x2e\x38\xe3\x06\xfb\x38\x06\xff\xb7\xf0\x67\xd6\x19\x60\xbe\x94\xc6\xa8\xba\xec\xa1\x65\xd1\x6a\x81\xe1\xf2\xb5\x7a\x55\x6a\x10\xec\x4d\x7e\xb1\x6e\xea\xc6\x35\x1a\x0c\xd8\xf1\x94\x14\x9d\x5f\xc6\xf1\xc5\x47\xf8\xc0\x47\x0c\x1e\xdf\xc8\xad\x07\xa6\x7a\x5d\x5d\xaa\xfa\xa5\x64\xd3\x73\x6d\xea\x83\xe0\x3a\x49\xaf\x26\xda\xd4\x8d\x45\x49\x89\x8e\xdf\xf4\x2c\x66\xd1\x3e\x86\x9e\x1d\x80\x52\x42\xc5\xf1\xae\x89\x12\xb8\x78\xb7\xe9\x67\x83\xe3\x10\xbc\x3f\x68\xcd\xf3\xf8\xba\x28\x6e\xc5\x1d\x81\x83\x75\xee\xcf\xbc\xeb\xb6\xae\x66\x6d\xd7\xa3\x9b\x29\xc7\x55\xd8\x3b\xc0\x22\xe7\xaf\xfe\xb1\x2a\x5a\xc2\xc2\xa6\x65\x4d\x59\x87\x6d\x8f\xdf\x35\x6a\x7c\xb5\x4b\x58\xd2\x3b\x0e\x30\x0c\xf7\xac\x94\xe1\x88\x91\x77\xf0\x9f\x55\x5d\xd3\xbd\x49\xb0\x26\xda\x64\x99\xa0\xb3\x21\xeb\x80\x8e\x6f\x86\x3e\xcf\x33\xf5\x0b\x59\x3c\x48\x34\xf3\x0b\x78\x64\x8f\x4e\x2a\x81\xf8\xea\x57\xd1\xf6\x58\x94\xcd\xfb\x30\x2c\xcd\xc6\x52\xd3\xbc\xc4\x67\x18\xbe\x34\x2b\x02\xb3\xbd\xb3\xbf\x45\x55\x9d\x1f\xcd\x95\xcc\xd6\x18\xb6\xf3\x2d\x60\x49\xb5\x21\xbb\x86\x0e\x01\x58\xe2\xfe\x7d\xfe\xe6\x61\x26\x25\x2e\x61\x92\xe4\xe5\x85\xca\x5e\x56\xa5\x89\x85\x39\x3a\x45\xf5\x84\xab\x13\xf4\xdf\x9e\x93\xec\x11\x89\x30\x08\x10\x76\xdf\x5d\x2b\x2d\x0d\x60\x3c\x4e\xdb\x0a\x7a\x50\x7c\x73\x5b\x14\xed\x93\x42\x7d\xba\xee\xfb\x18\x98\x98\xb4\x90\x57\xaf\xdb\x50\x02\xd9\x76\x88\x78\x31\x4e\xdf\x33\xe8\xdc\x8e\x45\x62\x60\x63\x8b\x7a\x24\xb6\x45\x19\xbd\x13\x10\x3c\x51\x5a\x8a\x17\xeb\xa8\xb9\x85\xd2\xc0\xb7\x5c\x7f\x8f\xa2\x15\x65\x90\xc1\x39\x02\x68\x73\xb3\x70\x48\x6d\x6f\x87\xfb\x74\xd4\x10\x2f\xef\xb5\x8c\x7e\x9f\xa8\xd3\xb5\x38\xad\xab\x05\x92\x4a\xd4\x10\xcd\x21\x24\x87\x91\xe8\x51\xb5\x82\x65\x03\xd5\x45\x48\x67\x8d\x03\x40\xa9\x2e\x2d\x81\xf0\x03\xf5\x4e\xa5\x02\x83\xcc\x47\x6a\xa8\x4f\xe4\xd0\x75\xb1\xb0\x31\x2d\x20\x1b\x2b\x92\xff\xab\xf0\xbb\xb6\x1b\xb7\x1b\x86\x1b\x4a\xc5\x72\x5d\xb5\xbc\x8e\x04\x6e\x43\x22\xcd\x32\x78\x5f\x16\x37\x5b\xdb\xa2\xa3\x1d\x6a\xd6\x13\x39\x9e\xe6\xdd\xaf\x86\x40\xd2\x9c\x34\x71\x88\xbd\x0a\x07\xd5\xae\xd8\x16\x12\x63\x4d\x04\xf6\x29\x8c\x08\x2d\x85\x36\xd7\x85\x62\xd7\xa7\xc4\x39\x41\x21\xe3\xc4\x07\xfb\xf0\x3d\x03\x52\x1e\xcc\x54\xa9\x6a\x14\x4c\x00\x44\xbf\x8f\x1a\xad\xbc\xbc\x90\x45\x9e\x91\xbc\x82\x69\xf4\x44\x95\x98\x5c\x8b\xa5\xcc\x29\x42\x8a\x2a\x33\xa7\x19\xd2\x5e\x6f\x04\x2d\x13\xd3\xd6\x5d\x7f\x5f\xe9\xf4\x9a\xf3\x7c\x36\x2f\xd0\x74\x06\x7d\xec\xab\x73\x55\x6a\x36\xca\xc7\x2b\xc9\x46\x20\x73\x5b\x9a\x43\x05\x5b\x12\x49\x69\x70\xf0\xcd\x9e\x54\xa1\x90\xef\xac\x13\x8f\x08\x09\x76\x10\x16\xb2\xb8\x94\xd7\x3a\x7e\xca\xc1\x3d\x31\x02\x52\x59\x3e\xbd\x66\xe3\x7e\xaa\x0f\xc3\xb2\x43\x4f\x74\x5d\xb3\xff\x01\x59\xf3\x90\x7b\x2e\x90\x07\x8c\x91\x92\xfa\x3a\x1a\xa8\xee\xc0\x91\x8b\x18\x8b\x4f\xe9\x82\xa6\x1c\x29\xe2\xaf\xaa\x3c\x23\xdc\x5f\x16\x52\x6b\xbe\x08\xe6\x10\x7d\x41\x20\x6f\x68\x22\x88\xb7\x88\xfd\x00\x9a\x59\x95\xa8\x03\xb3\x03\xc0\x1e\x63\x14\x18\x99\x49\xce\x0f\x89\xa3\x62\x7c\x91\x0c\x81\x44\x4a\x50\xb2\x4b\x09\x32\x0f\xc4\x6d\x2f\x70\xcd\x0c\xd0\x8c\x06\x78\x6d\x35\xd0\x32\x22\x22\xa4\xbe\x7c\x58\x95\xc2\x0e\x5d\x4f\xc8\xec\xf3\x0a\x83\x5e\x38\x6a\x1c\xb8\x08\x8d\x55\x7c\x66\x11\x95\x88\x02\x94\x11\x0c\xb2\xef\xa7\x61\xb4\x60\x3f\x55\x67\xf4\xba\xc0\x88\x5d\x80\x87\x58\x2b\xc2\x26\x0c\xd1\xbb\x61\xec\x18\xdc\x37\x0e\x5e\xe0\x2d\xe4\x5c\xa4\x39\x6d\x67\x47\x1c\x97\xf8\xf6\x3b\xfa\xa0\x3f\xd0\x42\x12\x59\xe3\x02\x61\x7d\xa9\x95\x73\xec\x7a\x21\xf7\x44\xa2\x2d\xc1\xb1\x18\x91\xce\x18\x28\x9f\x9b\xa5\x21\x17\xfd\xa6\x9b\x76\xfe\x07\x3f\x29\x61\x6c\xd0\x5e\xe7\xa9\x84\x39\x2f\xb0\x52\x30\xa5\x5f\x60\xda\xed\x03\xd8\x68\x7a\xc7\xdd\xfb\x94\x6f\x8f\x60\x3c\xff\xc0\x56\x02\xdf\x5b\x10\x82\xbc\xbf\x2e\x0e\xb4\x0b\x9f\x8c\x75\xa9\x4a\xe4\x62\x6b\x9f\x09\x69\x50\x5c\x98\x69\x87\xbd\x5a\xca\x7f\xae\x54\xd8\x2f\x8f\xa0\xf5\x05\x17\x7d\xeb\x16\x8e\x0d\x76\x2c\x51\x74\xc4\x36\x4f\x4c\x80\xee\x98\x27\x66\xdb\x61\xbd\xe6\x3f\x8e\xba\xfa\x03\x2e\xf7\x5c\xe4\xf6\x2b\xf4\x34\x76\xd4\xf6\x91\x91\xb5\xf9\x84\x85\xb6\x47\x67\x41\x7e\x90\x2a\xc6\x14\xdc\xff\x10\x2b\x6c\x8b\x8e\xc0\x48\x0c\x9d\x2e\x7c\x5f\xc3\x78\xcd\xcb\x99\xdd\xc0\x22\xde\x80\x17\xb5\xa8\x55\x71\xb7\x0b\x15\x39\xa4\x54\xe2\xf9\xfa\x82\x08\xdc\x53\xaa\x2e\xae\x2c\x5c\x4d\x07\x5b\xeb\x8b\xc2\x2d\x55\x7b\xc9\x4b\x1c\x06\x36\x92\x9e\x48\xa9\xf5\xfd\x10\x95\xc1\x64\x86\xdf\x40\xbc\x0a\x93\x01\x2a\x65\x1c\x46\x5c\x6d\x1f\xc5\xa2\x35\x07\xc7\xd7\x28\x21\x43\x53\x01\x0f\x5f\x2d\x33\x69\xd4\x2f\x75\x55\x9a\xdc\x0a\xe2\xee\xe1\xa1\x01\xf3\x70\x6e\x97\x7f\x7e\x1a\xa2\xe3\x7e\x93\xb5\x46\xc7\x48\x27\x92\xce\x94\xe1\x3d\xf4\x27\x0c\x93\xe1\x9a\xb6\x8f\x09\x05\x76\x82\x4a\x2b\xd6\xca\xaf\x3f\x3a\x20\x5e\x40\x83\x7c\x73\x0b\x5b\xf0\xaf\x6e\x53\xa2\x7c\x3c\x29\x59\x41\xa0\x8d\x27\x0f\x82\xbb\x0b\x6e\x8e\x0c\x2e\xbf\xb2\xbd\x05\x86\x8a\x0e\x41\x7b\x2d\x1b\x4e\x6b\x80\x3e\xd1\x13\x0f\x99\x34\xea\x88\x83\x90\xb8\x2a\xf2\x42\x25\xf7\x02\x70\x61\x79\x1c\xf1\xb1\xb5\x5e\x74\xbb\x8f\x43\x01\x52\x99\x4a\xba\xfc\x88\x13\x95\xf2\x9b\x5a\x5c\xaa\xe9\xca\xb0\x56\x63\x13\x98\xc6\x89\x34\x26\x15\xbc\xda\xe3\x71\x76\x23\xe8\xe8\xc8\x59\xb1\x07\x33\xe1\x6b\x0a\x17\x1e\xbe\x25\xbb\x27\xb6\xb7\x37\xc2\x6d\xda\x6a\x06\x63\xd6\x24\xf7\x75\xb2\x2b\xd1\x8d\x2f\xcd\x75\x70\x15\x16\x3e\x6e\xd0\x13\x6c\xbd\x1e\x3d\x80\x60\x17\x84\xc5\x33\xb8\x2b\xea\xde\x21\x07\xc3\xd6\xd7\x13\xa5\xbf\xb2\xb4\x5b\xd6\x34\x2f\x33\x3c\xa8\x3a\x72\x0b\xf0\xb2\x65\xf9\x34\x40\x75\x5e\xf8\xa7\x15\x80\xcc\xa3\x47\x17\xa8\x44\x5f\x8c\xba\x01\xa9\x6d\x35\x57\x21\xc1\x3b\x14\x6b\x27\x8e\xe8\x94\xc1\x0a\xc5\xfd\xf5\xce\x04\xd7\x63\x76\x18\xba\xb6\xfc\x56\xf8\x52\x03\x6f\x15\x65\xb8\x87\x87\x6f\x36\x2c\xeb\x2a\x55\x5a\x47\x2b\xcd\xca\x51\xe1\x72\xf3\xa6\xd1\x76\xcd\xf8\x47\x32\xd6\x96\x15\x5f\xdc\x60\x5c\x3f\x8c\x80\x57\x69\xf1\xa3\x78\xec\x22\xa4\xf2\x55\x11\xcf\xe7\xe0\x22\x57\x97\xbf\xd4\xd5\x02\xe3\xec\xa1\x3a\x35\xcc\xf9\x58\xe1\x91\x22\x58\xa8\x5d\x66\xa8\x91\x84\x63\xcf\x86\x68\xb3\x78\x6b\x8f\xa5\x9e\xbc\x44\x0b\xd5\x87\x5d\x09\x89\x98\xd3\xf9\xaa\x31\x0c\x26\x30\xad\xea\x05\xc8\xa0\x5e\x5e\xef\xf7\x69\x0c\x41\x06\xbe\x50\x74\x09\xc0\x0f\xd9\x91\xec\x4f\xab\xd4\x1e\xfe\x27\x2b\x23\xb2\xaa\x7c\x60\x70\x8e\xe3\x43\xc9\x40\xfc\x66\xe3\xcc\xfb\x50\x0e\xfc\x1e\x1b\xd4\x60\x71\xa9\xb8\x16\x17\xb9\xce\x27\x45\x78\x24\x68\xce\x63\x34\x85\x4c\x19\x47\xc1\x93\xce\x7c\xcf\x1b\x2c\x77\xb7\x2a\xf8\x9a\x13\x8f\x5c\x81\xbe\x26\x71\xd2\xb5\x65\xfa\x4e\x43\x1d\x50\x0a\x55\x77\x37\x9d\xfc\x93\x28\x87\x91\x20\xa5\x04\x1f\xd2\x71\x39\x8c\x51\x32\xf8\x82\x16\x94\x3f\x15\xb2\x3c\xc7\x6e\xb4\x6d\x16\xe1\xb3\x7a\xf7\x18\xb8\xaa\x8a\x24\xb0\xf9\x92\xd9\x47\x90\x33\xdd\x45\x3b\x94\x69\xdd\x73\x36\xa2\xba\xe6\x7d\xde\x86\x57\xc3\xba\x02\x19\xd1\xc4\x96\x69\x9a\x4d\xb8\x8c\xd0\x6c\x82\xec\xa8\x9a\x77\xfd\x4d\x7f\x5e\x32\x42\x18\x6f\xb0\x20\xb0\x4e\x61\x90\x39\xd8\x88\x43\x5b\x36\xd7\x71\xf8\x84\xfd\xdd\x34\x88\x4c\xc3\x81\x8a\xb0\xcd\x37\x78\x04\x7f\xb7\xb7\x43\xb7\x3f\x5b\x83\xaa\x82\xbc\xb2\xa9\x43\x64\xb3\x10\xa8\xaa\x71\x79\xb0\xd9\x03\x1e\x20\x92\x08\x1b\x2f\x0c\x04\xa4\xf6\x22\x9a\xdb\xe8\x94\x07\xd0\xec\x96\x65\xe6\x75\x75\x89\x74\x7e\x5c\xd7\x55\x9d\x74\xd0\xee\x0e\xa4\x52\x6c\x0d\xcd\xaa\x40\x74\x9d\xca\xbc\x60\xf3\xa3\xec\x02\x83\x1b\x32\xf8\x4e\xd7\x9a\x36\xe3\x68\x35\x6c\x03\x10\x49\xb2\x91\x0d\x88\x25\x32\x04\x08\xd1\xe4\xe8\xd5\xf6\x08\x13\x10\xe3\x9a\xa9\x00\x64\x31\x33\x40\x76\x47\x97\x16\x3e\x2c\x31\x86\xba\x20\x06\xd9\xa2\x57\x04\x21\x7a\x67\x47\xfc\x66\xc8\x7b\x17\xa6\x70\xa6\x0c\xf6\xe0\xc8\xe0\x09\x8c\x37\x34\x4c\x0a\x5c\xb0\x8c\x3c\xa7\x34\xe4\x30\x74\x47\x40\xfc\xb5\x27\xa4\xb6\xe6\x3a\xad\xfb\x38\xb3\x9b\x40\x03\xc5\x72\x3f\xef\x29\x45\xbe\x7c\x5f\x69\xda\xdb\x82\xbb\xea\xb6\x67\x39\x97\x15\x29\xfa\xba\xbd\xaf\x49\xb5\xb6\xe4\xfa\x6e\xbe\x91\xc7\xc5\x6a\x84\x8d\x8c\xae\xc7\x2a\x1a\x6b\xc9\xed\x3a\x6f\x55\x37\x63\xf1\xe9\x2c\xe4\x55\xb6\x08\x3e\x8c\xe7\x09\xf5\x39\xe2\x98\xce\xbb\xf4\x68\x5f\x0b\x3f\xbb\x8b\x49\x09\xb7\x3a\xbe\x83\xeb\xb5\xe2\xeb\x43\x20\x7d\x6c\x2c\xb1\x6b\x7c\xf2\xb9\x45\x85\x18\x83\xee\xae\x09\x82\xb6\xc3\x87\x76\x48\x48\x8a\xd9\x00\x3f\x42\x33\x72\x51\xbe\x32\xb5\x4c\x71\xfa\x59\x0e\x66\x27\xf7\x6a\x65\x96\x2b\x13\x5f\xa7\x39\x1b\xc5\x83\x83\xe6\x0b\x7b\x74\x2c\xa3\xe5\x61\x23\x46\x25\x87\xfb\x7f\xbf\x39\xd5\xdb\x5d\x74\x8c\x4c\x26\x32\x3d\x9f\x61\xe8\xcb\x7e\xf7\x30\x39\x3d\xd9\xee\xee\x04\x86\x55\x0e\x48\xd3\x90\x2a\x58\x77\xde\x2d\xca\x95\xa6\x9b\xa5\x2e\x07\x6d\xe1\x02\x8d\x5c\xb1\xed\xcb\x07\x91\xb0\xbc\xdc\x45\x1e\xc7\xbe\xcc\xe8\x4c\x1c\x8a\x0e\x1f\x42\xf1\x60\xed\x4e\x9e\x1d\x87\x31\x0d\x90\xb5\x21\x65\x77\x14\x77\x0c\x88\x73\x03\xd8\xbb\x67\xcd\xe3\xc9\x3d\x24\x8c\x0f\x6a\x76\x7c\xb5\x4c\x3a\x3c\x68\xdd\x4e\x84\xf5\xee\x19\x70\xca\xe4\x70\xff\x07\xcc\xeb\x76\xc9\x9e\x21\x6c\xa5\xbb\xa1\xf1\xed\x31\x6a\x07\xb6\xd7\x71\xb8\x8d\xae\xaa\xaf\x97\xee\x99\xea\x55\x19\xc4\xc7\x62\x87\x10\x32\xe0\x22\x19\xcc\x3e\xf2\x07\xfb\x36\xfa\x98\x0a\x52\x4d\xa6\x73\x22\xc6\xd0\xbd\x20\xd0\x83\xd1\xba\x6f\xaa\xbe\x7a\x1b\x35\x7f\xde\xc6\xa1\x90\xc6\xa8\x92\x9e\x9f\xe5\xbd\x2a\x4c\xb3\xa6\x0d\x51\x31\xef\x20\xd4\xa8\x1e\x30\x9e\x28\xc7\x4a\x04\xe9\xaa\x76\xe6\x5c\x3d\xfa\x45\x5c\x80\x59\xfe\xbf\x2b\xc5\x79\xe6\x1c\xca\x1f\x41\x0d\x99\xa1\x49\x2c\x2d\xa9\xfb\xf7\xc5\x27\x68\xf8\xac\x55\xa2\x6b\x59\xbe\x5f\x17\xf2\x62\xb5\xcf\x57\x45\xbe\xb5\xcd\xff\x4e\xbd\x44\xf0\x28\x5a\x3c\xec\xf6\xfd\x36\x0b\x32\x9a\xe8\xaf\xcb\xd7\xb6\x7d\xaf\x2e\x8c\x64\xdf\x40\x73\xe2\xb2\xa3\x59\x5b\xd3\xcc\xd9\xfc\x96\x21\xfc\x26\x76\x6f\xe5\xb4\x35\x25\x5a\x18\x5d\x2f\x10\xe5\x2c\xb7\x59\xbc\x25\x73\x72\x2b\xaa\x59\x93\x72\x5b\x05\xf3\xbb\xa8\x3b\x25\x04\x3b\x8b\x3e\x2c\xdf\x84\x7e\x1f\x32\x80\x6d\x5e\xd5\x94\xba\x2f\xb8\x5a\x33\xea\xe0\xbd\x68\x16\x6e\x6e\x3c\x3d\xdf\x1b\x37\xf5\xcc\x4c\x04\x8e\xfe\x9f\x37\xc5\x3c\xa7\x47\x0c\x96\x88\x53\xcf\x86\x65\x7b\xbe\xc4\xb6\x78\x3c\x1c\x86\x71\x73\x1d\x7c\xbf\xb6\x9a\xfa\xdc\x60\xcd\x79\xfd\xe5\xed\x37\x1c\x2a\xee\xe8\x03\x92\x0e\xf5\x60\x67\x47\xfc\xae\x26\xe7\xb9\x11\x5a\xa9\x05\x9a\xa9\xd6\x6a\xba\xd2\x8a\xbe\x95\x18\x13\x16\x96\x19\x46\xac\xa3\xd7\x25\xd1\x84\xb9\x14\x8f\xf7\x1e\x3d\x7a\x64\x81\xf8\x17\xae\x48\xb1\x6e\xbd\xbc\xf3\x52\xa6\xe9\xaa\x06\x99\x90\x3d\x0c\xc9\xd9\x2e\x27\x4f\x7e\x17\x5f\xdb\xdd\x8c\x49\xdc\x15\x71\xa0\x10\xa8\x1e\x34\x74\x02\xcd\x41\x46\xd9\xb0\x75\x88\xa7\x89\xcf\x73\x23\x1b\x4c\x57\x70\xfc\xe2\x17\x34\xb5\x7f\x46\xde\x54\xac\x5e\xc1\xfb\x2a\x7c\xb2\xdc\xe3\x48\x3b\xc0\x40\x7c\xac\xc9\x2d\x00\x63\x23\xa2\xe7\x0c\x55\xe6\x3b\x2e\xaf\xa8\xe8\x09\x5d\xb9\x8b\xac\x54\x96\x21\x6c\x09\xb5\xf1\x12\x8b\x2a\xf0\x63\x24\xd2\xe0\x61\x40\xe3\x73\x23\x76\x38\x1d\x7a\x58\x93\x6f\xec\xf4\x42\x16\x85\xd2\x46\x04\x36\x4e\xf6\xde\xcf\xa8\x92\x02\x10\x95\x4a\xf1\x03\xa1\x4a\x6a\xe3\xc4\x59\xc2\x1d\xbb\x23\xd2\xaa\xae\x55\x6a\x8a\xeb\xc6\x3b\xa1\x1b\x15\x56\xfe\x84\x9f\x97\xd4\x76\x0f\xbe\x72\xd8\xc6\xf8\xe5\x50\x12\x8e\x16\xf4\x08\x01\xd4\x16\x87\xa2\x8f\xde\xe2\xa2\x2f\x42\x55\xa0\x3f\xa1\x8a\x43\x31\x02\x32\xd8\x87\x3f\x51\x74\x28\x4d\x41\xe1\xc7\xa2\x3c\xb0\xdf\x5f\x00\xf4\x03\xd1\xef\xd3\xef\x88\x61\x53\x89\xe7\xe3\xe0\x95\x52\x7f\x4e\xf3\xea\xb5\x35\x1f\xf8\x58\xd9\x46\x50\xfa\x62\xd4\xed\xb9\xc8\xd2\x0d\x7d\x94\x97\x7a\x31\xff\xfe\x7d\x91\xdc\xb3\xdd\x05\x69\x9c\x40\x6c\xdb\xfc\x0d\xb7\xf8\xe2\x90\xe0\x07\x66\x13\xfb\x62\xd8\xb5\x1d\x08\x15\x4b\xeb\xef\xa8\x73\x1b\xbe\x2f\x34\x31\xfc\xde\xad\xb7\x4c\x0b\x4e\x1f\x64\xdc\xb6\xbe\x4d\x07\x16\x4c\x34\xa9\xe1\x6b\xdd\x6e\xca\xc5\x0b\xd7\x84\x67\x8b\xae\x42\x30\x6c\x3e\x8b\x2b\x8e\x5d\xc5\x36\x4f\x7c\x06\xd1\x50\x16\xc0\x9a\x77\x1a\x61\x9a\x18\xbe\x7c\xd8\xa8\x69\xce\xcb\x64\x5d\xcd\xec\x8c\x49\x5a\x55\xcd\xe2\x39\x29\x14\x87\x6d\x41\xcf\x98\x7b\x38\xba\x09\x09\x93\x3b\xcd\xaf\x8c\xe0\x2f\xb6\x92\xa5\x5f\xfd\x7e\x78\x58\xb0\x9a\xde\x88\xce\xf0\xbc\xd9\xa4\x29\xff\xd4\x51\x8e\x77\xf5\x0f\x03\xbe\x69\x30\x42\x3d\xb6\x35\x42\x73\x1c\x95\x09\x89\x54\xb3\x2b\xfa\x7d\x60\x3c\x5a\x5e\xfa\x1a\x68\x40\x3d\x12\xdb\x62\x57\x3c\x17\x0f\x85\x9e\x57\xab\x22\x13\xa9\x53\x28\xfa\x65\x83\xd8\x21\x0d\x7f\xc5\xea\xc4\xde\x11\xc1\x16\x1c\x5b\x8e\xc0\x40\x06\x56\x7a\x76\xec\xb8\xb0\x25\x09\x3c\xe2\x44\x34\xd0\x3e\x2b\x8d\x19\x5d\x2b\xe0\xb4\xd2\xac\x4c\x7d\xf5\xf6\x58\xfc\x7c\xf4\xf1\x48\x9c\x7c\xfc\xf0\xdb\xcb\x8f\xbf\x7d\x38\x66\x25\x6b\xe9\x7c\xb8\x06\xe2\xe3\x5c\x69\x25\xe6\x55\x91\x39\x9f\x9a\x42\x1a\xd6\xc1\xb0\x70\x8f\x6f\xca\x67\x79\x39\x83\xea\xae\x59\x8a\x43\x3e\xad\x44\x42\x0e\x39\xde\xe4\xa1\x4b\xfe\x5e\x0d\xfb\x21\x96\x87\x83\xe7\xf5\x7b\x42\x69\x93\x2f\xa4\x51\x14\xbc\x27\x50\xdb\xb0\xb2\x01\x75\xc3\x82\x7d\xd1\xde\xf8\x9a\x1c\x70\x2d\x80\xe5\x94\x33\xf6\x61\xef\x06\x6c\x71\xd8\x48\x40\x10\x5d\xe0\xae\xa8\xa6\x01\x64\x43\x93\x2d\xbc\xa6\x6b\x5a\x3f\x85\x57\x2f\x6f\x2b\x86\x70\x7b\xb0\x15\xc4\x9e\xa3\xa7\x9d\xb7\xe8\xe5\x43\xfb\x4e\x06\x6e\x37\xa5\x11\xe1\x10\xd4\xba\xeb\x5f\x49\x1f\x88\xa3\xa6\x6f\xbc\xb3\xec\xc0\x58\x93\xe9\x1c\x09\x70\x5a\xd5\x0b\x32\x8a\xc1\xeb\x7b\xde\x7f\x45\xad\xfa\xb6\x73\xa1\x1d\xcb\x03\xcd\x0f\xf1\x07\x3b\x1a\xe9\xc8\xdd\xab\xfb\xee\x28\xf6\xb5\x59\x71\x0c\xd3\xcf\x4a\x70\xa1\x66\x57\x6b\x70\x9d\x16\x5c\x52\xb8\xcb\xb4\xf8\x0a\xae\x71\xf9\xa6\x5b\x4b\x52\xd0\xe2\x20\xc6\x43\x14\xca\xd8\x95\xa7\xd0\xad\x21\x85\xd8\xb0\x27\xeb\xb4\x43\xfd\x6e\xd0\x0e\xba\x17\x6a\x1b\x45\xea\xeb\xd4\x43\x37\x3b\xfb\xb8\x88\x31\x48\x9a\x0e\x42\x59\x05\x2f\xcc\x03\xca\x7e\xcc\x83\xca\x3d\xdf\x9c\x8f\x3d\xfa\x33\x76\xc3\xca\x51\x6b\xaf\x16\x08\x53\x2b\x72\xa9\xcb\x8d\xb6\x64\x14\x4c\x6e\x5a\x28\x59\xfe\xb6\x74\xb3\x1b\x4c\x1d\x85\x23\xf1\x87\xa0\x4d\x03\x66\xdf\xf6\x2f\x2f\x54\x6d\xfc\xa5\x89\x66\xd2\x27\x13\x2c\x36\xdd\x4a\x54\x8e\x8f\xbf\xd2\x0e\x8a\x91\x07\xd8\xbb\x0a\x03\xac\x95\x86\x9f\xef\xa8\x80\xe1\xd4\xec\xf0\xc5\x33\x8f\xec\xe5\xe5\xc9\x09\x25\x0c\xc8\x05\x35\xb7\xa4\xee\x82\xa0\x62\xe8\x68\xe0\xa7\xda\x5d\xd6\xf4\x2f\xf3\xcc\xc2\xe1\xa8\x44\xf0\xfd\x63\x85\x07\xaf\x97\x18\xb9\xdb\x47\xbe\x58\xcb\xfb\x3d\x37\xf3\x37\xa4\x23\x85\x32\x81\xdf\xa0\x51\xf5\xb2\x66\xf5\x2c\x8a\xcc\x09\x2b\xcd\x58\x30\x08\x2c\x04\x68\x54\x6e\x6e\xc4\xce\xdf\x4f\xf5\x5f\x9c\x4b\x3c\xca\xd9\x6d\x76\xcd\x64\x5f\x4e\x98\xb5\x9e\xed\x0f\xef\x40\x74\x7f\x3d\x2f\xb8\x40\x83\x9f\x9f\xb0\xc0\x99\xb8\xb9\x21\xa3\xfc\x28\x91\x4f\x4e\x03\x7e\x4c\x23\xd9\x39\x3d\xd9\xde\x99\xf5\x44\x27\x5d\xf4\x7f\xb8\xdf\xe9\xda\x39\xff\xc0\xc7\x1d\x0e\x7f\x5b\xab\x65\xad\xb4\x73\x1a\xa8\xc2\x37\x69\x02\xb6\x05\xf3\x83\x0f\x4f\x50\x44\x90\xa5\x90\xe2\x01\x12\xef\x42\x2e\x1f\x58\x31\xdc\x1b\x18\x59\xe8\x74\x9e\x62\x4f\x7c\x6e\x08\x85\xf9\xa5\x4a\xf3\x69\x9e\xe2\x59\xcd\xa4\x73\x45\x4f\xd2\x20\x8f\x42\xba\xd7\x2e\xea\x08\xba\x1f\xe2\xa1\x0a\x68\x0c\x9f\xa8\xb6\xe1\x7b\x1d\xad\xd2\x36\x67\x69\x51\x47\xcd\x93\x49\x23\xe0\xd9\xf3\x2e\xff\x01\x83\x9d\x54\x2b\xb3\x46\x70\x36\x86\x27\x50\xb2\x32\x0e\x0d\x6c\xdc\x91\x12\x8e\x07\x6a\x11\x88\xef\xbb\xeb\xde\xbf\xe5\xea\x32\x0c\x62\x28\x96\x12\xdf\xf3\xa0\x80\x70\xa4\xf0\x22\x24\x15\xc5\x0d\x42\x83\x45\xba\xbd\x7c\x30\x41\xa6\x67\xc7\x94\x60\xe4\x9a\xa3\x80\x82\x0c\xc4\x27\x59\x53\x89\x89\x12\x72\x52\xe0\x29\x6e\xa6\xb8\x13\x14\xd2\x7f\xc2\x91\x67\xa8\x3a\x9c\x77\x64\x39\x2b\xf8\x5d\xde\xdc\x88\x24\x2f\xed\x49\xf5\xe5\x5c\xd6\xce\xa4\xd0\xee\x60\x18\x46\xe8\xbd\x8b\x90\x43\x2b\x9f\x3e\x2f\xa9\xf9\x43\xd1\x89\x7a\xb5\x2f\x06\xa3\xe5\x55\x87\x2f\x92\x2d\xab\xc5\x21\x42\x16\xfe\x65\x59\xab\x7d\x86\xba\xac\x55\xa7\x27\x3e\x71\x63\x67\x3d\xd1\xf1\x81\x97\xfb\xd0\x8b\x8e\xbd\x8a\x28\xcd\xbe\xfd\x12\x5a\x0e\x5a\xa5\x44\x55\xec\xe3\x7b\x93\x95\xc6\xbf\xe9\x62\x5f\xa4\x8b\x96\x82\xa6\x96\x79\x91\x97\x33\xf4\x36\xdb\x27\xc5\x54\x4b\x31\x8c\x74\x85\x65\xf4\x3e\xc6\x85\xbc\xb9\xe1\xee\x76\x39\x82\xf0\x4c\x99\x77\xb8\xae\x93\x0e\xe0\xf9\x7b\x2d\x97\x4b\x74\x30\xb9\x65\x06\x0c\x53\x3f\xe0\x91\x25\xdb\x4b\x9a\x82\x57\x46\xa1\x7a\x80\x05\x50\x25\x8a\x6a\x06\x42\x40\xf8\xc4\xc0\x42\x9e\x2b\x7a\xd7\x25\xd7\xfc\x74\x35\xdb\xa9\xb6\x5e\x0b\x8e\x69\xeb\xc4\x16\x6b\xf2\x17\x8c\x7e\x5b\xb3\x22\x38\x55\x45\xf7\x87\x81\x08\x9f\x37\x2b\x7d\xca\x41\xa8\x3f\x13\xfb\x3e\x99\x76\x31\xbb\x15\x47\xcf\x22\xf1\xf4\xb2\x46\x6e\x18\xa5\xc9\x2c\xb3\x77\x78\x98\x84\x3f\xac\x78\x4e\x83\x88\xce\x0d\x97\x79\xad\x5c\x84\xbc\xb9\x4c\xcf\x35\x3d\x7b\xe3\xcc\x76\xfb\xa4\xa0\x21\x6a\xa6\xd7\xa7\xfc\x93\x3e\xa6\x12\x99\x92\x05\x69\x0a\x26\x75\x75\xa9\x55\x2d\xfe\xb9\xca\xeb\x73\x56\xa9\x00\x1f\x6f\x46\x3a\xf4\x96\x2f\x03\x17\x75\x0a\x4e\x00\xb6\x8f\x8d\xa7\x19\xf8\xd8\xee\xdf\x4d\x08\xce\xa3\x77\xf6\x96\x1b\x4d\x9a\x85\x78\x34\xad\xee\xce\x66\x53\xa0\x79\x7e\x90\x16\x03\x59\x17\x45\x75\x69\xc5\xfe\xdf\xc8\xea\x61\xec\x26\x86\x2d\xd4\x6c\x4f\xd4\x15\xc6\xf5\x2b\xde\x50\x8f\xf0\x4c\x13\x5a\xa1\xd1\x68\x94\x5a\x91\x96\xc3\xf2\x2c\xea\x22\xa3\xd0\xdb\x68\x44\xd7\x82\x4a\x10\xf6\xb3\xcd\xde\x2a\x50\x70\xae\x65\x5b\x73\xbf\x30\xca\xbd\x1d\x05\x6b\x09\x38\x16\x9f\xab\xbc\xb4\x0a\xda\x8d\x20\x7a\x6b\x15\x6f\x6e\x50\x55\x7e\x7b\x27\x02\xee\x7a\xa7\x0d\x05\x6f\x75\xf8\x35\x24\x5c\xc9\x5e\x4b\xe5\x08\x11\xff\x66\x15\x5b\xf1\xe2\xf3\x68\x52\xa3\xf0\x45\x2f\x87\x62\xe0\xb2\x5c\x0b\xde\x27\xf1\x66\xc4\x6f\x7d\x9e\x9c\x03\x7a\x09\x5f\x4a\x5e\x27\x4a\x28\x80\xf7\x90\xf4\x28\x8c\x4d\x66\x86\x3a\x90\xcb\xa5\x2a\x33\x8c\x90\x96\xac\x45\x9d\x6d\x59\x23\xd1\xc3\xc6\x27\xa6\x22\x53\x64\x7c\x00\x81\xc2\x3f\x90\xe8\xc3\x9b\xb1\x0d\x79\x6f\x4d\x92\x43\x86\xe7\xb5\xe5\x84\xb9\x7f\x61\xa6\xc1\x42\x79\x4d\x04\x1d\xda\x54\x30\x75\x02\x61\x9b\xea\xff\x20\x69\x83\x4c\x51\xdb\xdb\x73\x30\x56\x7b\x97\x86\x2f\x68\xbe\xbb\x19\x20\x62\xb0\x01\x24\xe7\x85\x40\xed\xbb\x1e\xb7\xf6\x59\x6d\x1b\xda\x53\xeb\x95\x12\xff\xb1\xfb\x6c\x68\xcf\x1c\x76\x0b\x0a\xb8\xb7\x44\xdb\xff\xe6\x84\xa2\xdf\x29\x4c\xa7\x1b\xdf\x9d\xd3\x49\xba\xe8\x1b\x39\x39\x9d\xb0\xf0\x0a\x65\xc8\x6c\x92\xae\x0f\x10\x5d\x48\xfb\xe7\x4a\xd5\xd7\x14\xb8\xb1\x42\xa5\xde\x7a\x6a\xd2\x19\x10\xb4\x4e\x1b\x0b\xb4\x58\x38\xe0\x62\x8c\xc2\xa7\x91\x93\xfe\x65\x2d\x97\x7d\x60\xee\xc1\x33\xea\xc1\x73\x01\x1d\x62\xf1\xc0\x79\x3a\xf4\x50\x40\x63\xf7\x71\x1b\x8d\x0f\xcc\x1a\x24\x05\xfd\xd9\xfa\xb6\x95\xdc\x5a\xf9\xce\x35\x1c\xc4\xed\xa3\x42\xcd\xe8\x6f\x72\x55\x98\x13\x10\x6b\x65\x01\x22\xd5\x7b\x10\xc2\xe7\x15\x94\x8c\xbc\xb7\x0d\xef\x12\x6b\xe1\x87\x77\x77\x3b\x24\xac\xb3\x46\x20\x9d\x4b\x0a\x21\x4a\x17\xac\x26\x37\x74\x37\x74\x7a\xba\xea\x88\x6d\x91\xce\xc3\x57\xc7\x87\xdd\x81\xa9\xe8\x56\x32\x19\x3d\xf1\xb5\xe2\xc0\x8e\xb2\xce\x65\xbf\x90\x13\x55\x74\x7a\x21\xd8\x30\xbc\x23\xee\xd2\x74\x52\xf8\x29\x7c\x68\xae\xe5\xac\x30\xa5\xa3\x20\x31\x2f\x43\x1b\x1b\x32\x82\x2c\xa3\x50\xdb\x5b\xfc\x20\x9d\x3d\x28\x0c\xc4\x47\x7c\x2c\x33\x95\x75\x78\xf3\xa2\x69\xd4\x82\xdb\x15\xfb\x26\xae\x8a\xb4\xf4\x7e\x63\x4d\xdc\x7e\x65\x2f\x0b\xf1\x00\xc7\x36\x9c\xf8\x5d\x95\x19\x7f\xc3\x2e\xf6\x44\xaa\xc3\x93\x1d\x69\xf4\xd6\xd4\x9e\xcc\xf2\x3e\x92\x02\xc4\x92\x43\
Download .txt
gitextract_k13q67tj/

├── .gitignore
├── .travis.yml
├── API.md
├── Gopkg.toml
├── LICENSE
├── README.md
├── appveyor.yml
├── audio/
│   ├── audio.go
│   └── midi.go
├── cmd/
│   └── glitch/
│       ├── app.go
│       ├── assets.go
│       ├── gen.go
│       ├── loader.go
│       ├── main.go
│       └── ui.go
├── core/
│   ├── CMakeLists.txt
│   ├── expr.h
│   ├── glitch.c
│   ├── glitch.go
│   ├── glitch.h
│   ├── glitch_test.c
│   ├── glitch_test.go
│   ├── libglitch.h
│   └── tr808.h
├── dist/
│   ├── glitch.exe.manifest
│   ├── glitch.rc
│   ├── icons/
│   │   └── glitch.icns
│   ├── release-linux.sh
│   ├── release-macos.sh
│   ├── release-web.sh
│   └── release-windows.bat
├── examples/
│   ├── bytebeat/
│   │   ├── 42.glitch
│   │   ├── arp.glitch
│   │   ├── dreamy.glitch
│   │   ├── drum.glitch
│   │   ├── nervous.glitch
│   │   ├── poly.glitch
│   │   ├── right.glitch
│   │   ├── saw.glitch
│   │   ├── sqr.glitch
│   │   └── white.glitch
│   ├── das_model.glitch
│   ├── drums.glitch
│   ├── get_yucky.glitch
│   └── sur_la_planche.glitch
├── ui/
│   ├── app.js
│   ├── index.html
│   ├── styles.css
│   └── vendor/
│       ├── codemirror/
│       │   ├── codemirror.css
│       │   ├── codemirror.js
│       │   ├── matchbrackets.js
│       │   ├── material.css
│       │   └── simplescrollbars.js
│       ├── material-icons/
│       │   ├── MaterialIcons-Regular.ijmap
│       │   ├── README.md
│       │   ├── codepoints
│       │   └── material-icons.css
│       ├── picodom/
│       │   └── picodom.js
│       └── roboto-mono/
│           └── roboto-mono.css
└── vendor/
    └── github.com/
        ├── jteeuwen/
        │   └── go-bindata/
        │       ├── CONTRIBUTING.md
        │       ├── LICENSE
        │       ├── README.md
        │       ├── asset.go
        │       ├── bytewriter.go
        │       ├── config.go
        │       ├── convert.go
        │       ├── debug.go
        │       ├── doc.go
        │       ├── go-bindata/
        │       │   ├── AppendSliceValue.go
        │       │   ├── main.go
        │       │   └── version.go
        │       ├── release.go
        │       ├── stringwriter.go
        │       ├── testdata/
        │       │   ├── in/
        │       │   │   ├── a/
        │       │   │   │   └── test.asset
        │       │   │   ├── b/
        │       │   │   │   └── test.asset
        │       │   │   ├── c/
        │       │   │   │   └── test.asset
        │       │   │   └── test.asset
        │       │   └── out/
        │       │       ├── compress-memcopy.go
        │       │       ├── compress-nomemcopy.go
        │       │       ├── debug.go
        │       │       ├── nocompress-memcopy.go
        │       │       └── nocompress-nomemcopy.go
        │       └── toc.go
        ├── thestk/
        │   ├── rtaudio/
        │   │   ├── .gitattributes
        │   │   ├── .gitignore
        │   │   ├── .travis.yml
        │   │   ├── CMakeLists.txt
        │   │   ├── Makefile.am
        │   │   ├── README.md
        │   │   ├── RtAudio.cpp
        │   │   ├── RtAudio.h
        │   │   ├── autogen.sh
        │   │   ├── configure.ac
        │   │   ├── contrib/
        │   │   │   ├── go/
        │   │   │   │   └── rtaudio/
        │   │   │   │       ├── rtaudio.go
        │   │   │   │       ├── rtaudio_stub.cpp
        │   │   │   │       ├── rtaudio_stub.h
        │   │   │   │       └── rtaudio_test.go
        │   │   │   └── python/
        │   │   │       └── pyrtaudio/
        │   │   │           ├── PyRtAudioTest.py
        │   │   │           ├── readme
        │   │   │           ├── rtaudiomodule.cpp
        │   │   │           └── setup.py
        │   │   ├── doc/
        │   │   │   ├── Makefile.am
        │   │   │   ├── doxygen/
        │   │   │   │   ├── Doxyfile.in
        │   │   │   │   ├── acknowledge.txt
        │   │   │   │   ├── apinotes.txt
        │   │   │   │   ├── compiling.txt
        │   │   │   │   ├── duplex.txt
        │   │   │   │   ├── error.txt
        │   │   │   │   ├── footer.html
        │   │   │   │   ├── header.html
        │   │   │   │   ├── license.txt
        │   │   │   │   ├── multi.txt
        │   │   │   │   ├── playback.txt
        │   │   │   │   ├── probe.txt
        │   │   │   │   ├── recording.txt
        │   │   │   │   ├── settings.txt
        │   │   │   │   └── tutorial.txt
        │   │   │   └── release.txt
        │   │   ├── include/
        │   │   │   ├── asio.cpp
        │   │   │   ├── asio.h
        │   │   │   ├── asiodrivers.cpp
        │   │   │   ├── asiodrivers.h
        │   │   │   ├── asiodrvr.h
        │   │   │   ├── asiolist.cpp
        │   │   │   ├── asiolist.h
        │   │   │   ├── asiosys.h
        │   │   │   ├── dsound.h
        │   │   │   ├── functiondiscoverykeys_devpkey.h
        │   │   │   ├── ginclude.h
        │   │   │   ├── iasiodrv.h
        │   │   │   ├── iasiothiscallresolver.cpp
        │   │   │   ├── iasiothiscallresolver.h
        │   │   │   └── soundcard.h
        │   │   ├── install.txt
        │   │   ├── rtaudio.pc.in
        │   │   ├── rtaudio_c.cpp
        │   │   ├── rtaudio_c.h
        │   │   └── tests/
        │   │       ├── CMakeLists.txt
        │   │       ├── Debug/
        │   │       │   └── .placeholder
        │   │       ├── Makefile.am
        │   │       ├── Release/
        │   │       │   └── .placeholder
        │   │       ├── Windows/
        │   │       │   ├── Debug/
        │   │       │   │   └── .placeholder
        │   │       │   ├── Release/
        │   │       │   │   └── .placeholder
        │   │       │   ├── audioprobe.dsp
        │   │       │   ├── duplex.dsp
        │   │       │   ├── playraw.dsp
        │   │       │   ├── playsaw.dsp
        │   │       │   ├── record.dsp
        │   │       │   ├── rtaudio.dsw
        │   │       │   ├── testall.dsp
        │   │       │   └── teststops.dsp
        │   │       ├── audioprobe.cpp
        │   │       ├── duplex.cpp
        │   │       ├── playraw.cpp
        │   │       ├── playsaw.cpp
        │   │       ├── record.cpp
        │   │       ├── testall.cpp
        │   │       └── teststops.cpp
        │   └── rtmidi/
        │       ├── .gitattributes
        │       ├── .github/
        │       │   └── issue_template.md
        │       ├── .gitignore
        │       ├── .travis.yml
        │       ├── Makefile.am
        │       ├── README.md
        │       ├── RtMidi.cpp
        │       ├── RtMidi.h
        │       ├── autogen.sh
        │       ├── configure.ac
        │       ├── contrib/
        │       │   └── go/
        │       │       └── rtmidi/
        │       │           ├── rtmidi.go
        │       │           ├── rtmidi_stub.cpp
        │       │           ├── rtmidi_stub.h
        │       │           └── rtmidi_test.go
        │       ├── doc/
        │       │   ├── Makefile.am
        │       │   ├── doxygen/
        │       │   │   ├── Doxyfile.in
        │       │   │   ├── footer.html
        │       │   │   ├── header.html
        │       │   │   └── tutorial.txt
        │       │   └── release.txt
        │       ├── msw/
        │       │   ├── readme
        │       │   ├── rtmidilib.sln
        │       │   └── rtmidilib.vcproj
        │       ├── rtmidi-config.in
        │       ├── rtmidi.pc.in
        │       ├── rtmidi_c.cpp
        │       ├── rtmidi_c.h
        │       └── tests/
        │           ├── Debug/
        │           │   └── .placeholder
        │           ├── Makefile.am
        │           ├── Release/
        │           │   └── .placeholder
        │           ├── RtMidi.dsw
        │           ├── cmidiin.cpp
        │           ├── cmidiin.dsp
        │           ├── midiclock.cpp
        │           ├── midiout.cpp
        │           ├── midiout.dsp
        │           ├── midiprobe.cpp
        │           ├── midiprobe.dsp
        │           ├── qmidiin.cpp
        │           ├── qmidiin.dsp
        │           ├── sysextest.cpp
        │           └── sysextest.dsp
        └── zserge/
            └── webview/
                ├── .gitattributes
                ├── .gitignore
                ├── .travis.yml
                ├── CMakeLists.txt
                ├── LICENSE
                ├── README.md
                ├── appveyor.yml
                ├── examples/
                │   ├── canvas-go/
                │   │   └── main.go
                │   ├── counter-go/
                │   │   ├── assets.go
                │   │   ├── js/
                │   │   │   ├── picodom/
                │   │   │   │   └── app.js
                │   │   │   ├── react/
                │   │   │   │   └── app.jsx
                │   │   │   ├── styles.css
                │   │   │   └── vue/
                │   │   │       └── app.js
                │   │   ├── main.go
                │   │   ├── picodom.go
                │   │   ├── react.go
                │   │   └── vue.go
                │   ├── minimal/
                │   │   ├── CMakeLists.txt
                │   │   ├── Makefile
                │   │   └── main.c
                │   ├── minimal-go/
                │   │   └── main.go
                │   ├── page-load-go/
                │   │   └── main.go
                │   ├── timer-cxx/
                │   │   ├── CMakeLists.txt
                │   │   └── main.cc
                │   ├── todo-go/
                │   │   ├── assets/
                │   │   │   ├── app.js
                │   │   │   ├── index.html
                │   │   │   ├── picodom.js
                │   │   │   └── styles.css
                │   │   ├── assets.go
                │   │   └── main.go
                │   └── window-go/
                │       └── main.go
                ├── webview.go
                ├── webview.h
                └── webview_test.go
Download .txt
SYMBOL INDEX (1741 symbols across 95 files)

FILE: audio/audio.go
  type Callback (line 11) | type Callback
  type Device (line 13) | type Device struct
  type Audio (line 22) | type Audio interface
  type rt (line 29) | type rt struct
    method Destroy (line 47) | func (rt *rt) Destroy() {
    method closeAudio (line 54) | func (rt *rt) closeAudio() {
    method Devices (line 61) | func (rt *rt) Devices() []Device {
    method Current (line 81) | func (rt *rt) Current() Device {
    method Open (line 91) | func (rt *rt) Open(id, sampleRate, bufSz int, inChans, outChans int) {
  function NewAudio (line 37) | func NewAudio(notify chan<- struct{}, cb Callback) (Audio, error) {

FILE: audio/midi.go
  type MIDICallback (line 11) | type MIDICallback
  type MIDIDevice (line 13) | type MIDIDevice struct
  type MIDI (line 20) | type MIDI interface
  type midi (line 28) | type midi struct
    method SetAutoConnect (line 62) | func (m *midi) SetAutoConnect(connect bool) {
    method AutoConnect (line 69) | func (m *midi) AutoConnect() bool {
    method SetConnect (line 75) | func (m *midi) SetConnect(name string, connect bool) {
    method Devices (line 82) | func (m *midi) Devices() (devices []MIDIDevice) {
    method Destroy (line 92) | func (m *midi) Destroy() {
    method shouldConnect (line 99) | func (m *midi) shouldConnect(name string) bool {
    method openDevice (line 104) | func (m *midi) openDevice(d *MIDIDevice) (err error) {
    method closeDevice (line 118) | func (m *midi) closeDevice(d *MIDIDevice) {
    method poll (line 124) | func (m *midi) poll() {
    method pollOnce (line 141) | func (m *midi) pollOnce() (changed bool, err error) {
  function NewMIDI (line 41) | func NewMIDI(notify chan<- struct{}, cb MIDICallback) (MIDI, error) {

FILE: cmd/glitch/app.go
  type App (line 15) | type App struct
    method Run (line 106) | func (app *App) Run() {
    method Destroy (line 110) | func (app *App) Destroy() {
    method NewFile (line 126) | func (app *App) NewFile() {
    method LoadFile (line 132) | func (app *App) LoadFile() {
    method Load (line 138) | func (app *App) Load(path string) {
    method SetVar (line 152) | func (app *App) SetVar(name string, value float32) {
    method ChangeText (line 156) | func (app *App) ChangeText(text string) {
    method SelectAudio (line 162) | func (app *App) SelectAudio(id, sampleRate, bufsz int) {
    method SelectMIDI (line 183) | func (app *App) SelectMIDI(name string, connected bool) {
    method TogglePlayback (line 189) | func (app *App) TogglePlayback() {
    method Stop (line 193) | func (app *App) Stop() {
  function NewApp (line 33) | func NewApp(config *Config) (app *App, err error) {

FILE: cmd/glitch/assets.go
  function bindata_read (line 11) | func bindata_read(data []byte, name string) ([]byte, error) {
  function app_js (line 30) | func app_js() ([]byte, error) {
  function index_html (line 39) | func index_html() ([]byte, error) {
  function styles_css (line 48) | func styles_css() ([]byte, error) {
  function vendor_codemirror_codemirror_css (line 57) | func vendor_codemirror_codemirror_css() ([]byte, error) {
  function vendor_codemirror_codemirror_js (line 66) | func vendor_codemirror_codemirror_js() ([]byte, error) {
  function vendor_codemirror_matchbrackets_js (line 75) | func vendor_codemirror_matchbrackets_js() ([]byte, error) {
  function vendor_codemirror_material_css (line 84) | func vendor_codemirror_material_css() ([]byte, error) {
  function vendor_codemirror_simplescrollbars_js (line 93) | func vendor_codemirror_simplescrollbars_js() ([]byte, error) {
  function vendor_material_icons_materialicons_regular_eot (line 102) | func vendor_material_icons_materialicons_regular_eot() ([]byte, error) {
  function vendor_material_icons_materialicons_regular_ijmap (line 111) | func vendor_material_icons_materialicons_regular_ijmap() ([]byte, error) {
  function vendor_material_icons_materialicons_regular_svg (line 120) | func vendor_material_icons_materialicons_regular_svg() ([]byte, error) {
  function vendor_material_icons_materialicons_regular_ttf (line 129) | func vendor_material_icons_materialicons_regular_ttf() ([]byte, error) {
  function vendor_material_icons_materialicons_regular_woff (line 138) | func vendor_material_icons_materialicons_regular_woff() ([]byte, error) {
  function vendor_material_icons_materialicons_regular_woff2 (line 147) | func vendor_material_icons_materialicons_regular_woff2() ([]byte, error) {
  function vendor_material_icons_readme_md (line 156) | func vendor_material_icons_readme_md() ([]byte, error) {
  function vendor_material_icons_codepoints (line 165) | func vendor_material_icons_codepoints() ([]byte, error) {
  function vendor_material_icons_material_icons_css (line 174) | func vendor_material_icons_material_icons_css() ([]byte, error) {
  function vendor_picodom_picodom_js (line 183) | func vendor_picodom_picodom_js() ([]byte, error) {
  function vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_300_eot (line 192) | func vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_300_eot() ([...
  function vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_300_svg (line 201) | func vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_300_svg() ([...
  function vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_300_ttf (line 210) | func vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_300_ttf() ([...
  function vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_300_woff (line 219) | func vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_300_woff() (...
  function vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_300_woff2 (line 228) | func vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_300_woff2() ...
  function vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_500_eot (line 237) | func vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_500_eot() ([...
  function vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_500_svg (line 246) | func vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_500_svg() ([...
  function vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_500_ttf (line 255) | func vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_500_ttf() ([...
  function vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_500_woff (line 264) | func vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_500_woff() (...
  function vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_500_woff2 (line 273) | func vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_500_woff2() ...
  function vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_700_eot (line 282) | func vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_700_eot() ([...
  function vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_700_svg (line 291) | func vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_700_svg() ([...
  function vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_700_ttf (line 300) | func vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_700_ttf() ([...
  function vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_700_woff (line 309) | func vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_700_woff() (...
  function vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_700_woff2 (line 318) | func vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_700_woff2() ...
  function vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_regular_eot (line 327) | func vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_regular_eot(...
  function vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_regular_svg (line 336) | func vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_regular_svg(...
  function vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_regular_ttf (line 345) | func vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_regular_ttf(...
  function vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_regular_woff (line 354) | func vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_regular_woff...
  function vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_regular_woff2 (line 363) | func vendor_roboto_mono_roboto_mono_v4_greek_cyrillic_latin_regular_woff...
  function vendor_roboto_mono_roboto_mono_css (line 372) | func vendor_roboto_mono_roboto_mono_css() ([]byte, error) {
  function Asset (line 382) | func Asset(name string) ([]byte, error) {
  function AssetNames (line 391) | func AssetNames() []string {
  function AssetDir (line 454) | func AssetDir(name string) ([]string, error) {
  type _bintree_t (line 476) | type _bintree_t struct

FILE: cmd/glitch/gen.go
  function main (line 14) | func main() {

FILE: cmd/glitch/loader.go
  type sampleLoader (line 13) | type sampleLoader struct
    method dir (line 17) | func (loader *sampleLoader) dir() string {
    method poll (line 21) | func (loader *sampleLoader) poll() {
    method read (line 32) | func (loader *sampleLoader) read(name string) []float32 {
    method scan (line 46) | func (loader *sampleLoader) scan() (samples map[string][]string) {
    method LoadSample (line 73) | func (loader *sampleLoader) LoadSample(name string, variant, frame int...

FILE: cmd/glitch/main.go
  constant DefaultSampleRate (line 15) | DefaultSampleRate = 44100.0
  constant DefaultBufSz (line 16) | DefaultBufSz      = 512
  type Config (line 19) | type Config struct
    method Save (line 62) | func (c *Config) Save() {
  function configPath (line 35) | func configPath() (path string) {
  function NewConfig (line 53) | func NewConfig() (c Config) {
  function main (line 70) | func main() {

FILE: cmd/glitch/ui.go
  constant windowWidth (line 14) | windowWidth  = 640
  constant windowHeight (line 15) | windowHeight = 480
  function startServer (line 18) | func startServer() string {

FILE: core/expr.h
  function vec_expand (line 18) | static int vec_expand(char **buf, int *length, int *cap, int memsz) {
  type expr (line 56) | struct expr
  type expr_func (line 57) | struct expr_func
  type expr_type (line 59) | enum expr_type {
  type vec_expr_t (line 101) | typedef vec(struct expr) vec_expr_t;
  type expr_func (line 102) | struct expr_func
  type expr_func (line 103) | struct expr_func
  type expr (line 105) | struct expr {
  type expr_string (line 128) | struct expr_string {
  type expr_arg (line 132) | struct expr_arg {
  type vec_str_t (line 138) | typedef vec(struct expr_string) vec_str_t;
  type vec_arg_t (line 139) | typedef vec(struct expr_arg) vec_arg_t;
  function expr_is_unary (line 141) | static int expr_is_unary(enum expr_type op) {
  function expr_is_binary (line 146) | static int expr_is_binary(enum expr_type op) {
  function expr_prec (line 151) | static int expr_prec(enum expr_type a, enum expr_type b) {
  type expr_type (line 165) | enum expr_type
  function expr_op (line 199) | static enum expr_type expr_op(const char *s, size_t len, int unary) {
  function expr_parse_number (line 209) | static float expr_parse_number(const char *s, size_t len) {
  type expr_func (line 238) | struct expr_func {
  type expr_func (line 245) | struct expr_func
  type expr_func (line 245) | struct expr_func
  type expr_func (line 247) | struct expr_func
  type expr_var (line 258) | struct expr_var {
  type expr_var_list (line 264) | struct expr_var_list {
  type expr_var (line 268) | struct expr_var
  type expr_var_list (line 268) | struct expr_var_list
  type expr_var (line 270) | struct expr_var
  type expr_var (line 279) | struct expr_var
  type expr_var (line 279) | struct expr_var
  function to_int (line 291) | static int to_int(float x) {
  function expr_eval (line 301) | static float expr_eval(struct expr *e) {
  function expr_next_token (line 412) | static int expr_next_token(const char *s, size_t len, int *flags) {
  function expr_bind (line 498) | static int expr_bind(const char *s, size_t len, vec_expr_t *es) {
  function expr_const (line 531) | static struct expr expr_const(float value) {
  function expr_varref (line 538) | static struct expr expr_varref(struct expr_var *v) {
  function expr_binary (line 545) | static struct expr expr_binary(enum expr_type type, struct expr a,
  function expr_copy (line 554) | static inline void expr_copy(struct expr *dst, struct expr *src) {
  type expr (line 581) | struct expr
  type expr (line 583) | struct expr
  type expr_var_list (line 584) | struct expr_var_list
  type expr_func (line 585) | struct expr_func
  type expr_var (line 587) | struct expr_var
  type expr (line 591) | struct expr
  type macro (line 597) | struct macro {
  type macro (line 601) | struct macro
  type macro (line 650) | struct macro
  type expr_string (line 659) | struct expr_string
  type expr_string (line 675) | struct expr_string
  type expr_arg (line 677) | struct expr_arg
  type expr_string (line 680) | struct expr_string
  type expr_string (line 691) | struct expr_string
  type expr_string (line 699) | struct expr_string
  type expr_arg (line 702) | struct expr_arg
  type expr (line 711) | struct expr
  type expr_var (line 716) | struct expr_var
  type macro (line 718) | struct macro
  type macro (line 727) | struct macro
  type expr (line 736) | struct expr
  type expr (line 737) | struct expr
  type expr_var (line 742) | struct expr_var
  type expr (line 743) | struct expr
  type expr (line 744) | struct expr
  type expr_func (line 762) | struct expr_func
  type expr (line 763) | struct expr
  type expr_type (line 783) | enum expr_type
  type expr_string (line 784) | struct expr_string
  type expr_string (line 790) | struct expr_string
  type expr (line 792) | struct expr
  type expr_type (line 797) | enum expr_type
  type expr_string (line 799) | struct expr_string
  type expr_string (line 831) | struct expr_string
  type expr (line 840) | struct expr
  type expr (line 840) | struct expr
  type macro (line 850) | struct macro
  type expr (line 851) | struct expr
  type expr_arg (line 852) | struct expr_arg
  type expr (line 855) | struct expr
  function expr_destroy_args (line 875) | static void expr_destroy_args(struct expr *e) {
  function expr_destroy (line 893) | static void expr_destroy(struct expr *e, struct expr_var_list *vars) {

FILE: core/glitch.c
  function arg (line 25) | static float arg(vec_expr_t *args, int n, float defval) {
  function fwrap (line 32) | static inline float fwrap(float x) { return x - (long)x; }
  function fwrap2 (line 33) | static inline float fwrap2(float x) { return fwrap(fwrap(x) + 1); }
  function fsign (line 34) | static inline float fsign(float x) { return (x < 0 ? -1 : 1); }
  function flim (line 35) | static inline float flim(float x, float a, float b) {
  type fm_context (line 44) | struct fm_context {
  type seq_step (line 55) | struct seq_step
  type vec_float_t (line 56) | typedef vec(float) vec_float_t;
  type vec_step_t (line 57) | typedef vec(struct seq_step) vec_step_t;
  type seq_step (line 59) | struct seq_step {
  type seq_context (line 68) | struct seq_context {
  type mix_context (line 77) | struct mix_context {
  type each_context (line 82) | struct each_context {
  type sample_context (line 87) | struct sample_context {
  function lib_byte (line 91) | static float lib_byte(struct expr_func *f, vec_expr_t *args, void *conte...
  function lib_s (line 97) | static float lib_s(struct expr_func *f, vec_expr_t *args, void *context) {
  function lib_r (line 105) | static float lib_r(struct expr_func *f, vec_expr_t *args, void *context) {
  function lib_l (line 111) | static float lib_l(struct expr_func *f, vec_expr_t *args, void *context) {
  function lib_a (line 120) | static float lib_a(struct expr_func *f, vec_expr_t *args, void *context) {
  function lib_scale (line 154) | static float lib_scale(struct expr_func *f, vec_expr_t *args, void *cont...
  function lib_hz (line 173) | static float lib_hz(struct expr_func *f, vec_expr_t *args, void *context) {
  function lib_each (line 179) | static float lib_each(struct expr_func *f, vec_expr_t *args, void *conte...
  function lib_each_cleanup (line 228) | static void lib_each_cleanup(struct expr_func *f, void *context) {
  function lib_sin (line 237) | static float lib_sin(struct expr_func *f, vec_expr_t *args, void *contex...
  function lib_tri (line 242) | static float lib_tri(struct expr_func *f, vec_expr_t *args, void *contex...
  function lib_saw (line 247) | static float lib_saw(struct expr_func *f, vec_expr_t *args, void *contex...
  function lib_sqr (line 252) | static float lib_sqr(struct expr_func *f, vec_expr_t *args, void *contex...
  function lib_fm (line 258) | static float lib_fm(struct expr_func *f, vec_expr_t *args, void *context) {
  function lib_seq (line 296) | static float lib_seq(struct expr_func *f, vec_expr_t *args, void *contex...
  function lib_seq_cleanup (line 429) | static void lib_seq_cleanup(struct expr_func *f, void *context) {
  function lib_env (line 435) | static float lib_env(struct expr_func *f, vec_expr_t *args, void *contex...
  function lib_mix (line 453) | static float lib_mix(struct expr_func *f, vec_expr_t *args, void *contex...
  function lib_mix_cleanup (line 486) | static void lib_mix_cleanup(struct expr_func *f, void *context) {
  function lib_filter (line 492) | static float lib_filter(struct expr_func *f, vec_expr_t *args, void *con...
  function lib_delay (line 510) | static float lib_delay(struct expr_func *f, vec_expr_t *args, void *cont...
  function lib_delay_cleanup (line 520) | static void lib_delay_cleanup(struct expr_func *f, void *context) {
  function int16_sample (line 526) | static float int16_sample(unsigned char hi, unsigned char lo) {
  function lib_tr808 (line 535) | static float lib_tr808(struct expr_func *f, vec_expr_t *args, void *cont...
  function lib_sample (line 571) | static float lib_sample(struct expr_func *f, vec_expr_t *args, void *con...
  function lib_pluck (line 587) | static float lib_pluck(struct expr_func *f, vec_expr_t *args, void *cont...
  function lib_pluck_cleanup (line 600) | static void lib_pluck_cleanup(struct expr_func *f, void *context) {
  type expr_func (line 608) | struct expr_func
  type each_context (line 617) | struct each_context
  type fm_context (line 623) | struct fm_context
  type sample_context (line 625) | struct sample_context
  type seq_context (line 627) | struct seq_context
  type seq_context (line 628) | struct seq_context
  type mix_context (line 632) | struct mix_context
  type glitch (line 643) | struct glitch
  type glitch (line 644) | struct glitch
  type glitch (line 644) | struct glitch
  function glitch_init (line 648) | void glitch_init(int sample_rate, unsigned long long seed) {
  function glitch_set_sample_loader (line 652) | void glitch_set_sample_loader(glitch_loader_fn fn) { loader = fn; }
  function glitch_add_sample (line 654) | int glitch_add_sample(const char *name) {
  function glitch_remove_sample (line 672) | int glitch_remove_sample(const char *name) {
  function glitch_destroy (line 685) | void glitch_destroy(struct glitch *g) {
  function glitch_set (line 690) | void glitch_set(struct glitch *g, const char *name, float x) {
  function glitch_get (line 694) | float glitch_get(struct glitch *g, const char *name) {
  function glitch_midi (line 698) | void glitch_midi(struct glitch *g, unsigned char cmd, unsigned char a,
  function glitch_reset (line 731) | void glitch_reset(struct glitch *g) {
  function glitch_compile (line 787) | int glitch_compile(struct glitch *g, const char *s, size_t len) {
  function glitch_beat (line 807) | float glitch_beat(struct glitch *g) {
  function glitch_iter (line 812) | void glitch_iter(struct glitch *g, size_t frames) {
  function glitch_eval (line 844) | float glitch_eval(struct glitch *g) {
  function glitch_fill (line 854) | void glitch_fill(struct glitch *g, float *buf, size_t frames, size_t cha...

FILE: core/glitch.go
  type SampleLoader (line 24) | type SampleLoader interface
  function init (line 32) | func init() {
  function goSampleLoader (line 38) | func goSampleLoader(name *C.char, variant, frame C.int) C.float {
  function Init (line 45) | func Init(sr int, seed uint64) {
  function AddSample (line 49) | func AddSample(name string) bool {
  function RemoveSample (line 55) | func RemoveSample(name string) bool {
  type Glitch (line 61) | type Glitch interface
  type glitch (line 73) | type glitch struct
    method Destroy (line 86) | func (g *glitch) Destroy() {
    method Reset (line 92) | func (g *glitch) Reset() {
    method Compile (line 98) | func (g *glitch) Compile(expr string) error {
    method Fill (line 110) | func (g *glitch) Fill(buf []float32, frames, channels int) {
    method MIDI (line 116) | func (g *glitch) MIDI(msg []byte) {
    method Set (line 124) | func (g *glitch) Set(name string, value float32) {
    method Get (line 132) | func (g *glitch) Get(name string) float32 {
  function NewGlitch (line 78) | func NewGlitch() Glitch {

FILE: core/glitch.h
  type glitch (line 11) | struct glitch {
  type glitch (line 38) | struct glitch
  type glitch (line 39) | struct glitch
  type glitch (line 40) | struct glitch
  type glitch (line 41) | struct glitch
  type glitch (line 42) | struct glitch
  type glitch (line 43) | struct glitch
  type glitch (line 44) | struct glitch
  type glitch (line 46) | struct glitch

FILE: core/glitch_test.c
  function test_r (line 38) | static void test_r() {
  function test_hz (line 66) | static void test_hz() {
  function test_byte (line 87) | static void test_byte() {
  function test_s (line 111) | static void test_s() {
  function test_a (line 135) | static void test_a() {
  function test_osc (line 154) | static void test_osc() {
  function test_seq (line 206) | static void test_seq() {
  function test_env (line 294) | static void test_env() {
  function test_delay (line 336) | static void test_delay() {
  function test_benchmark (line 370) | static void test_benchmark(const char *s) {
  function run_benchmarks (line 393) | static void run_benchmarks() {
  function main (line 439) | int main() {

FILE: core/glitch_test.go
  function eval (line 5) | func eval(g Glitch) float32 {
  function TestGlitch (line 11) | func TestGlitch(t *testing.T) {
  function TestGlitchVar (line 28) | func TestGlitchVar(t *testing.T) {
  function TestGlitchSamples (line 47) | func TestGlitchSamples(t *testing.T) {

FILE: core/libglitch.h
  function libglitch_interpolate (line 33) | static inline float libglitch_interpolate(float *arr, size_t len, float ...
  function libglitch_wrap (line 42) | static float libglitch_wrap(float x) {
  function libglitch_rand_init (line 58) | static inline void libglitch_rand_init(unsigned long long seed) {
  function libglitch_rand (line 62) | static inline float libglitch_rand(float max) {
  function libglitch_rand_test (line 68) | static inline void libglitch_rand_test() {
  function libglitch_byte_init (line 89) | static inline void libglitch_byte_init() {
  function libglitch_byte (line 94) | static inline float libglitch_byte(float byte) {
  function libglitch_byte_test (line 99) | static void libglitch_byte_test() {
  function libglitch_hz_init (line 128) | static inline void libglitch_hz_init() {
  function libglitch_hz (line 140) | static inline float libglitch_hz(float note) {
  function libglitch_hz_test (line 156) | static void libglitch_hz_test() {
  type libglitch_osc_t (line 177) | typedef struct libglitch_osc { float w; } libglitch_osc_t;
  function libglitch_osc_init (line 179) | static void libglitch_osc_init() {
  function libglitch_osc (line 190) | static float libglitch_osc(libglitch_osc_t *osc, const float freq,
  function libglitch_sin (line 200) | static float libglitch_sin(libglitch_osc_t *osc, float freq) {
  function libglitch_tri (line 204) | static float libglitch_tri(libglitch_osc_t *osc, float freq) {
  function libglitch_saw (line 208) | static float libglitch_saw(libglitch_osc_t *osc, float freq) {
  function libglitch_sqr (line 212) | static float libglitch_sqr(libglitch_osc_t *osc, float freq, float pwm) {
  function libglitch_osc_test (line 222) | static void libglitch_osc_test() {
  type libglitch_biquad_filter_t (line 235) | typedef enum libglitch_biquad_filter {
  type libglitch_biquad_t (line 242) | typedef struct libglitch_biquad {
  function libglitch_biquad (line 249) | static inline float libglitch_biquad(libglitch_biquad_t *filter,
  function libglitch_biquad_test (line 317) | static void libglitch_biquad_test() {
  type libglitch_env_t (line 329) | typedef struct libglitch_env {
  function libglitch_env_flim (line 356) | static inline float libglitch_env_flim(float x, float a, float b) {
  function libglitch_env (line 364) | static float libglitch_env(libglitch_env_t *env, float g, float v, float...
  function libglitch_env_test (line 393) | static void libglitch_env_test() {
  type libglitch_delay_t (line 407) | typedef struct libglitch_delay {
  function libglitch_delay (line 413) | static float libglitch_delay(libglitch_delay_t *delay, float signal, flo...
  function libglitch_delay_free (line 460) | static void libglitch_delay_free(libglitch_delay_t *delay) { free(delay-...
  function libglitch_delay_test (line 463) | static void libglitch_delay_test() {
  type libglitch_pluck_t (line 476) | typedef struct libglitch_pluck {
  function libglitch_pluck (line 482) | static float libglitch_pluck(libglitch_pluck_t *pluck, float freq, float...
  function libglitch_pluck_free (line 518) | static void libglitch_pluck_free(libglitch_pluck_t *pluck) {
  function libglitch_pluck_test (line 523) | static void libglitch_pluck_test() {
  function libglitch_init (line 536) | static void libglitch_init(int sample_rate, unsigned long long seed) {
  function libglitch_test (line 546) | static void libglitch_test() {

FILE: ui/app.js
  function isWebView (line 5) | function isWebView() {
  function UI (line 15) | function UI(app) {
  function webHeader (line 22) | function webHeader() {
  function webFooter (line 38) | function webFooter() {
  function appWindow (line 42) | function appWindow(app) {
  function editor (line 50) | function editor(app) {
  function errorBar (line 122) | function errorBar(app) {
  function modal (line 127) | function modal(visible, app, contents) {
  function settings (line 141) | function settings(app) {
  function toolbar (line 210) | function toolbar(app) {
  function materialIcon (line 248) | function materialIcon(icon) {
  function hideLoadingIndicator (line 252) | function hideLoadingIndicator() {
  function WebRPC (line 257) | function WebRPC() {
  function init (line 400) | function init() {

FILE: ui/vendor/codemirror/codemirror.js
  function classTest (line 50) | function classTest(cls) { return new RegExp("(^|\\s)" + cls + "(?:$|\\s)...
  function removeChildren (line 61) | function removeChildren(e) {
  function removeChildrenAndAdd (line 67) | function removeChildrenAndAdd(parent, e) {
  function elt (line 71) | function elt(tag, content, className, style) {
  function eltP (line 80) | function eltP(tag, content, className, style) {
  function contains (line 103) | function contains(parent, child) {
  function activeElt (line 114) | function activeElt() {
  function addClass (line 129) | function addClass(node, cls) {
  function joinClasses (line 133) | function joinClasses(a, b) {
  function bind (line 146) | function bind(f) {
  function copyObj (line 151) | function copyObj(obj, target, overwrite) {
  function countColumn (line 161) | function countColumn(string, end, tabSize, startIndex, startValue) {
  function indexOf (line 182) | function indexOf(array, elt) {
  function findColumn (line 201) | function findColumn(string, goal, tabSize) {
  function spaceStr (line 216) | function spaceStr(n) {
  function lst (line 222) | function lst(arr) { return arr[arr.length-1] }
  function map (line 224) | function map(array, f) {
  function insertSorted (line 230) | function insertSorted(array, value, score) {
  function nothing (line 236) | function nothing() {}
  function createObj (line 238) | function createObj(base, props) {
  function isWordCharBasic (line 251) | function isWordCharBasic(ch) {
  function isWordChar (line 255) | function isWordChar(ch, helper) {
  function isEmpty (line 261) | function isEmpty(obj) {
  function isExtendingChar (line 272) | function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendi...
  function skipExtendingChars (line 275) | function skipExtendingChars(str, pos, dir) {
  function findFirst (line 283) | function findFirst(pred, from, to) {
  function Display (line 300) | function Display(place, doc, input) {
  function getLine (line 400) | function getLine(doc, n) {
  function getBetween (line 416) | function getBetween(doc, start, end) {
  function getLines (line 428) | function getLines(doc, from, to) {
  function updateLineHeight (line 436) | function updateLineHeight(line, height) {
  function lineNo (line 443) | function lineNo(line) {
  function lineAtHeight (line 457) | function lineAtHeight(chunk, h) {
  function isLine (line 477) | function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}
  function lineNumberFor (line 479) | function lineNumberFor(options, i) {
  function Pos (line 484) | function Pos(line, ch, sticky) {
  function cmp (line 495) | function cmp(a, b) { return a.line - b.line || a.ch - b.ch }
  function equalCursorPos (line 497) | function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b)...
  function copyPos (line 499) | function copyPos(x) {return Pos(x.line, x.ch)}
  function maxPos (line 500) | function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }
  function minPos (line 501) | function minPos(a, b) { return cmp(a, b) < 0 ? a : b }
  function clipLine (line 505) | function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.fi...
  function clipPos (line 506) | function clipPos(doc, pos) {
  function clipToLen (line 512) | function clipToLen(pos, linelen) {
  function clipPosArray (line 518) | function clipPosArray(doc, array) {
  function seeReadOnlySpans (line 527) | function seeReadOnlySpans() {
  function seeCollapsedSpans (line 531) | function seeCollapsedSpans() {
  function MarkedSpan (line 537) | function MarkedSpan(marker, from, to) {
  function getMarkedSpanFor (line 543) | function getMarkedSpanFor(spans, marker) {
  function removeMarkedSpan (line 551) | function removeMarkedSpan(spans, span) {
  function addMarkedSpan (line 558) | function addMarkedSpan(line, span) {
  function markedSpansBefore (line 567) | function markedSpansBefore(old, startCh, isInsert) {
  function markedSpansAfter (line 579) | function markedSpansAfter(old, endCh, isInsert) {
  function stretchSpansOverChange (line 599) | function stretchSpansOverChange(doc, change) {
  function clearEmptySpans (line 661) | function clearEmptySpans(spans) {
  function removeReadOnlyRanges (line 672) | function removeReadOnlyRanges(doc, from, to) {
  function detachMarkedSpans (line 701) | function detachMarkedSpans(line) {
  function attachMarkedSpans (line 708) | function attachMarkedSpans(line, spans) {
  function extraLeft (line 717) | function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }
  function extraRight (line 718) | function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }
  function compareCollapsedMarkers (line 723) | function compareCollapsedMarkers(a, b) {
  function collapsedSpanAtSide (line 736) | function collapsedSpanAtSide(line, start) {
  function collapsedSpanAtStart (line 746) | function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, t...
  function collapsedSpanAtEnd (line 747) | function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, fal...
  function conflictingCollapsedRange (line 752) | function conflictingCollapsedRange(doc, lineNo, from, to, marker) {
  function visualLine (line 772) | function visualLine(line) {
  function visualLineEnd (line 779) | function visualLineEnd(line) {
  function visualLineContinued (line 788) | function visualLineContinued(line) {
  function visualLineNo (line 799) | function visualLineNo(doc, lineN) {
  function visualLineEndNo (line 807) | function visualLineEndNo(doc, lineN) {
  function lineIsHidden (line 819) | function lineIsHidden(doc, line) {
  function lineIsHiddenInner (line 830) | function lineIsHiddenInner(doc, line, span) {
  function heightAtLine (line 847) | function heightAtLine(lineObj) {
  function lineLength (line 869) | function lineLength(line) {
  function findMaxLine (line 888) | function findMaxLine(cm) {
  function iterateBidiSections (line 904) | function iterateBidiSections(order, from, to, f) {
  function getBidiPartAt (line 918) | function getBidiPartAt(order, ch, sticky) {
  function charType (line 964) | function charType(code) {
  function BidiSpan (line 977) | function BidiSpan(level, from, to) {
  function getOrder (line 1107) | function getOrder(line, direction) {
  function getHandlers (line 1131) | function getHandlers(emitter, type) {
  function off (line 1135) | function off(emitter, type, f) {
  function signal (line 1150) | function signal(emitter, type /*, values...*/) {
  function signalDOMEvent (line 1160) | function signalDOMEvent(cm, e, override) {
  function signalCursorActivity (line 1167) | function signalCursorActivity(cm) {
  function hasHandler (line 1175) | function hasHandler(emitter, type) {
  function eventMixin (line 1181) | function eventMixin(ctor) {
  function e_preventDefault (line 1189) | function e_preventDefault(e) {
  function e_stopPropagation (line 1193) | function e_stopPropagation(e) {
  function e_defaultPrevented (line 1197) | function e_defaultPrevented(e) {
  function e_stop (line 1200) | function e_stop(e) {e_preventDefault(e); e_stopPropagation(e)}
  function e_target (line 1202) | function e_target(e) {return e.target || e.srcElement}
  function e_button (line 1203) | function e_button(e) {
  function zeroWidthElement (line 1224) | function zeroWidthElement(measure) {
  function hasBadBidiRects (line 1239) | function hasBadBidiRects(measure) {
  function hasBadZoomedRects (line 1288) | function hasBadZoomedRects(measure) {
  function defineMode (line 1301) | function defineMode(name, mode) {
  function defineMIME (line 1307) | function defineMIME(mime, spec) {
  function resolveMode (line 1313) | function resolveMode(spec) {
  function getMode (line 1332) | function getMode(options, spec) {
  function extendMode (line 1356) | function extendMode(mode, properties) {
  function copyState (line 1361) | function copyState(mode, state) {
  function innerMode (line 1375) | function innerMode(mode, state) {
  function startState (line 1386) | function startState(mode, a1, a2) {
  function highlightLine (line 1513) | function highlightLine(cm, line, context, forceToEnd) {
  function getLineStyles (line 1555) | function getLineStyles(cm, line, updateFrontier) {
  function getContextBefore (line 1571) | function getContextBefore(cm, n, precise) {
  function processLine (line 1591) | function processLine(cm, text, context, startAt) {
  function callBlankLine (line 1602) | function callBlankLine(mode, state) {
  function readToken (line 1609) | function readToken(mode, stream, state, inner) {
  function takeToken (line 1626) | function takeToken(cm, pos, precise, asArray) {
  function extractLineClasses (line 1640) | function extractLineClasses(type, output) {
  function runMode (line 1655) | function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {
  function findStartLine (line 1699) | function findStartLine(cm, n, precise) {
  function retreatFrontier (line 1716) | function retreatFrontier(doc, n) {
  function updateLine (line 1749) | function updateLine(line, text, markedSpans, estimateHeight) {
  function cleanUpLine (line 1761) | function cleanUpLine(line) {
  function interpretTokenStyle (line 1771) | function interpretTokenStyle(style, options) {
  function buildLineContent (line 1783) | function buildLineContent(cm, lineView) {
  function defaultSpecialCharPlaceholder (line 1841) | function defaultSpecialCharPlaceholder(ch) {
  function buildToken (line 1850) | function buildToken(builder, text, style, startStyle, endStyle, title, c...
  function splitSpaces (line 1912) | function splitSpaces(text, trailingBefore) {
  function buildTokenBadBidi (line 1927) | function buildTokenBadBidi(inner, order) {
  function buildCollapsedSpan (line 1947) | function buildCollapsedSpan(builder, size, marker, ignoreWidget) {
  function insertLineContent (line 1965) | function insertLineContent(line, builder, styles) {
  function LineView (line 2037) | function LineView(doc, line, lineN) {
  function buildViewArray (line 2049) | function buildViewArray(cm, from, to) {
  function pushOperation (line 2061) | function pushOperation(op) {
  function fireCallbacksForOps (line 2072) | function fireCallbacksForOps(group) {
  function finishOperation (line 2088) | function finishOperation(op, endCb) {
  function signalLater (line 2108) | function signalLater(emitter, type /*, values...*/) {
  function fireOrphanDelayed (line 2128) | function fireOrphanDelayed() {
  function updateLineForChanges (line 2137) | function updateLineForChanges(cm, lineView, lineN, dims) {
  function ensureLineWrapped (line 2150) | function ensureLineWrapped(lineView) {
  function updateLineBackground (line 2161) | function updateLineBackground(cm, lineView) {
  function getLineContent (line 2176) | function getLineContent(cm, lineView) {
  function updateLineText (line 2189) | function updateLineText(cm, lineView) {
  function updateLineClasses (line 2204) | function updateLineClasses(cm, lineView) {
  function updateLineGutter (line 2214) | function updateLineGutter(cm, lineView, lineN, dims) {
  function updateLineWidgets (line 2252) | function updateLineWidgets(cm, lineView, dims) {
  function buildLineElement (line 2263) | function buildLineElement(cm, lineView, lineN, dims) {
  function insertLineWidgets (line 2277) | function insertLineWidgets(cm, lineView, dims) {
  function insertLineWidgetsFor (line 2283) | function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {
  function positionLineWidget (line 2299) | function positionLineWidget(widget, node, lineView, dims) {
  function widgetHeight (line 2317) | function widgetHeight(widget) {
  function eventInWidget (line 2333) | function eventInWidget(display, e) {
  function paddingTop (line 2343) | function paddingTop(display) {return display.lineSpace.offsetTop}
  function paddingVert (line 2344) | function paddingVert(display) {return display.mover.offsetHeight - displ...
  function paddingH (line 2345) | function paddingH(display) {
  function scrollGap (line 2354) | function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }
  function displayWidth (line 2355) | function displayWidth(cm) {
  function displayHeight (line 2358) | function displayHeight(cm) {
  function ensureLineHeights (line 2366) | function ensureLineHeights(cm, lineView, rect) {
  function mapFromLineView (line 2387) | function mapFromLineView(lineView, line, lineN) {
  function updateExternalMeasurement (line 2400) | function updateExternalMeasurement(cm, line) {
  function measureChar (line 2413) | function measureChar(cm, line, ch, bias) {
  function findViewForLine (line 2418) | function findViewForLine(cm, lineN) {
  function prepareMeasureForLine (line 2431) | function prepareMeasureForLine(cm, line) {
  function measureCharPrepared (line 2453) | function measureCharPrepared(cm, prepared, ch, bias, varHeight) {
  function nodeAndOffsetInLineMap (line 2475) | function nodeAndOffsetInLineMap(map, ch, bias) {
  function getUsefulRect (line 2513) | function getUsefulRect(rects, bias) {
  function measureCharInner (line 2523) | function measureCharInner(cm, prepared, ch, bias) {
  function maybeUpdateRectForZooming (line 2576) | function maybeUpdateRectForZooming(measure, rect) {
  function clearLineMeasurementCacheFor (line 2586) | function clearLineMeasurementCacheFor(lineView) {
  function clearLineMeasurementCache (line 2595) | function clearLineMeasurementCache(cm) {
  function clearCaches (line 2602) | function clearCaches(cm) {
  function pageScrollX (line 2609) | function pageScrollX() {
  function pageScrollY (line 2616) | function pageScrollY() {
  function widgetTopHeight (line 2621) | function widgetTopHeight(lineObj) {
  function intoCoordSystem (line 2632) | function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {
  function fromCoordSystem (line 2654) | function fromCoordSystem(cm, coords, context) {
  function charCoords (line 2671) | function charCoords(cm, pos, context, lineObj, bias) {
  function cursorCoords (line 2692) | function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHei...
  function estimateCoords (line 2723) | function estimateCoords(cm, pos) {
  function PosWithInfo (line 2738) | function PosWithInfo(line, ch, sticky, outside, xRel) {
  function coordsChar (line 2747) | function coordsChar(cm, x, y) {
  function wrappedLineExtent (line 2768) | function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {
  function wrappedLineExtentChar (line 2776) | function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {
  function boxIsAfter (line 2784) | function boxIsAfter(box, x, y, left) {
  function coordsCharInner (line 2788) | function coordsCharInner(cm, lineObj, lineNo, x, y) {
  function coordsBidiPart (line 2855) | function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, ...
  function coordsBidiPartWrapped (line 2879) | function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, or...
  function textHeight (line 2913) | function textHeight(display) {
  function charWidth (line 2933) | function charWidth(display) {
  function getDimensions (line 2945) | function getDimensions(cm) {
  function compensateForHScroll (line 2962) | function compensateForHScroll(display) {
  function estimateHeight (line 2969) | function estimateHeight(cm) {
  function estimateLineHeights (line 2987) | function estimateLineHeights(cm) {
  function posFromMouse (line 3000) | function posFromMouse(cm, e, liberal, forRect) {
  function findViewIndex (line 3018) | function findViewIndex(cm, n) {
  function updateSelection (line 3029) | function updateSelection(cm) {
  function prepareSelection (line 3033) | function prepareSelection(cm, primary) {
  function drawSelectionCursor (line 3054) | function drawSelectionCursor(cm, head, output) {
  function cmpCoords (line 3072) | function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }
  function drawSelectionRange (line 3075) | function drawSelectionRange(cm, range, output) {
  function restartBlink (line 3166) | function restartBlink(cm) {
  function ensureFocus (line 3179) | function ensureFocus(cm) {
  function delayBlurEvent (line 3183) | function delayBlurEvent(cm) {
  function onFocus (line 3191) | function onFocus(cm, e) {
  function onBlur (line 3210) | function onBlur(cm, e) {
  function updateHeightsInViewport (line 3224) | function updateHeightsInViewport(cm) {
  function updateWidgetHeight (line 3251) | function updateWidgetHeight(line) {
  function visibleLines (line 3259) | function visibleLines(display, doc, viewport) {
  function alignHorizontally (line 3282) | function alignHorizontally(cm) {
  function maybeUpdateLineNumberWidth (line 3305) | function maybeUpdateLineNumberWidth(cm) {
  function maybeScrollWindow (line 3327) | function maybeScrollWindow(cm, rect) {
  function scrollPosIntoView (line 3344) | function scrollPosIntoView(cm, pos, end, margin) {
  function scrollIntoView (line 3378) | function scrollIntoView(cm, rect) {
  function calculateScrollPos (line 3388) | function calculateScrollPos(cm, rect) {
  function addToScrollTop (line 3418) | function addToScrollTop(cm, top) {
  function ensureCursorVisible (line 3426) | function ensureCursorVisible(cm) {
  function scrollToCoords (line 3432) | function scrollToCoords(cm, x, y) {
  function scrollToRange (line 3438) | function scrollToRange(cm, range) {
  function resolveScrollToPos (line 3447) | function resolveScrollToPos(cm) {
  function scrollToCoordsRange (line 3456) | function scrollToCoordsRange(cm, from, to, margin) {
  function updateScrollTop (line 3468) | function updateScrollTop(cm, val) {
  function setScrollTop (line 3476) | function setScrollTop(cm, val, forceScroll) {
  function setScrollLeft (line 3486) | function setScrollLeft(cm, val, isScroller, forceScroll) {
  function measureForScrollbars (line 3499) | function measureForScrollbars(cm) {
  function maybeDisable (line 3590) | function maybeDisable() {
  function updateScrollbars (line 3619) | function updateScrollbars(cm, measure) {
  function updateScrollbarsInner (line 3633) | function updateScrollbarsInner(cm, measure) {
  function initScrollbars (line 3655) | function initScrollbars(cm) {
  function startOperation (line 3685) | function startOperation(cm) {
  function endOperation (line 3707) | function endOperation(cm) {
  function endOperations (line 3718) | function endOperations(group) {
  function endOperation_R1 (line 3732) | function endOperation_R1(op) {
  function endOperation_W1 (line 3745) | function endOperation_W1(op) {
  function endOperation_R2 (line 3749) | function endOperation_R2(op) {
  function endOperation_W2 (line 3770) | function endOperation_W2(op) {
  function endOperation_finish (line 3795) | function endOperation_finish(op) {
  function runInOp (line 3834) | function runInOp(cm, f) {
  function operation (line 3841) | function operation(cm, f) {
  function methodOp (line 3851) | function methodOp(f) {
  function docMethodOp (line 3859) | function docMethodOp(f) {
  function regChange (line 3875) | function regChange(cm, from, to, lendiff) {
  function regLineChange (line 3940) | function regLineChange(cm, line, type) {
  function resetView (line 3954) | function resetView(cm) {
  function viewCuttingPoint (line 3960) | function viewCuttingPoint(cm, oldN, newN, dir) {
  function adjustView (line 3987) | function adjustView(cm, from, to) {
  function countDirtyView (line 4008) | function countDirtyView(cm) {
  function startWorker (line 4019) | function startWorker(cm, time) {
  function highlightWorker (line 4024) | function highlightWorker(cm) {
  function maybeClipScrollbars (line 4094) | function maybeClipScrollbars(cm) {
  function selectionSnapshot (line 4105) | function selectionSnapshot(cm) {
  function restoreSelection (line 4122) | function restoreSelection(snapshot) {
  function updateDisplayIfNeeded (line 4138) | function updateDisplayIfNeeded(cm, update) {
  function postUpdateDisplay (line 4210) | function postUpdateDisplay(cm, update) {
  function updateDisplaySimple (line 4240) | function updateDisplaySimple(cm, viewport) {
  function patchDisplay (line 4257) | function patchDisplay(cm, updateNumbersFrom, dims) {
  function updateGutterSpace (line 4299) | function updateGutterSpace(cm) {
  function setDocumentHeight (line 4304) | function setDocumentHeight(cm, measure) {
  function updateGutters (line 4312) | function updateGutters(cm) {
  function setGuttersForLineNumbers (line 4330) | function setGuttersForLineNumbers(options) {
  function wheelEventDelta (line 4351) | function wheelEventDelta(e) {
  function wheelEventPixels (line 4358) | function wheelEventPixels(e) {
  function onScrollWheel (line 4365) | function onScrollWheel(cm, e) {
  function normalizeSelection (line 4504) | function normalizeSelection(ranges, primIndex) {
  function simpleSelection (line 4520) | function simpleSelection(anchor, head) {
  function changeEnd (line 4526) | function changeEnd(change) {
  function adjustForChange (line 4534) | function adjustForChange(pos, change) {
  function computeSelAfterChange (line 4543) | function computeSelAfterChange(doc, change) {
  function offsetPos (line 4553) | function offsetPos(pos, old, nw) {
  function computeReplacedSel (line 4562) | function computeReplacedSel(doc, changes, hint) {
  function loadMode (line 4583) | function loadMode(cm) {
  function resetModeState (line 4588) | function resetModeState(cm) {
  function isWholeLineUpdate (line 4604) | function isWholeLineUpdate(doc, change) {
  function updateDoc (line 4610) | function updateDoc(doc, change, markedSpans, estimateHeight) {
  function linkedDocs (line 4662) | function linkedDocs(doc, f, sharedHistOnly) {
  function attachDoc (line 4677) | function attachDoc(cm, doc) {
  function setDirectionClass (line 4689) | function setDirectionClass(cm) {
  function directionChanged (line 4693) | function directionChanged(cm) {
  function History (line 4700) | function History(startGen) {
  function historyChangeFromChange (line 4717) | function historyChangeFromChange(doc, change) {
  function clearSelectionEvents (line 4726) | function clearSelectionEvents(array) {
  function lastChangeEvent (line 4736) | function lastChangeEvent(hist, force) {
  function addChangeToHistory (line 4751) | function addChangeToHistory(doc, change, selAfter, opId) {
  function selectionEventCanBeMerged (line 4794) | function selectionEventCanBeMerged(doc, origin, prev, sel) {
  function addSelectionToHistory (line 4807) | function addSelectionToHistory(doc, sel, opId, options) {
  function pushSelectionToHistory (line 4829) | function pushSelectionToHistory(sel, dest) {
  function attachLocalSpans (line 4836) | function attachLocalSpans(doc, change, from, to) {
  function removeClearedSpans (line 4847) | function removeClearedSpans(spans) {
  function getOldSpans (line 4858) | function getOldSpans(doc, change) {
  function mergeOldSpans (line 4871) | function mergeOldSpans(doc, change) {
  function copyHistoryArray (line 4895) | function copyHistoryArray(events, newGroup, instantiateSel) {
  function extendRange (line 4927) | function extendRange(range, head, other, extend) {
  function extendSelection (line 4946) | function extendSelection(doc, head, other, options, extend) {
  function extendSelections (line 4953) | function extendSelections(doc, heads, options) {
  function replaceOneSelection (line 4963) | function replaceOneSelection(doc, i, range, options) {
  function setSimpleSelection (line 4970) | function setSimpleSelection(doc, anchor, head, options) {
  function filterSelectionChange (line 4976) | function filterSelectionChange(doc, sel, options) {
  function setSelectionReplaceHistory (line 4995) | function setSelectionReplaceHistory(doc, sel, options) {
  function setSelection (line 5006) | function setSelection(doc, sel, options) {
  function setSelectionNoUndo (line 5011) | function setSelectionNoUndo(doc, sel, options) {
  function setSelectionInner (line 5023) | function setSelectionInner(doc, sel) {
  function reCheckSelection (line 5037) | function reCheckSelection(doc) {
  function skipAtomicInSelection (line 5043) | function skipAtomicInSelection(doc, sel, bias, mayClear) {
  function skipAtomicInner (line 5058) | function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {
  function skipAtomic (line 5091) | function skipAtomic(doc, pos, oldPos, bias, mayClear) {
  function movePos (line 5104) | function movePos(doc, pos, dir, line) {
  function selectAll (line 5116) | function selectAll(cm) {
  function filterChange (line 5123) | function filterChange(doc, change, update) {
  function makeChange (line 5147) | function makeChange(doc, change, ignoreReadOnly) {
  function makeChangeInner (line 5169) | function makeChangeInner(doc, change) {
  function makeChangeFromHistory (line 5187) | function makeChangeFromHistory(doc, type, allowSelectionOnly) {
  function shiftDoc (line 5260) | function shiftDoc(doc, distance) {
  function makeChangeSingleDoc (line 5276) | function makeChangeSingleDoc(doc, change, selAfter, spans) {
  function makeChangeSingleDocInEditor (line 5309) | function makeChangeSingleDocInEditor(cm, change, spans) {
  function replaceRange (line 5367) | function replaceRange(doc, code, from, to, origin) {
  function rebaseHistSelSingle (line 5377) | function rebaseHistSelSingle(pos, from, to, diff) {
  function rebaseHistArray (line 5393) | function rebaseHistArray(array, from, to, diff) {
  function rebaseHist (line 5421) | function rebaseHist(hist, change) {
  function changeLine (line 5430) | function changeLine(doc, handle, changeType, op) {
  function LeafChunk (line 5452) | function LeafChunk(lines) {
  function BranchChunk (line 5505) | function BranchChunk(children) {
  function adjustScrollWhenAboveVisible (line 5668) | function adjustScrollWhenAboveVisible(cm, line, diff) {
  function addLineWidget (line 5673) | function addLineWidget(doc, handle, node, options) {
  function markText (line 5833) | function markText(doc, from, to, options, type) {
  function markTextShared (line 5931) | function markTextShared(doc, from, to, options, type) {
  function findSharedMarkers (line 5946) | function findSharedMarkers(doc) {
  function copySharedMarkers (line 5950) | function copySharedMarkers(doc, markers) {
  function detachSharedMarkers (line 5962) | function detachSharedMarkers(markers) {
  function onDrop (line 6404) | function onDrop(e) {
  function onDragStart (line 6464) | function onDragStart(cm, e) {
  function onDragOver (line 6487) | function onDragOver(cm, e) {
  function clearDragCursor (line 6499) | function clearDragCursor(cm) {
  function forEachCodeMirror (line 6510) | function forEachCodeMirror(f) {
  function ensureGlobalHandlers (line 6520) | function ensureGlobalHandlers() {
  function registerGlobalHandlers (line 6525) | function registerGlobalHandlers() {
  function onResize (line 6538) | function onResize(cm) {
  function normalizeKeyName (line 6611) | function normalizeKeyName(name) {
  function normalizeKeyMap (line 6635) | function normalizeKeyMap(keymap) {
  function lookupKey (line 6662) | function lookupKey(key, map, handle, context) {
  function isModifierKey (line 6681) | function isModifierKey(value) {
  function addModifierNames (line 6686) | function addModifierNames(name, event, noShift) {
  function keyName (line 6696) | function keyName(event, noShift) {
  function getKeyMap (line 6703) | function getKeyMap(val) {
  function deleteNearSelection (line 6709) | function deleteNearSelection(cm, compute) {
  function moveCharLogically (line 6732) | function moveCharLogically(line, ch, dir) {
  function moveLogically (line 6737) | function moveLogically(line, start, dir) {
  function endOfLine (line 6742) | function endOfLine(visually, cm, lineObj, lineNo, dir) {
  function moveVisually (line 6769) | function moveVisually(cm, line, start, dir) {
  function lineStart (line 6981) | function lineStart(cm, lineN) {
  function lineEnd (line 6987) | function lineEnd(cm, lineN) {
  function lineStartSmart (line 6993) | function lineStartSmart(cm, pos) {
  function doHandleBinding (line 7006) | function doHandleBinding(cm, bound, dropShift) {
  function lookupKeyForEditor (line 7026) | function lookupKeyForEditor(cm, name, handle) {
  function dispatchKey (line 7039) | function dispatchKey(cm, name, e, handle) {
  function handleKeyBinding (line 7071) | function handleKeyBinding(cm, e) {
  function handleCharBinding (line 7090) | function handleCharBinding(cm, e, ch) {
  function onKeyDown (line 7095) | function onKeyDown(e) {
  function showCrossHair (line 7116) | function showCrossHair(cm) {
  function onKeyUp (line 7131) | function onKeyUp(e) {
  function onKeyPress (line 7136) | function onKeyPress(e) {
  function clickRepeat (line 7164) | function clickRepeat(pos, button) {
  function onMouseDown (line 7185) | function onMouseDown(e) {
  function handleMappedButton (line 7222) | function handleMappedButton(cm, button, pos, repeat, event) {
  function configureMouse (line 7242) | function configureMouse(cm, repeat, event) {
  function leftButtonDown (line 7255) | function leftButtonDown(cm, pos, repeat, event) {
  function leftButtonStartDrag (line 7273) | function leftButtonStartDrag(cm, event, pos, behavior) {
  function rangeForUnit (line 7312) | function rangeForUnit(cm, pos, unit) {
  function leftButtonSelect (line 7321) | function leftButtonSelect(cm, event, start, behavior) {
  function bidiSimplify (line 7453) | function bidiSimplify(cm, range) {
  function gutterEvent (line 7488) | function gutterEvent(cm, e, type, prevent) {
  function clickInGutter (line 7517) | function clickInGutter(cm, e) {
  function onContextMenu (line 7526) | function onContextMenu(cm, e) {
  function contextMenuInGutter (line 7532) | function contextMenuInGutter(cm, e) {
  function themeChanged (line 7537) | function themeChanged(cm) {
  function defineOptions (line 7548) | function defineOptions(CodeMirror) {
  function guttersChanged (line 7681) | function guttersChanged(cm) {
  function dragDropChanged (line 7687) | function dragDropChanged(cm, value, old) {
  function wrappingChanged (line 7700) | function wrappingChanged(cm) {
  function CodeMirror (line 7718) | function CodeMirror(place, options) {
  function registerEventHandlers (line 7794) | function registerEventHandlers(cm) {
  function indentLine (line 7909) | function indentLine(cm, n, how, aggressive) {
  function setLastCopied (line 7973) | function setLastCopied(newLastCopied) {
  function applyTextInput (line 7977) | function applyTextInput(cm, inserted, deleted, sel, origin) {
  function handlePaste (line 8025) | function handlePaste(e, cm) {
  function triggerElectric (line 8035) | function triggerElectric(cm, inserted) {
  function copyableRanges (line 8059) | function copyableRanges(cm) {
  function disableBrowserMagic (line 8070) | function disableBrowserMagic(field, spellcheck) {
  function hiddenTextarea (line 8076) | function hiddenTextarea() {
  function addEditorMethods (line 8099) | function addEditorMethods(CodeMirror) {
  function findPosH (line 8542) | function findPosH(doc, pos, dir, unit, visually) {
  function findPosV (line 8602) | function findPosV(cm, pos, dir, unit) {
  function onCopyCut (line 8665) | function onCopyCut(e) {
  function poll (line 8819) | function poll() {
  function posToDOM (line 8985) | function posToDOM(cm, pos) {
  function isInGutter (line 9001) | function isInGutter(node) {
  function badPos (line 9007) | function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }
  function domTextBetween (line 9009) | function domTextBetween(cm, from, to, fromLine, toLine) {
  function domToPos (line 9056) | function domToPos(cm, node, offset) {
  function locateNodeInLineView (line 9075) | function locateNodeInLineView(lineView, node, offset) {
  function prepareCopyCut (line 9175) | function prepareCopyCut(e) {
  function p (line 9307) | function p() {
  function prepareSelectAllHack (line 9410) | function prepareSelectAllHack() {
  function rehide (line 9423) | function rehide() {
  function fromTextArea (line 9469) | function fromTextArea(textarea, options) {
  function addLegacyProps (line 9526) | function addLegacyProps(CodeMirror) {

FILE: ui/vendor/codemirror/matchbrackets.js
  function findMatchingBracket (line 19) | function findMatchingBracket(cm, where, config) {
  function scanForBracket (line 49) | function scanForBracket(cm, where, dir, style, config) {
  function matchBrackets (line 76) | function matchBrackets(cm, autoclear, config) {
  function doMatchBrackets (line 106) | function doMatchBrackets(cm) {

FILE: ui/vendor/codemirror/simplescrollbars.js
  function Bar (line 14) | function Bar(cls, orientation, scroll) {
  function SimpleScrollbars (line 96) | function SimpleScrollbars(cls, place, scroll) {

FILE: ui/vendor/picodom/picodom.js
  function t (line 1) | function t(e,t){var n,r=[];for(u=arguments.length;u-- >2;)d.push(argumen...
  function n (line 1) | function n(e,t,a,l,u,d){if(null==a)t=e.insertBefore(o(l,u),t);else if(nu...
  function r (line 1) | function r(e){if(e&&(e=e.data))return e.key}
  function a (line 1) | function a(e,t){var n={};for(var r in e)n[r]=e[r];for(var r in t)n[r]=t[...
  function o (line 1) | function o(e,t){if("string"==typeof e)var n=document.createTextNode(e);e...
  function i (line 1) | function i(e,t,n){for(var r in a(t,n)){var o=n[r],i="value"===r||"checke...
  function f (line 1) | function f(e,t,n){n&&n.onremove?n.onremove(t):e.removeChild(t)}
  function l (line 1) | function l(e,t,n,r){if("key"===t);else if("style"===t)for(var o in a(r,n...

FILE: vendor/github.com/jteeuwen/go-bindata/asset.go
  type Asset (line 8) | type Asset struct
  type ByPath (line 15) | type ByPath
    method Len (line 17) | func (v ByPath) Len() int           { return len(v) }
    method Swap (line 18) | func (v ByPath) Swap(i, j int)      { v[i], v[j] = v[j], v[i] }
    method Less (line 19) | func (v ByPath) Less(i, j int) bool { return v[i].Path < v[j].Path }

FILE: vendor/github.com/jteeuwen/go-bindata/bytewriter.go
  type ByteWriter (line 18) | type ByteWriter struct
    method Write (line 23) | func (w *ByteWriter) Write(p []byte) (n int, err error) {

FILE: vendor/github.com/jteeuwen/go-bindata/config.go
  type InputConfig (line 15) | type InputConfig struct
  type Config (line 26) | type Config struct
    method validate (line 148) | func (c *Config) validate() error {
  function NewConfig (line 134) | func NewConfig() *Config {

FILE: vendor/github.com/jteeuwen/go-bindata/convert.go
  function Translate (line 21) | func Translate(c *Config) error {
  function findFiles (line 89) | func findFiles(dir, prefix string, recursive bool, toc *[]Asset, ignore ...
  function safeFunctionName (line 173) | func safeFunctionName(name string, knownFuncs map[string]int) string {

FILE: vendor/github.com/jteeuwen/go-bindata/debug.go
  function writeDebug (line 13) | func writeDebug(w io.Writer, toc []Asset) error {
  function writeDebugHeader (line 31) | func writeDebugHeader(w io.Writer) error {
  function writeDebugAsset (line 54) | func writeDebugAsset(w io.Writer, asset *Asset) error {

FILE: vendor/github.com/jteeuwen/go-bindata/go-bindata/AppendSliceValue.go
  type AppendSliceValue (line 9) | type AppendSliceValue
    method String (line 11) | func (s *AppendSliceValue) String() string {
    method Set (line 15) | func (s *AppendSliceValue) Set(value string) error {

FILE: vendor/github.com/jteeuwen/go-bindata/go-bindata/main.go
  function main (line 17) | func main() {
  function parseArgs (line 32) | func parseArgs() *bindata.Config {
  function parseInput (line 89) | func parseInput(path string) bindata.InputConfig {

FILE: vendor/github.com/jteeuwen/go-bindata/go-bindata/version.go
  constant AppName (line 13) | AppName         = "go-bindata"
  constant AppVersionMajor (line 14) | AppVersionMajor = 3
  constant AppVersionMinor (line 15) | AppVersionMinor = 1
  function Version (line 24) | func Version() string {

FILE: vendor/github.com/jteeuwen/go-bindata/release.go
  function writeRelease (line 18) | func writeRelease(w io.Writer, c *Config, toc []Asset) error {
  function writeReleaseHeader (line 36) | func writeReleaseHeader(w io.Writer, c *Config) error {
  function writeReleaseAsset (line 55) | func writeReleaseAsset(w io.Writer, c *Config, asset *Asset) error {
  function sanitize (line 80) | func sanitize(b []byte) []byte {
  function header_compressed_nomemcopy (line 91) | func header_compressed_nomemcopy(w io.Writer) error {
  function header_compressed_memcopy (line 131) | func header_compressed_memcopy(w io.Writer) error {
  function header_uncompressed_nomemcopy (line 161) | func header_uncompressed_nomemcopy(w io.Writer) error {
  function header_uncompressed_memcopy (line 184) | func header_uncompressed_memcopy(w io.Writer) error {
  function compressed_nomemcopy (line 193) | func compressed_nomemcopy(w io.Writer, asset *Asset, r io.Reader) error {
  function compressed_memcopy (line 220) | func compressed_memcopy(w io.Writer, asset *Asset, r io.Reader) error {
  function uncompressed_nomemcopy (line 247) | func uncompressed_nomemcopy(w io.Writer, asset *Asset, r io.Reader) error {
  function uncompressed_memcopy (line 271) | func uncompressed_memcopy(w io.Writer, asset *Asset, r io.Reader) error {

FILE: vendor/github.com/jteeuwen/go-bindata/stringwriter.go
  constant lowerHex (line 11) | lowerHex = "0123456789abcdef"
  type StringWriter (line 13) | type StringWriter struct
    method Write (line 18) | func (w *StringWriter) Write(p []byte) (n int, err error) {

FILE: vendor/github.com/jteeuwen/go-bindata/testdata/out/compress-memcopy.go
  function bindata_read (line 10) | func bindata_read(data []byte, name string) []byte {
  function in_b_test_asset (line 27) | func in_b_test_asset() []byte {
  function in_test_asset (line 38) | func in_test_asset() []byte {
  function in_a_test_asset (line 49) | func in_a_test_asset() []byte {
  function in_c_test_asset (line 60) | func in_c_test_asset() []byte {
  function Asset (line 73) | func Asset(name string) []byte {

FILE: vendor/github.com/jteeuwen/go-bindata/testdata/out/compress-nomemcopy.go
  function bindata_read (line 12) | func bindata_read(data, name string) []byte {
  function in_b_test_asset (line 39) | func in_b_test_asset() []byte {
  function in_test_asset (line 48) | func in_test_asset() []byte {
  function in_a_test_asset (line 57) | func in_a_test_asset() []byte {
  function in_c_test_asset (line 66) | func in_c_test_asset() []byte {
  function Asset (line 75) | func Asset(name string) []byte {

FILE: vendor/github.com/jteeuwen/go-bindata/testdata/out/debug.go
  function bindata_read (line 12) | func bindata_read(path, name string) []byte {
  function in_b_test_asset (line 31) | func in_b_test_asset() []byte {
  function in_test_asset (line 40) | func in_test_asset() []byte {
  function in_a_test_asset (line 49) | func in_a_test_asset() []byte {
  function in_c_test_asset (line 58) | func in_c_test_asset() []byte {
  function Asset (line 67) | func Asset(name string) []byte {

FILE: vendor/github.com/jteeuwen/go-bindata/testdata/out/nocompress-memcopy.go
  function in_b_test_asset (line 3) | func in_b_test_asset() []byte {
  function in_test_asset (line 10) | func in_test_asset() []byte {
  function in_a_test_asset (line 17) | func in_a_test_asset() []byte {
  function in_c_test_asset (line 24) | func in_c_test_asset() []byte {
  function Asset (line 33) | func Asset(name string) []byte {

FILE: vendor/github.com/jteeuwen/go-bindata/testdata/out/nocompress-nomemcopy.go
  function bindata_read (line 8) | func bindata_read(data, name string) []byte {
  function in_b_test_asset (line 21) | func in_b_test_asset() []byte {
  function in_test_asset (line 30) | func in_test_asset() []byte {
  function in_a_test_asset (line 39) | func in_a_test_asset() []byte {
  function in_c_test_asset (line 48) | func in_c_test_asset() []byte {
  function Asset (line 57) | func Asset(name string) []byte {

FILE: vendor/github.com/jteeuwen/go-bindata/toc.go
  type assetTree (line 15) | type assetTree struct
    method child (line 26) | func (node *assetTree) child(name string) *assetTree {
    method Add (line 35) | func (root *assetTree) Add(route []string, asset Asset) {
    method funcOrNil (line 48) | func (root *assetTree) funcOrNil() string {
    method writeGoMap (line 56) | func (root *assetTree) writeGoMap(w io.Writer, nident int) {
    method WriteAsGoMap (line 81) | func (root *assetTree) WriteAsGoMap(w io.Writer) error {
  function newAssetTree (line 20) | func newAssetTree() *assetTree {
  function ident (line 42) | func ident(w io.Writer, n int) {
  function writeTOCTree (line 91) | func writeTOCTree(w io.Writer, toc []Asset) error {
  function writeTOC (line 140) | func writeTOC(w io.Writer, toc []Asset) error {
  function writeTOCHeader (line 157) | func writeTOCHeader(w io.Writer) error {
  function writeTOCAsset (line 185) | func writeTOCAsset(w io.Writer, asset *Asset) error {
  function writeTOCFooter (line 191) | func writeTOCFooter(w io.Writer) error {

FILE: vendor/github.com/thestk/rtaudio/RtAudio.cpp
  function convertCharPointerToStdString (line 66) | static std::string convertCharPointerToStdString(const char *text)
  function convertCharPointerToStdString (line 71) | static std::string convertCharPointerToStdString(const wchar_t *text)
  type timeval (line 409) | struct timeval
  type timeval (line 410) | struct timeval
  type CoreHandle (line 469) | struct CoreHandle {
    method CoreHandle (line 482) | CoreHandle()
  function OSStatus (line 835) | static OSStatus callbackHandler( AudioDeviceID inDevice,
  function OSStatus (line 852) | static OSStatus xrunListener( AudioObjectID /*inDevice*/,
  function OSStatus (line 870) | static OSStatus rateListener( AudioObjectID inDevice,
  type JackHandle (line 1934) | struct JackHandle {
    method JackHandle (line 1943) | JackHandle()
  function jackCallbackHandler (line 2091) | static int jackCallbackHandler( jack_nframes_t nframes, void *infoPointer )
  function jackShutdown (line 2114) | static void jackShutdown( void *infoPointer )
  function jackXrun (line 2131) | static int jackXrun( void *infoPointer )
  type AsioHandle (line 2706) | struct AsioHandle {
    method AsioHandle (line 2712) | AsioHandle()
  function bufferSwitch (line 2871) | static void bufferSwitch( long index, ASIOBool /*processNow*/ )
  function asioStopStream (line 3396) | static unsigned __stdcall asioStopStream( void *ptr )
  function sampleRateChanged (line 3560) | static void sampleRateChanged( ASIOSampleRate sRate )
  function asioMessages (line 3580) | static long asioMessages( long selector, long value, void* /*message*/, ...
  type Messages (line 3652) | struct Messages
  class WasapiBuffer (line 3713) | class WasapiBuffer
    method WasapiBuffer (line 3716) | WasapiBuffer()
    method setBufferSize (line 3727) | void setBufferSize( unsigned int bufferSize, unsigned int formatBytes ) {
    method pushBuffer (line 3738) | bool pushBuffer( char* buffer, unsigned int bufferSize, RtAudioFormat ...
    method pullBuffer (line 3799) | bool pullBuffer( char* buffer, unsigned int bufferSize, RtAudioFormat ...
  type WasapiHandle (line 3869) | struct WasapiHandle
    method WasapiHandle (line 3878) | WasapiHandle()
  function DWORD (line 4610) | DWORD WINAPI RtApiWasapi::runWasapiThread( void* wasapiPtr )
  function DWORD (line 4618) | DWORD WINAPI RtApiWasapi::stopWasapiThread( void* wasapiPtr )
  function DWORD (line 4626) | DWORD WINAPI RtApiWasapi::abortWasapiThread( void* wasapiPtr )
  function DWORD (line 5144) | static inline DWORD dsPointerBetween( DWORD pointer, DWORD laterPointer,...
  type DsHandle (line 5154) | struct DsHandle {
    method DsHandle (line 5165) | DsHandle()
  type DsDevice (line 5180) | struct DsDevice {
    method DsDevice (line 5186) | DsDevice()
  type DsProbeData (line 5190) | struct DsProbeData {
    type DsDevice (line 5192) | struct DsDevice
  type DsProbeData (line 5231) | struct DsProbeData
    type DsDevice (line 5192) | struct DsDevice
  function callbackHandler (line 6586) | static unsigned __stdcall callbackHandler( void *ptr )
  function BOOL (line 6600) | static BOOL CALLBACK deviceQueryCallback( LPGUID lpguid,
  type AlsaHandle (line 6742) | struct AlsaHandle {
    method AlsaHandle (line 6749) | AlsaHandle()
  type rtaudio_pa_format_mapping_t (line 8032) | struct rtaudio_pa_format_mapping_t {
  type PulseAudioHandle (line 8043) | struct PulseAudioHandle {
    method PulseAudioHandle (line 8049) | PulseAudioHandle() : s_play(0), s_rec(0), runnable(false) { }
  type OssHandle (line 8522) | struct OssHandle {
    method OssHandle (line 8528) | OssHandle()
  type sched_param (line 9065) | struct sched_param

FILE: vendor/github.com/thestk/rtaudio/RtAudio.h
  type RtAudioFormat (line 81) | typedef unsigned long RtAudioFormat;
  type RtAudioStreamFlags (line 135) | typedef unsigned int RtAudioStreamFlags;
  type RtAudioStreamStatus (line 154) | typedef unsigned int RtAudioStreamStatus;
  type Type (line 217) | enum Type {
  function virtual (line 241) | virtual const Type& getType(void) const { return type_; }
  function virtual (line 244) | virtual const std::string getMessage(void) const
  type Api (line 278) | enum Api {
  function isStreamRunning (line 292) | struct DeviceInfo {
  function showWarnings (line 711) | void showWarnings( bool value ) { showWarnings_ = value; }
  type StreamState (line 721) | enum StreamState {
  type StreamMode (line 728) | enum StreamMode {
  type ConvertInfo (line 736) | struct ConvertInfo {
  type RtApiStream (line 745) | struct RtApiStream {
  function getDefaultInputDevice (line 842) | inline unsigned int RtAudio :: getDefaultInputDevice( void ) { return rt...
  function getDefaultOutputDevice (line 843) | inline unsigned int RtAudio :: getDefaultOutputDevice( void ) { return r...
  function closeStream (line 844) | inline void RtAudio :: closeStream( void ) { return rtapi_->closeStream(...
  function startStream (line 845) | inline void RtAudio :: startStream( void ) { return rtapi_->startStream(...
  function stopStream (line 846) | inline void RtAudio :: stopStream( void )  { return rtapi_->stopStream(); }
  function abortStream (line 847) | inline void RtAudio :: abortStream( void ) { return rtapi_->abortStream(...
  function isStreamOpen (line 848) | inline bool RtAudio :: isStreamOpen( void ) const { return rtapi_->isStr...
  function isStreamRunning (line 849) | inline bool RtAudio :: isStreamRunning( void ) const { return rtapi_->is...
  function getStreamLatency (line 850) | inline long RtAudio :: getStreamLatency( void ) { return rtapi_->getStre...
  function getStreamSampleRate (line 851) | inline unsigned int RtAudio :: getStreamSampleRate( void ) { return rtap...
  function getStreamTime (line 852) | inline double RtAudio :: getStreamTime( void ) { return rtapi_->getStrea...
  function setStreamTime (line 853) | inline void RtAudio :: setStreamTime( double time ) { return rtapi_->set...
  function showWarnings (line 854) | inline void RtAudio :: showWarnings( bool value ) { rtapi_->showWarnings...
  function class (line 862) | class RtApiCore: public RtApi
  function class (line 900) | class RtApiJack: public RtApi
  function class (line 935) | class RtApiAsio: public RtApi
  function class (line 971) | class RtApiDs: public RtApi
  type IMMDeviceEnumerator (line 1010) | struct IMMDeviceEnumerator
  function class (line 1012) | class RtApiWasapi : public RtApi
  function class (line 1047) | class RtApiAlsa: public RtApi
  function class (line 1081) | class RtApiPulse: public RtApi
  function class (line 1113) | class RtApiOss: public RtApi
  function class (line 1145) | class RtApiDummy: public RtApi

FILE: vendor/github.com/thestk/rtaudio/contrib/go/rtaudio/rtaudio.go
  type API (line 53) | type API
    method String (line 78) | func (api API) String() string {
  constant APIUnspecified (line 57) | APIUnspecified API = C.RTAUDIO_API_UNSPECIFIED
  constant APILinuxALSA (line 59) | APILinuxALSA = C.RTAUDIO_API_LINUX_ALSA
  constant APILinuxPulse (line 61) | APILinuxPulse = C.RTAUDIO_API_LINUX_PULSE
  constant APILinuxOSS (line 63) | APILinuxOSS = C.RTAUDIO_API_LINUX_OSS
  constant APIUnixJack (line 65) | APIUnixJack = C.RTAUDIO_API_UNIX_JACK
  constant APIMacOSXCore (line 67) | APIMacOSXCore = C.RTAUDIO_API_MACOSX_CORE
  constant APIWindowsWASAPI (line 69) | APIWindowsWASAPI = C.RTAUDIO_API_WINDOWS_WASAPI
  constant APIWindowsASIO (line 71) | APIWindowsASIO = C.RTAUDIO_API_WINDOWS_ASIO
  constant APIWindowsDS (line 73) | APIWindowsDS = C.RTAUDIO_API_WINDOWS_DS
  constant APIDummy (line 75) | APIDummy = C.RTAUDIO_API_DUMMY
  type StreamStatus (line 105) | type StreamStatus
  constant StatusInputOverflow (line 110) | StatusInputOverflow StreamStatus = C.RTAUDIO_STATUS_INPUT_OVERFLOW
  constant StatusOutputUnderflow (line 113) | StatusOutputUnderflow StreamStatus = C.RTAUDIO_STATUS_OUTPUT_UNDERFLOW
  function Version (line 117) | func Version() string {
  function CompiledAPI (line 122) | func CompiledAPI() (apis []API) {
  type DeviceInfo (line 135) | type DeviceInfo struct
  type StreamParams (line 151) | type StreamParams struct
  type StreamFlags (line 158) | type StreamFlags
  constant FlagsNoninterleaved (line 162) | FlagsNoninterleaved = C.RTAUDIO_FLAGS_NONINTERLEAVED
  constant FlagsMinimizeLatency (line 164) | FlagsMinimizeLatency = C.RTAUDIO_FLAGS_MINIMIZE_LATENCY
  constant FlagsHogDevice (line 166) | FlagsHogDevice = C.RTAUDIO_FLAGS_HOG_DEVICE
  constant FlagsScheduleRealtime (line 168) | FlagsScheduleRealtime = C.RTAUDIO_FLAGS_SCHEDULE_REALTIME
  constant FlagsAlsaUseDefault (line 170) | FlagsAlsaUseDefault = C.RTAUDIO_FLAGS_ALSA_USE_DEFAULT
  type StreamOptions (line 174) | type StreamOptions struct
  type RtAudio (line 182) | type RtAudio interface
  type rtaudio (line 206) | type rtaudio struct
    method Destroy (line 225) | func (audio *rtaudio) Destroy() {
    method CurrentAPI (line 229) | func (audio *rtaudio) CurrentAPI() API {
    method DefaultInputDevice (line 233) | func (audio *rtaudio) DefaultInputDevice() int {
    method DefaultOutputDevice (line 237) | func (audio *rtaudio) DefaultOutputDevice() int {
    method Devices (line 241) | func (audio *rtaudio) Devices() ([]DeviceInfo, error) {
    method Open (line 441) | func (audio *rtaudio) Open(out, in *StreamParams, format Format, sampl...
    method Close (line 487) | func (audio *rtaudio) Close() {
    method Start (line 492) | func (audio *rtaudio) Start() error {
    method Stop (line 500) | func (audio *rtaudio) Stop() error {
    method Abort (line 508) | func (audio *rtaudio) Abort() error {
    method IsOpen (line 516) | func (audio *rtaudio) IsOpen() bool {
    method IsRunning (line 520) | func (audio *rtaudio) IsRunning() bool {
    method Latency (line 524) | func (audio *rtaudio) Latency() (int, error) {
    method SampleRate (line 532) | func (audio *rtaudio) SampleRate() (uint, error) {
    method Time (line 540) | func (audio *rtaudio) Time() (time.Duration, error) {
    method SetTime (line 548) | func (audio *rtaudio) SetTime(t time.Duration) error {
    method ShowWarnings (line 557) | func (audio *rtaudio) ShowWarnings(show bool) {
  function Create (line 217) | func Create(api API) (RtAudio, error) {
  type Format (line 273) | type Format
  constant FormatInt8 (line 277) | FormatInt8 Format = C.RTAUDIO_FORMAT_SINT8
  constant FormatInt16 (line 279) | FormatInt16 = C.RTAUDIO_FORMAT_SINT16
  constant FormatInt24 (line 281) | FormatInt24 = C.RTAUDIO_FORMAT_SINT24
  constant FormatInt32 (line 283) | FormatInt32 = C.RTAUDIO_FORMAT_SINT32
  constant FormatFloat32 (line 285) | FormatFloat32 = C.RTAUDIO_FORMAT_FLOAT32
  constant FormatFloat64 (line 287) | FormatFloat64 = C.RTAUDIO_FORMAT_FLOAT64
  type Buffer (line 291) | type Buffer interface
  type Int24 (line 302) | type Int24
    method Set (line 305) | func (i *Int24) Set(n int32) {
    method Get (line 310) | func (i Int24) Get() int32 {
  type buffer (line 318) | type buffer struct
    method Len (line 325) | func (b *buffer) Len() int {
    method Int8 (line 332) | func (b *buffer) Int8() []int8 {
    method Int16 (line 342) | func (b *buffer) Int16() []int16 {
    method Int24 (line 352) | func (b *buffer) Int24() []Int24 {
    method Int32 (line 362) | func (b *buffer) Int32() []int32 {
    method Float32 (line 372) | func (b *buffer) Float32() []float32 {
    method Float64 (line 382) | func (b *buffer) Float64() []float64 {
  type Callback (line 394) | type Callback
  function registerAudio (line 401) | func registerAudio(a *rtaudio) int {
  function unregisterAudio (line 412) | func unregisterAudio(a *rtaudio) {
  function findAudio (line 423) | func findAudio(k int) *rtaudio {
  function goCallback (line 430) | func goCallback(out, in unsafe.Pointer, frames C.uint, sec C.double,

FILE: vendor/github.com/thestk/rtaudio/contrib/go/rtaudio/rtaudio_test.go
  function ExampleCompiledAPI (line 9) | func ExampleCompiledAPI() {
  function ExampleRtAudio_Devices (line 16) | func ExampleRtAudio_Devices() {
  function ExampleRtAudio_Open (line 31) | func ExampleRtAudio_Open() {

FILE: vendor/github.com/thestk/rtaudio/contrib/python/pyrtaudio/PyRtAudioTest.py
  class audio_generator (line 9) | class audio_generator:
    method __init__ (line 10) | def __init__(self):
    method __call__ (line 13) | def __call__(self):
  class callback (line 20) | class callback:
    method __init__ (line 21) | def __init__(self, gen):
    method __call__ (line 24) | def __call__(self,playback, capture):

FILE: vendor/github.com/thestk/rtaudio/contrib/python/pyrtaudio/rtaudiomodule.cpp
  function callback (line 53) | static int callback(void *outputBuffer, void *inputBuffer, unsigned int ...
  function RtAudio_dealloc (line 107) | static void RtAudio_dealloc(PyRtAudio *self)
  function PyObject (line 122) | static PyObject* RtAudio_new(PyTypeObject *type, PyObject *args, PyObjec...
  function RtAudio_init (line 166) | static int RtAudio_init(PyRtAudio *self, PyObject *args, PyObject *kwds)
  function PyObject (line 175) | static PyObject* RtAudio_openStream(PyRtAudio *self, PyObject *args)
  function PyObject (line 275) | static PyObject* RtAudio_closeStream(PyRtAudio *self, PyObject *args)
  function PyObject (line 293) | static PyObject* RtAudio_startStream(PyRtAudio *self, PyObject *args)
  function PyObject (line 310) | static PyObject* RtAudio_stopStream(PyRtAudio *self, PyObject *args)
  function PyObject (line 327) | static PyObject* RtAudio_abortStream(PyRtAudio *self, PyObject *args)
  function PyObject (line 343) | static PyObject* RtAudio_isStreamRunning(PyRtAudio *self, PyObject *args)
  function PyObject (line 356) | static PyObject* RtAudio_isStreamOpen(PyRtAudio *self, PyObject *args)
  function PyObject (line 370) | static PyObject* RtAudio_getDeviceCount(PyRtAudio *self, PyObject *args)
  function PyObject (line 377) | static PyObject* RtAudio_getDeviceInfo(PyRtAudio *self, PyObject *args)
  function PyObject (line 440) | static PyObject* RtAudio_getDefaultOutputDevice(PyRtAudio *self, PyObjec...
  function PyObject (line 446) | static PyObject* RtAudio_getDefaultInputDevice(PyRtAudio *self, PyObject...
  function PyObject (line 452) | static PyObject* RtAudio_getStreamTime(PyRtAudio *self, PyObject *args)
  function PyObject (line 458) | static PyObject* RtAudio_getStreamLatency(PyRtAudio *self, PyObject *args)
  function PyObject (line 464) | static PyObject* RtAudio_getStreamSampleRate(PyRtAudio *self, PyObject *...
  function PyObject (line 470) | static PyObject* RtAudio_showWarnings(PyRtAudio *self, PyObject *args)
  function PyMODINIT_FUNC (line 586) | PyMODINIT_FUNC

FILE: vendor/github.com/thestk/rtaudio/include/asio.cpp
  function main (line 25) | long main()
  function ASIOError (line 45) | ASIOError ASIOInit(ASIODriverInfo *info)
  function ASIOError (line 96) | ASIOError ASIOExit(void)
  function ASIOError (line 110) | ASIOError ASIOStart(void)
  function ASIOError (line 117) | ASIOError ASIOStop(void)
  function ASIOError (line 124) | ASIOError ASIOGetChannels(long *numInputChannels, long *numOutputChannels)
  function ASIOError (line 134) | ASIOError ASIOGetLatencies(long *inputLatency, long *outputLatency)
  function ASIOError (line 144) | ASIOError ASIOGetBufferSize(long *minSize, long *maxSize, long *preferre...
  function ASIOError (line 154) | ASIOError ASIOCanSampleRate(ASIOSampleRate sampleRate)
  function ASIOError (line 161) | ASIOError ASIOGetSampleRate(ASIOSampleRate *currentRate)
  function ASIOError (line 168) | ASIOError ASIOSetSampleRate(ASIOSampleRate sampleRate)
  function ASIOError (line 175) | ASIOError ASIOGetClockSources(ASIOClockSource *clocks, long *numSources)
  function ASIOError (line 185) | ASIOError ASIOSetClockSource(long reference)
  function ASIOError (line 192) | ASIOError ASIOGetSamplePosition(ASIOSamples *sPos, ASIOTimeStamp *tStamp)
  function ASIOError (line 199) | ASIOError ASIOGetChannelInfo(ASIOChannelInfo *info)
  function ASIOError (line 211) | ASIOError ASIOCreateBuffers(ASIOBufferInfo *bufferInfos, long numChannels,
  function ASIOError (line 224) | ASIOError ASIODisposeBuffers(void)
  function ASIOError (line 231) | ASIOError ASIOControlPanel(void)
  function ASIOError (line 238) | ASIOError ASIOFuture(long selector, void *opt)
  function ASIOError (line 245) | ASIOError ASIOOutputReady(void)

FILE: vendor/github.com/thestk/rtaudio/include/asio.h
  type ASIOSamples (line 90) | typedef long long int ASIOSamples;
  type ASIOSamples (line 92) | typedef struct ASIOSamples {
  type ASIOTimeStamp (line 101) | typedef long long int ASIOTimeStamp ;
  type ASIOTimeStamp (line 103) | typedef struct ASIOTimeStamp {
  type ASIOSampleRate (line 112) | typedef double ASIOSampleRate;
  type ASIOSampleRate (line 114) | typedef struct ASIOSampleRate {
  type ASIOBool (line 120) | typedef long ASIOBool;
  type ASIOSampleType (line 127) | typedef long ASIOSampleType;
  type ASIOError (line 207) | typedef long ASIOError;
  type ASIOTimeCode (line 227) | typedef struct ASIOTimeCode
  type ASIOTimeCodeFlags (line 236) | typedef enum ASIOTimeCodeFlags
  type AsioTimeInfo (line 247) | typedef struct AsioTimeInfo
  type AsioTimeInfoFlags (line 259) | typedef enum AsioTimeInfoFlags
  type ASIOTime (line 270) | typedef struct ASIOTime                          // both input/output
  type ASIOCallbacks (line 390) | typedef struct ASIOCallbacks
  type ASIODriverInfo (line 475) | typedef struct ASIODriverInfo
  type ASIOClockSource (line 677) | typedef struct ASIOClockSource
  type ASIOChannelInfo (line 765) | typedef struct ASIOChannelInfo
  type ASIOBufferInfo (line 814) | typedef struct ASIOBufferInfo
  type ASIOInputMonitor (line 928) | typedef struct ASIOInputMonitor
  type ASIOChannelControls (line 937) | typedef struct ASIOChannelControls
  type ASIOTransportParameters (line 946) | typedef struct ASIOTransportParameters
  type ASIOIoFormatType (line 992) | typedef long int ASIOIoFormatType;
  type ASIOIoFormatType_e (line 993) | enum ASIOIoFormatType_e
  type ASIOIoFormat (line 1000) | typedef struct ASIOIoFormat_s

FILE: vendor/github.com/thestk/rtaudio/include/asiodrivers.cpp
  function loadAsioDriver (line 8) | bool loadAsioDriver(char *name)

FILE: vendor/github.com/thestk/rtaudio/include/asiodrivers.h
  function getCurrentDriverIndex (line 35) | long getCurrentDriverIndex() {return curIndex;}

FILE: vendor/github.com/thestk/rtaudio/include/asiodrvr.h
  function class (line 39) | class AsioDriver

FILE: vendor/github.com/thestk/rtaudio/include/asiolist.cpp
  function LONG (line 13) | static LONG findDrvPath (char *clsidstr,char *dllpath,int dllpathsize)
  function LPASIODRVSTRUCT (line 89) | static LPASIODRVSTRUCT newDrvStruct (HKEY hkey,char *keyname,int drvID,L...
  function deleteDrvStruct (line 133) | static void deleteDrvStruct (LPASIODRVSTRUCT lpdrv)
  function LPASIODRVSTRUCT (line 148) | static LPASIODRVSTRUCT getDrvStruct (int drvID,LPASIODRVSTRUCT lpdrv)
  function LONG (line 209) | LONG AsioDriverList::asioGetNumDev (VOID)
  function LONG (line 215) | LONG AsioDriverList::asioOpenDriver (int drvID,LPVOID *asiodrv)
  function LONG (line 240) | LONG AsioDriverList::asioCloseDriver (int drvID)
  function LONG (line 256) | LONG AsioDriverList::asioGetDriverName (int drvID,char *drvname,int drvn...
  function LONG (line 278) | LONG AsioDriverList::asioGetDriverPath (int drvID,char *dllpath,int dllp...
  function LONG (line 295) | LONG AsioDriverList::asioGetDriverCLSID (int drvID,CLSID *clsid)

FILE: vendor/github.com/thestk/rtaudio/include/asiolist.h
  type asiodrvstruct (line 12) | struct asiodrvstruct
  type ASIODRVSTRUCT (line 22) | typedef struct asiodrvstruct ASIODRVSTRUCT;
  type ASIODRVSTRUCT (line 23) | typedef ASIODRVSTRUCT	*LPASIODRVSTRUCT;
  function class (line 25) | class AsioDriverList {
  type class (line 44) | typedef class AsioDriverList

FILE: vendor/github.com/thestk/rtaudio/include/dsound.h
  type D3DVALUE (line 29) | typedef float D3DVALUE, *LPD3DVALUE;
  type DWORD (line 32) | typedef DWORD D3DCOLOR;
  type DWORD (line 37) | typedef DWORD *LPD3DCOLOR;
  type D3DVECTOR (line 42) | typedef struct _D3DVECTOR {
  type D3DVECTOR (line 51) | typedef D3DVECTOR *LPD3DVECTOR;
  type IDirectSound (line 96) | struct IDirectSound
  type IDirectSoundBuffer (line 97) | struct IDirectSoundBuffer
  type IDirectSound3DListener (line 98) | struct IDirectSound3DListener
  type IDirectSound3DBuffer (line 99) | struct IDirectSound3DBuffer
  type IDirectSoundCapture (line 100) | struct IDirectSoundCapture
  type IDirectSoundCaptureBuffer (line 101) | struct IDirectSoundCaptureBuffer
  type IDirectSoundNotify (line 102) | struct IDirectSoundNotify
  type IDirectSound8 (line 113) | struct IDirectSound8
  type IDirectSoundBuffer8 (line 114) | struct IDirectSoundBuffer8
  type IDirectSoundCaptureBuffer8 (line 115) | struct IDirectSoundCaptureBuffer8
  type IDirectSoundFXGargle (line 116) | struct IDirectSoundFXGargle
  type IDirectSoundFXChorus (line 117) | struct IDirectSoundFXChorus
  type IDirectSoundFXFlanger (line 118) | struct IDirectSoundFXFlanger
  type IDirectSoundFXEcho (line 119) | struct IDirectSoundFXEcho
  type IDirectSoundFXDistortion (line 120) | struct IDirectSoundFXDistortion
  type IDirectSoundFXCompressor (line 121) | struct IDirectSoundFXCompressor
  type IDirectSoundFXParamEq (line 122) | struct IDirectSoundFXParamEq
  type IDirectSoundFXWavesReverb (line 123) | struct IDirectSoundFXWavesReverb
  type IDirectSoundFXI3DL2Reverb (line 124) | struct IDirectSoundFXI3DL2Reverb
  type IDirectSoundCaptureFXAec (line 125) | struct IDirectSoundCaptureFXAec
  type IDirectSoundCaptureFXNoiseSuppress (line 126) | struct IDirectSoundCaptureFXNoiseSuppress
  type IDirectSoundFullDuplex (line 127) | struct IDirectSoundFullDuplex
  type IDirectSound (line 153) | struct IDirectSound
  type IDirectSoundBuffer (line 154) | struct IDirectSoundBuffer
  type IDirectSound3DListener (line 155) | struct IDirectSound3DListener
  type IDirectSound3DBuffer (line 156) | struct IDirectSound3DBuffer
  type IDirectSoundCapture (line 157) | struct IDirectSoundCapture
  type IDirectSoundCaptureBuffer (line 158) | struct IDirectSoundCaptureBuffer
  type IDirectSoundNotify (line 159) | struct IDirectSoundNotify
  type IDirectSoundFXGargle (line 164) | struct IDirectSoundFXGargle
  type IDirectSoundFXChorus (line 165) | struct IDirectSoundFXChorus
  type IDirectSoundFXFlanger (line 166) | struct IDirectSoundFXFlanger
  type IDirectSoundFXEcho (line 167) | struct IDirectSoundFXEcho
  type IDirectSoundFXDistortion (line 168) | struct IDirectSoundFXDistortion
  type IDirectSoundFXCompressor (line 169) | struct IDirectSoundFXCompressor
  type IDirectSoundFXParamEq (line 170) | struct IDirectSoundFXParamEq
  type IDirectSoundFXWavesReverb (line 171) | struct IDirectSoundFXWavesReverb
  type IDirectSoundFXI3DL2Reverb (line 172) | struct IDirectSoundFXI3DL2Reverb
  type IDirectSoundCaptureFXAec (line 173) | struct IDirectSoundCaptureFXAec
  type IDirectSoundCaptureFXNoiseSuppress (line 174) | struct IDirectSoundCaptureFXNoiseSuppress
  type IDirectSoundFullDuplex (line 175) | struct IDirectSoundFullDuplex
  type IDirectSound8 (line 177) | struct IDirectSound8
  type IDirectSoundBuffer8 (line 178) | struct IDirectSoundBuffer8
  type IDirectSound3DListener8 (line 179) | struct IDirectSound3DListener8
  type IDirectSound3DBuffer8 (line 180) | struct IDirectSound3DBuffer8
  type IDirectSoundCapture8 (line 181) | struct IDirectSoundCapture8
  type IDirectSoundCaptureBuffer8 (line 182) | struct IDirectSoundCaptureBuffer8
  type IDirectSoundNotify8 (line 183) | struct IDirectSoundNotify8
  type IDirectSoundFXGargle8 (line 184) | struct IDirectSoundFXGargle8
  type IDirectSoundFXChorus8 (line 185) | struct IDirectSoundFXChorus8
  type IDirectSoundFXFlanger8 (line 186) | struct IDirectSoundFXFlanger8
  type IDirectSoundFXEcho8 (line 187) | struct IDirectSoundFXEcho8
  type IDirectSoundFXDistortion8 (line 188) | struct IDirectSoundFXDistortion8
  type IDirectSoundFXCompressor8 (line 189) | struct IDirectSoundFXCompressor8
  type IDirectSoundFXParamEq8 (line 190) | struct IDirectSoundFXParamEq8
  type IDirectSoundFXWavesReverb8 (line 191) | struct IDirectSoundFXWavesReverb8
  type IDirectSoundFXI3DL2Reverb8 (line 192) | struct IDirectSoundFXI3DL2Reverb8
  type IDirectSoundCaptureFXAec8 (line 193) | struct IDirectSoundCaptureFXAec8
  type IDirectSoundCaptureFXNoiseSuppress8 (line 194) | struct IDirectSoundCaptureFXNoiseSuppress8
  type IDirectSoundFullDuplex8 (line 195) | struct IDirectSoundFullDuplex8
  type WAVEFORMATEX (line 230) | typedef const WAVEFORMATEX *LPCWAVEFORMATEX;
  type GUID (line 235) | typedef const GUID *LPCGUID;
  type LPDIRECTSOUND (line 238) | typedef LPDIRECTSOUND *LPLPDIRECTSOUND;
  type LPDIRECTSOUNDBUFFER (line 239) | typedef LPDIRECTSOUNDBUFFER *LPLPDIRECTSOUNDBUFFER;
  type LPDIRECTSOUND3DLISTENER (line 240) | typedef LPDIRECTSOUND3DLISTENER *LPLPDIRECTSOUND3DLISTENER;
  type LPDIRECTSOUND3DBUFFER (line 241) | typedef LPDIRECTSOUND3DBUFFER *LPLPDIRECTSOUND3DBUFFER;
  type LPDIRECTSOUNDCAPTURE (line 242) | typedef LPDIRECTSOUNDCAPTURE *LPLPDIRECTSOUNDCAPTURE;
  type LPDIRECTSOUNDCAPTUREBUFFER (line 243) | typedef LPDIRECTSOUNDCAPTUREBUFFER *LPLPDIRECTSOUNDCAPTUREBUFFER;
  type LPDIRECTSOUNDNOTIFY (line 244) | typedef LPDIRECTSOUNDNOTIFY *LPLPDIRECTSOUNDNOTIFY;
  type LPDIRECTSOUND8 (line 247) | typedef LPDIRECTSOUND8 *LPLPDIRECTSOUND8;
  type LPDIRECTSOUNDBUFFER8 (line 248) | typedef LPDIRECTSOUNDBUFFER8 *LPLPDIRECTSOUNDBUFFER8;
  type LPDIRECTSOUNDCAPTURE8 (line 249) | typedef LPDIRECTSOUNDCAPTURE8 *LPLPDIRECTSOUNDCAPTURE8;
  type LPDIRECTSOUNDCAPTUREBUFFER8 (line 250) | typedef LPDIRECTSOUNDCAPTUREBUFFER8 *LPLPDIRECTSOUNDCAPTUREBUFFER8;
  type DSCAPS (line 257) | typedef struct _DSCAPS
  type DSCAPS (line 285) | typedef const DSCAPS *LPCDSCAPS;
  type DSBCAPS (line 287) | typedef struct _DSBCAPS
  type DSBCAPS (line 296) | typedef const DSBCAPS *LPCDSBCAPS;
  type DSEFFECTDESC (line 300) | typedef struct _DSEFFECTDESC
  type DSEFFECTDESC (line 308) | typedef const DSEFFECTDESC *LPCDSEFFECTDESC;
  type DSCEFFECTDESC (line 324) | typedef struct _DSCEFFECTDESC
  type DSCEFFECTDESC (line 333) | typedef const DSCEFFECTDESC *LPCDSCEFFECTDESC;
  type DSBUFFERDESC (line 343) | typedef struct _DSBUFFERDESC
  type DSBUFFERDESC (line 355) | typedef const DSBUFFERDESC *LPCDSBUFFERDESC;
  type DSBUFFERDESC1 (line 359) | typedef struct _DSBUFFERDESC1
  type DSBUFFERDESC1 (line 368) | typedef const DSBUFFERDESC1 *LPCDSBUFFERDESC1;
  type DS3DBUFFER (line 370) | typedef struct _DS3DBUFFER
  type DS3DBUFFER (line 384) | typedef const DS3DBUFFER *LPCDS3DBUFFER;
  type DS3DLISTENER (line 386) | typedef struct _DS3DLISTENER
  type DS3DLISTENER (line 398) | typedef const DS3DLISTENER *LPCDS3DLISTENER;
  type DSCCAPS (line 400) | typedef struct _DSCCAPS
  type DSCCAPS (line 408) | typedef const DSCCAPS *LPCDSCCAPS;
  type DSCBUFFERDESC1 (line 410) | typedef struct _DSCBUFFERDESC1
  type DSCBUFFERDESC (line 419) | typedef struct _DSCBUFFERDESC
  type DSCBUFFERDESC (line 432) | typedef const DSCBUFFERDESC *LPCDSCBUFFERDESC;
  type DSCBCAPS (line 434) | typedef struct _DSCBCAPS
  type DSCBCAPS (line 442) | typedef const DSCBCAPS *LPCDSCBCAPS;
  type DSBPOSITIONNOTIFY (line 444) | typedef struct _DSBPOSITIONNOTIFY
  type DSBPOSITIONNOTIFY (line 450) | typedef const DSBPOSITIONNOTIFY *LPCDSBPOSITIONNOTIFY;
  type LPCSTR (line 456) | typedef BOOL (CALLBACK *LPDSENUMCALLBACKA)(LPGUID, LPCSTR, LPCSTR, LPVOID);
  type LPCWSTR (line 457) | typedef BOOL (CALLBACK *LPDSENUMCALLBACKW)(LPGUID, LPCWSTR, LPCWSTR, LPV...
  type LONGLONG (line 518) | typedef LONGLONG REFERENCE_TIME;
  type REFERENCE_TIME (line 519) | typedef REFERENCE_TIME *LPREFERENCE_TIME;

FILE: vendor/github.com/thestk/rtaudio/include/iasiodrv.h
  type interface (line 8) | typedef interface IASIO IASIO;
  function interface (line 11) | interface IASIO : public IUnknown

FILE: vendor/github.com/thestk/rtaudio/include/iasiothiscallresolver.cpp
  function HRESULT (line 375) | HRESULT STDMETHODCALLTYPE IASIOThiscallResolver::QueryInterface(REFIID r...
  function ULONG (line 385) | ULONG STDMETHODCALLTYPE IASIOThiscallResolver::AddRef()
  function ULONG (line 392) | ULONG STDMETHODCALLTYPE IASIOThiscallResolver::Release()
  function ASIOBool (line 402) | ASIOBool IASIOThiscallResolver::init(void *sysHandle)
  function ASIOError (line 426) | ASIOError IASIOThiscallResolver::start()
  function ASIOError (line 433) | ASIOError IASIOThiscallResolver::stop()
  function ASIOError (line 440) | ASIOError IASIOThiscallResolver::getChannels(long *numInputChannels, lon...
  function ASIOError (line 447) | ASIOError IASIOThiscallResolver::getLatencies(long *inputLatency, long *...
  function ASIOError (line 454) | ASIOError IASIOThiscallResolver::getBufferSize(long *minSize, long *maxS...
  function ASIOError (line 462) | ASIOError IASIOThiscallResolver::canSampleRate(ASIOSampleRate sampleRate)
  function ASIOError (line 469) | ASIOError IASIOThiscallResolver::getSampleRate(ASIOSampleRate *sampleRate)
  function ASIOError (line 476) | ASIOError IASIOThiscallResolver::setSampleRate(ASIOSampleRate sampleRate)
  function ASIOError (line 483) | ASIOError IASIOThiscallResolver::getClockSources(ASIOClockSource *clocks...
  function ASIOError (line 490) | ASIOError IASIOThiscallResolver::setClockSource(long reference)
  function ASIOError (line 497) | ASIOError IASIOThiscallResolver::getSamplePosition(ASIOSamples *sPos, AS...
  function ASIOError (line 504) | ASIOError IASIOThiscallResolver::getChannelInfo(ASIOChannelInfo *info)
  function ASIOError (line 511) | ASIOError IASIOThiscallResolver::createBuffers(ASIOBufferInfo *bufferInfos,
  function ASIOError (line 519) | ASIOError IASIOThiscallResolver::disposeBuffers()
  function ASIOError (line 526) | ASIOError IASIOThiscallResolver::controlPanel()
  function ASIOError (line 533) | ASIOError IASIOThiscallResolver::future(long selector,void *opt)
  function ASIOError (line 540) | ASIOError IASIOThiscallResolver::outputReady()
  function ASIOError (line 549) | ASIOError IASIOThiscallResolver::ASIOInit(ASIODriverInfo *info)

FILE: vendor/github.com/thestk/rtaudio/include/iasiothiscallresolver.h
  function class (line 141) | class IASIOThiscallResolver : public IASIO {

FILE: vendor/github.com/thestk/rtaudio/include/soundcard.h
  type snd_size (line 136) | struct snd_size {
  type snd_chan_param (line 219) | typedef struct _snd_chan_param {
  type snd_mix_param (line 232) | typedef struct _snd_mix_param {
  type snd_sync_parm (line 258) | typedef struct _snd_sync_parm {
  type snd_capabilities (line 273) | typedef struct _snd_capabilities {
  type seq_event_rec (line 313) | struct seq_event_rec {
  type patch_info (line 349) | struct patch_info {
  type sysex_info (line 431) | struct sysex_info {
  type patmgr_info (line 466) | struct patmgr_info {	/* Note! size must be < 4k since kmalloc() is used */
  type u_char (line 683) | typedef u_char sbi_instr_data[32];
  type sbi_instrument (line 685) | struct sbi_instrument {
  type synth_info (line 695) | struct synth_info {	/* Read only */
  type sound_timer_info (line 723) | struct sound_timer_info {
  type midi_info (line 728) | struct midi_info {
  type mpu_command_rec (line 739) | typedef struct {
  type audio_buf_info (line 784) | typedef struct audio_buf_info {
  type count_info (line 825) | typedef struct count_info {
  type buffmem_desc (line 837) | typedef struct buffmem_desc {
  type copr_buffer (line 862) | typedef struct copr_buffer {
  type copr_debug_buf (line 874) | typedef struct copr_debug_buf {
  type copr_msg (line 882) | typedef struct copr_msg {
  type mixer_info (line 1089) | typedef struct mixer_info {
  type audio_errinfo (line 1481) | typedef struct audio_errinfo
  type oss_syncgroup (line 1505) | typedef struct oss_syncgroup
  type oss_count_t (line 1563) | typedef struct
  type oss_sysinfo (line 1622) | typedef struct oss_sysinfo
  type oss_mixext (line 1645) | typedef struct oss_mixext
  type oss_mixext_root (line 1714) | typedef struct oss_mixext_root
  type oss_mixer_value (line 1720) | typedef struct oss_mixer_value
  type oss_mixer_enuminfo (line 1731) | typedef struct oss_mixer_enuminfo
  type oss_audioinfo (line 1751) | typedef struct oss_audioinfo
  type oss_mixerinfo (line 1788) | typedef struct oss_mixerinfo
  type oss_midi_info (line 1813) | typedef struct oss_midi_info
  type oss_card_info (line 1845) | typedef struct oss_card_info

FILE: vendor/github.com/thestk/rtaudio/rtaudio_c.cpp
  type rtaudio (line 8) | struct rtaudio {
  function rtaudio_api_t (line 51) | const rtaudio_api_t *rtaudio_compiled_api() { return compiled_api; }
  function rtaudio_t (line 60) | rtaudio_t rtaudio_create(rtaudio_api_t api) {
  function rtaudio_destroy (line 71) | void rtaudio_destroy(rtaudio_t audio) { delete audio->audio; }
  function rtaudio_api_t (line 73) | rtaudio_api_t rtaudio_current_api(rtaudio_t audio) {
  function rtaudio_device_count (line 77) | int rtaudio_device_count(rtaudio_t audio) {
  function rtaudio_device_info_t (line 81) | rtaudio_device_info_t rtaudio_get_device_info(rtaudio_t audio, int i) {
  function rtaudio_get_default_output_device (line 108) | unsigned int rtaudio_get_default_output_device(rtaudio_t audio) {
  function rtaudio_get_default_input_device (line 112) | unsigned int rtaudio_get_default_input_device(rtaudio_t audio) {
  function proxy_cb_func (line 116) | static int proxy_cb_func(void *out, void *in, unsigned int nframes, doub...
  function rtaudio_open_stream (line 123) | int rtaudio_open_stream(rtaudio_t audio,
  function rtaudio_close_stream (line 175) | void rtaudio_close_stream(rtaudio_t audio) { audio->audio->closeStream(); }
  function rtaudio_start_stream (line 177) | int rtaudio_start_stream(rtaudio_t audio) {
  function rtaudio_stop_stream (line 188) | int rtaudio_stop_stream(rtaudio_t audio) {
  function rtaudio_abort_stream (line 199) | int rtaudio_abort_stream(rtaudio_t audio) {
  function rtaudio_is_stream_open (line 210) | int rtaudio_is_stream_open(rtaudio_t audio) {
  function rtaudio_is_stream_running (line 214) | int rtaudio_is_stream_running(rtaudio_t audio) {
  function rtaudio_get_stream_time (line 218) | double rtaudio_get_stream_time(rtaudio_t audio) {
  function rtaudio_set_stream_time (line 229) | void rtaudio_set_stream_time(rtaudio_t audio, double time) {
  function rtaudio_get_stream_latency (line 239) | int rtaudio_get_stream_latency(rtaudio_t audio) {
  function rtaudio_get_stream_sample_rate (line 250) | unsigned int rtaudio_get_stream_sample_rate(rtaudio_t audio) {
  function rtaudio_show_warnings (line 260) | void rtaudio_show_warnings(rtaudio_t audio, int show) {

FILE: vendor/github.com/thestk/rtaudio/rtaudio_c.h
  type rtaudio_format_t (line 14) | typedef unsigned long rtaudio_format_t;
  type rtaudio_stream_flags_t (line 23) | typedef unsigned int rtaudio_stream_flags_t;
  type rtaudio_stream_status_t (line 31) | typedef unsigned int rtaudio_stream_status_t;
  type rtaudio_error_t (line 40) | typedef enum rtaudio_error {
  type rtaudio_api_t (line 56) | typedef enum rtaudio_api {
  type rtaudio_device_info_t (line 71) | typedef struct rtaudio_device_info {
  type rtaudio_stream_parameters_t (line 88) | typedef struct rtaudio_stream_parameters {
  type rtaudio_stream_options_t (line 94) | typedef struct rtaudio_stream_options {
  type rtaudio (line 101) | struct rtaudio

FILE: vendor/github.com/thestk/rtaudio/tests/audioprobe.cpp
  function main (line 14) | int main()

FILE: vendor/github.com/thestk/rtaudio/tests/duplex.cpp
  function usage (line 38) | void usage( void ) {
  function inout (line 51) | int inout( void *outputBuffer, void *inputBuffer, unsigned int /*nBuffer...
  function main (line 63) | int main( int argc, char *argv[] )

FILE: vendor/github.com/thestk/rtaudio/tests/playraw.cpp
  function usage (line 55) | void usage( void ) {
  type OutputData (line 67) | struct OutputData {
  function output (line 73) | int output( void *outputBuffer, void * /*inputBuffer*/, unsigned int nBu...
  function main (line 92) | int main( int argc, char *argv[] )

FILE: vendor/github.com/thestk/rtaudio/tests/playsaw.cpp
  function usage (line 55) | void usage( void ) {
  function errorCallback (line 67) | void errorCallback( RtAudioError::Type type, const std::string &errorText )
  function saw (line 89) | int saw( void *outputBuffer, void *inputBuffer, unsigned int nBufferFrames,
  function saw (line 115) | int saw( void *outputBuffer, void * /*inputBuffer*/, unsigned int nBuffe...
  function main (line 142) | int main( int argc, char *argv[] )

FILE: vendor/github.com/thestk/rtaudio/tests/record.cpp
  function usage (line 49) | void usage( void ) {
  type InputData (line 61) | struct InputData {
  function input (line 70) | int input( void * /*outputBuffer*/, void *inputBuffer, unsigned int nBuf...
  function main (line 90) | int main( int argc, char *argv[] )

FILE: vendor/github.com/thestk/rtaudio/tests/testall.cpp
  function usage (line 19) | void usage( void ) {
  function sawi (line 35) | int sawi( void *outputBuffer, void * /*inputBuffer*/, unsigned int nBuff...
  function sawni (line 58) | int sawni( void *outputBuffer, void * /*inputBuffer*/, unsigned int nBuf...
  function inout (line 82) | int inout( void *outputBuffer, void *inputBuffer, unsigned int /*nBuffer...
  function main (line 94) | int main( int argc, char *argv[] )

FILE: vendor/github.com/thestk/rtaudio/tests/teststops.cpp
  function usage (line 32) | void usage( void ) {
  type MyData (line 45) | struct MyData {
  function pulse (line 54) | int pulse( void *outputBuffer, void * /*inputBuffer*/, unsigned int nBuf...
  function main (line 80) | int main( int argc, char *argv[] )

FILE: vendor/github.com/thestk/rtmidi/RtMidi.cpp
  function RTMIDI_DLL_PUBLIC (line 127) | RTMIDI_DLL_PUBLIC RtMidiIn :: RtMidiIn( RtMidi::Api api, const std::stri...
  function RTMIDI_DLL_PUBLIC (line 195) | RTMIDI_DLL_PUBLIC RtMidiOut :: RtMidiOut( RtMidi::Api api, const std::st...
  type CoreMidiData (line 443) | struct CoreMidiData {
  function midiInputCallback (line 457) | static void midiInputCallback( const MIDIPacketList *list, void *procRef...
  function CFStringRef (line 756) | CFStringRef EndpointName( MIDIEndpointRef endpoint, bool isExternal )
  function CFStringRef (line 826) | static CFStringRef ConnectedEndpointName( MIDIEndpointRef endpoint )
  type AlsaMidiData (line 1166) | struct AlsaMidiData {
  type pollfd (line 1199) | struct pollfd
  type pollfd (line 1222) | struct pollfd
  type pollfd (line 1222) | struct pollfd
  function portInfo (line 1471) | unsigned int portInfo( snd_seq_t *seq, snd_seq_port_info_t *pinfo, unsig...
  function ConvertToUTF8 (line 2002) | static std::string ConvertToUTF8(const TCHAR *str)
  type WinMidiData (line 2034) | struct WinMidiData {
  function midiInputCallback (line 2048) | static void CALLBACK midiInputCallback( HMIDIIN /*hmin*/,
  type JackMidiData (line 2552) | struct JackMidiData {
  function jackProcessIn (line 2570) | static int jackProcessIn( jack_nframes_t nframes, void *arg )
  function jackProcessOut (line 2764) | static int jackProcessOut( jack_nframes_t nframes, void *arg )
  type timespec (line 2948) | struct timespec

FILE: vendor/github.com/thestk/rtmidi/RtMidi.h
  type Type (line 77) | enum Type {
  function virtual (line 101) | virtual const Type& getType(void) const throw() { return type_; }
  function virtual (line 104) | virtual const std::string& getMessage(void) const throw() { return messa...
  function virtual (line 107) | virtual const char* what( void ) const throw() { return message_.c_str(); }
  function class (line 126) | class RTMIDI_DLL_PUBLIC RtMidi
  function virtual (line 303) | virtual bool isPortOpen() const;
  function class (line 471) | class RTMIDI_DLL_PUBLIC MidiApi
  type MidiMessage (line 515) | struct MidiMessage {
  function cancelCallback (line 587) | inline void RtMidiIn :: cancelCallback( void ) { ((MidiInApi *)rtapi_)->...
  function getPortCount (line 588) | inline unsigned int RtMidiIn :: getPortCount( void ) { return rtapi_->ge...
  function ignoreTypes (line 590) | inline void RtMidiIn :: ignoreTypes( bool midiSysex, bool midiTime, bool...
  function getMessage (line 591) | inline double RtMidiIn :: getMessage( std::vector<unsigned char> *messag...
  function setErrorCallback (line 592) | inline void RtMidiIn :: setErrorCallback( RtMidiErrorCallback errorCallb...
  function openPort (line 595) | inline void RtMidiOut :: openPort( unsigned int portNumber, const std::s...
  function openVirtualPort (line 596) | inline void RtMidiOut :: openVirtualPort( const std::string &portName ) ...
  function closePort (line 597) | inline void RtMidiOut :: closePort( void ) { rtapi_->closePort(); }
  function getPortCount (line 599) | inline unsigned int RtMidiOut :: getPortCount( void ) { return rtapi_->g...
  function sendMessage (line 601) | inline void RtMidiOut :: sendMessage( const std::vector<unsigned char> *...
  function sendMessage (line 602) | inline void RtMidiOut :: sendMessage( const unsigned char *message, size...
  function setErrorCallback (line 603) | inline void RtMidiOut :: setErrorCallback( RtMidiErrorCallback errorCall...
  function class (line 617) | class MidiInCore: public MidiInApi
  function class (line 633) | class MidiOutCore: public MidiOutApi
  function class (line 654) | class MidiInJack: public MidiInApi
  function class (line 673) | class MidiOutJack: public MidiOutApi
  function class (line 697) | class MidiInAlsa: public MidiInApi
  function class (line 713) | class MidiOutAlsa: public MidiOutApi
  function class (line 734) | class MidiInWinMM: public MidiInApi
  function class (line 750) | class MidiOutWinMM: public MidiOutApi
  function class (line 771) | class MidiInDummy: public MidiInApi
  function openPort (line 776) | void openPort( unsigned int /*portNumber*/, const std::string &/*portNam...
  function openVirtualPort (line 777) | void openVirtualPort( const std::string &/*portName*/ ) {}
  function closePort (line 778) | void closePort( void ) {}
  function getPortCount (line 779) | unsigned int getPortCount( void ) { return 0; }
  function class (line 786) | class MidiOutDummy: public MidiOutApi
  function openPort (line 791) | void openPort( unsigned int /*portNumber*/, const std::string &/*portNam...
  function openVirtualPort (line 792) | void openVirtualPort( const std::string &/*portName*/ ) {}
  function closePort (line 793) | void closePort( void ) {}
  function getPortCount (line 794) | unsigned int getPortCount( void ) { return 0; }
  function sendMessage (line 796) | void sendMessage( const unsigned char * /*message*/, size_t /*size*/ ) {}

FILE: vendor/github.com/thestk/rtmidi/contrib/go/rtmidi/rtmidi.go
  type API (line 36) | type API
    method String (line 53) | func (api API) String() string {
  constant APIUnspecified (line 40) | APIUnspecified API = C.RT_MIDI_API_UNSPECIFIED
  constant APIMacOSXCore (line 42) | APIMacOSXCore = C.RT_MIDI_API_MACOSX_CORE
  constant APILinuxALSA (line 44) | APILinuxALSA = C.RT_MIDI_API_LINUX_ALSA
  constant APIUnixJack (line 46) | APIUnixJack = C.RT_MIDI_API_UNIX_JACK
  constant APIWindowsMM (line 48) | APIWindowsMM = C.RT_MIDI_API_WINDOWS_MM
  constant APIDummy (line 50) | APIDummy = C.RT_MIDI_API_RTMIDI_DUMMY
  function CompiledAPI (line 72) | func CompiledAPI() (apis []API) {
  type MIDI (line 84) | type MIDI interface
  type MIDIIn (line 98) | type MIDIIn interface
  type MIDIOut (line 113) | type MIDIOut interface
  type midi (line 120) | type midi struct
    method OpenPort (line 124) | func (m *midi) OpenPort(port int, name string) error {
    method OpenVirtualPort (line 134) | func (m *midi) OpenVirtualPort(name string) error {
    method PortName (line 144) | func (m *midi) PortName(port int) (string, error) {
    method PortCount (line 153) | func (m *midi) PortCount() (int, error) {
    method Close (line 161) | func (m *midi) Close() error {
  type midiIn (line 169) | type midiIn struct
    method API (line 203) | func (m *midiIn) API() (API, error) {
    method Close (line 211) | func (m *midiIn) Close() error {
    method IgnoreTypes (line 220) | func (m *midiIn) IgnoreTypes(midiSysex bool, midiTime bool, midiSense ...
    method SetCallback (line 268) | func (m *midiIn) SetCallback(cb func(MIDIIn, []byte, float64)) error {
    method CancelCallback (line 278) | func (m *midiIn) CancelCallback() error {
    method Message (line 287) | func (m *midiIn) Message() ([]byte, float64, error) {
    method Destroy (line 301) | func (m *midiIn) Destroy() {
  type midiOut (line 175) | type midiOut struct
    method API (line 327) | func (m *midiOut) API() (API, error) {
    method Close (line 335) | func (m *midiOut) Close() error {
    method SendMessage (line 343) | func (m *midiOut) SendMessage(b []byte) error {
    method Destroy (line 353) | func (m *midiOut) Destroy() {
  function NewMIDIInDefault (line 181) | func NewMIDIInDefault() (MIDIIn, error) {
  function NewMIDIIn (line 192) | func NewMIDIIn(api API, name string, queueSize int) (MIDIIn, error) {
  function registerMIDIIn (line 233) | func registerMIDIIn(m *midiIn) int {
  function unregisterMIDIIn (line 244) | func unregisterMIDIIn(m *midiIn) {
  function findMIDIIn (line 255) | func findMIDIIn(k int) *midiIn {
  function goMIDIInCallback (line 262) | func goMIDIInCallback(ts C.double, msg *C.uchar, msgsz C.size_t, arg uns...
  function NewMIDIOutDefault (line 306) | func NewMIDIOutDefault() (MIDIOut, error) {
  function NewMIDIOut (line 316) | func NewMIDIOut(api API, name string) (MIDIOut, error) {

FILE: vendor/github.com/thestk/rtmidi/contrib/go/rtmidi/rtmidi_test.go
  function ExampleCompiledAPI (line 7) | func ExampleCompiledAPI() {
  function ExampleMIDIIn_Message (line 13) | func ExampleMIDIIn_Message() {
  function ExampleMIDIIn_SetCallback (line 32) | func ExampleMIDIIn_SetCallback() {

FILE: vendor/github.com/thestk/rtmidi/rtmidi_c.cpp
  class CallbackProxyUserData (line 6) | class CallbackProxyUserData
    method CallbackProxyUserData (line 9) | CallbackProxyUserData (RtMidiCCallback cCallback, void *userData)
  function rtmidi_get_compiled_api (line 18) | int rtmidi_get_compiled_api (enum RtMidiApi *apis) // return length for ...
  function rtmidi_error (line 44) | void rtmidi_error (MidiApi *api, enum RtMidiErrorType type, const char* ...
  function rtmidi_open_port (line 50) | void rtmidi_open_port (RtMidiPtr device, unsigned int portNumber, const ...
  function rtmidi_open_virtual_port (line 62) | void rtmidi_open_virtual_port (RtMidiPtr device, const char *portName)
  function rtmidi_close_port (line 75) | void rtmidi_close_port (RtMidiPtr device)
  function rtmidi_get_port_count (line 86) | unsigned int rtmidi_get_port_count (RtMidiPtr device)
  function RtMidiInPtr (line 112) | RtMidiInPtr rtmidi_in_create_default ()
  function RtMidiInPtr (line 134) | RtMidiInPtr rtmidi_in_create (enum RtMidiApi api, const char *clientName...
  function rtmidi_in_free (line 157) | void rtmidi_in_free (RtMidiInPtr device)
  function rtmidi_in_get_current_api (line 165) | enum RtMidiApi rtmidi_in_get_current_api (RtMidiPtr device)
  function callback_proxy (line 178) | static
  function rtmidi_in_set_callback (line 185) | void rtmidi_in_set_callback (RtMidiInPtr device, RtMidiCCallback callbac...
  function rtmidi_in_cancel_callback (line 198) | void rtmidi_in_cancel_callback (RtMidiInPtr device)
  function rtmidi_in_ignore_types (line 210) | void rtmidi_in_ignore_types (RtMidiInPtr device, bool midiSysex, bool mi...
  function rtmidi_in_get_message (line 215) | double rtmidi_in_get_message (RtMidiInPtr device,
  function RtMidiOutPtr (line 244) | RtMidiOutPtr rtmidi_out_create_default ()
  function RtMidiOutPtr (line 266) | RtMidiOutPtr rtmidi_out_create (enum RtMidiApi api, const char *clientName)
  function rtmidi_out_free (line 290) | void rtmidi_out_free (RtMidiOutPtr device)
  function rtmidi_out_get_current_api (line 296) | enum RtMidiApi rtmidi_out_get_current_api (RtMidiPtr device)
  function rtmidi_out_send_message (line 309) | int rtmidi_out_send_message (RtMidiOutPtr device, const unsigned char *m...

FILE: vendor/github.com/thestk/rtmidi/rtmidi_c.h
  type RtMidiWrapper (line 18) | struct RtMidiWrapper {
  type RtMidiWrapper (line 31) | struct RtMidiWrapper
  type RtMidiWrapper (line 34) | struct RtMidiWrapper
  type RtMidiWrapper (line 37) | struct RtMidiWrapper
  type RtMidiApi (line 40) | enum RtMidiApi {
  type RtMidiErrorType (line 49) | enum RtMidiErrorType {
  type RtMidiApi (line 72) | enum RtMidiApi
  type RtMidiErrorType (line 75) | enum RtMidiErrorType
  type RtMidiApi (line 117) | enum RtMidiApi
  type RtMidiApi (line 157) | enum RtMidiApi

FILE: vendor/github.com/thestk/rtmidi/tests/cmidiin.cpp
  function usage (line 14) | void usage( void ) {
  function mycallback (line 22) | void mycallback( double deltatime, std::vector< unsigned char > *message...
  function main (line 36) | int main( int argc, char ** /*argv[]*/ )
  function chooseMidiPort (line 74) | bool chooseMidiPort( RtMidiIn *rtmidi )

FILE: vendor/github.com/thestk/rtmidi/tests/midiclock.cpp
  function mycallback (line 31) | void mycallback( double deltatime, std::vector< unsigned char > *message...
  function clock_in (line 57) | int clock_in()
  function clock_out (line 93) | int clock_out()
  function main (line 177) | int main( int, const char *argv[] )
  function choosePort (line 193) | bool choosePort( RT *rtmidi, const char *dir )
  function chooseInputPort (line 223) | bool chooseInputPort( RtMidiIn *rtmidi )
  function chooseOutputPort (line 228) | bool chooseOutputPort( RtMidiOut *rtmidi )

FILE: vendor/github.com/thestk/rtmidi/tests/midiout.cpp
  function main (line 27) | int main( void )
  function chooseMidiPort (line 109) | bool chooseMidiPort( RtMidiOut *rtmidi )

FILE: vendor/github.com/thestk/rtmidi/tests/midiprobe.cpp
  function main (line 12) | int main()

FILE: vendor/github.com/thestk/rtmidi/tests/qmidiin.cpp
  function finish (line 25) | static void finish( int /*ignore*/ ){ done = true; }
  function usage (line 27) | void usage( void ) {
  function main (line 35) | int main( int argc, char *argv[] )

FILE: vendor/github.com/thestk/rtmidi/tests/sysextest.cpp
  function usage (line 14) | void usage( void ) {
  function mycallback (line 34) | void mycallback( double deltatime, std::vector< unsigned char > *message...
  function main (line 43) | int main( int argc, char *argv[] )
  function chooseMidiPort (line 102) | bool chooseMidiPort( RtMidi *rtmidi )

FILE: vendor/github.com/zserge/webview/examples/canvas-go/main.go
  constant windowWidth (line 15) | windowWidth  = 480
  constant windowHeight (line 16) | windowHeight = 320
  function startServer (line 49) | func startServer() string {
  function handleRPC (line 70) | func handleRPC(w webview.WebView, data string) {
  function main (line 86) | func main() {

FILE: vendor/github.com/zserge/webview/examples/counter-go/assets.go
  function bindataRead (line 22) | func bindataRead(data []byte, name string) ([]byte, error) {
  type asset (line 42) | type asset struct
  type bindataFileInfo (line 47) | type bindataFileInfo struct
    method Name (line 54) | func (fi bindataFileInfo) Name() string {
    method Size (line 57) | func (fi bindataFileInfo) Size() int64 {
    method Mode (line 60) | func (fi bindataFileInfo) Mode() os.FileMode {
    method ModTime (line 63) | func (fi bindataFileInfo) ModTime() time.Time {
    method IsDir (line 66) | func (fi bindataFileInfo) IsDir() bool {
    method Sys (line 69) | func (fi bindataFileInfo) Sys() interface{} {
  function jsPicodomAppJsBytes (line 75) | func jsPicodomAppJsBytes() ([]byte, error) {
  function jsPicodomAppJs (line 82) | func jsPicodomAppJs() (*asset, error) {
  function jsPicodomVendorPicodomJsBytes (line 95) | func jsPicodomVendorPicodomJsBytes() ([]byte, error) {
  function jsPicodomVendorPicodomJs (line 102) | func jsPicodomVendorPicodomJs() (*asset, error) {
  function jsStylesCssBytes (line 115) | func jsStylesCssBytes() ([]byte, error) {
  function jsStylesCss (line 122) | func jsStylesCss() (*asset, error) {
  function Asset (line 136) | func Asset(name string) ([]byte, error) {
  function MustAsset (line 150) | func MustAsset(name string) []byte {
  function AssetInfo (line 162) | func AssetInfo(name string) (os.FileInfo, error) {
  function AssetNames (line 175) | func AssetNames() []string {
  function AssetDir (line 203) | func AssetDir(name string) ([]string, error) {
  type bintree (line 225) | type bintree struct
  function RestoreAsset (line 242) | func RestoreAsset(dir, name string) error {
  function RestoreAssets (line 267) | func RestoreAssets(dir, name string) error {
  function _filePath (line 283) | func _filePath(dir, name string) string {

FILE: vendor/github.com/zserge/webview/examples/counter-go/js/picodom/app.js
  function UI (line 3) | function UI(c) {
  function render (line 10) | function render() {

FILE: vendor/github.com/zserge/webview/examples/counter-go/js/react/app.jsx
  class Counter (line 4) | class Counter extends preact.Component {
    method constructor (line 5) | constructor(props) {
    method render (line 8) | render() {

FILE: vendor/github.com/zserge/webview/examples/counter-go/main.go
  type Counter (line 8) | type Counter struct
    method Add (line 13) | func (c *Counter) Add(n int) {
    method Reset (line 18) | func (c *Counter) Reset() {
  function main (line 22) | func main() {

FILE: vendor/github.com/zserge/webview/examples/counter-go/picodom.go
  function loadUIFramework (line 13) | func loadUIFramework(w webview.WebView) {

FILE: vendor/github.com/zserge/webview/examples/counter-go/react.go
  function loadUIFramework (line 16) | func loadUIFramework(w webview.WebView) {

FILE: vendor/github.com/zserge/webview/examples/counter-go/vue.go
  function loadUIFramework (line 13) | func loadUIFramework(w webview.WebView) {

FILE: vendor/github.com/zserge/webview/examples/minimal-go/main.go
  function main (line 5) | func main() {

FILE: vendor/github.com/zserge/webview/examples/minimal/main.c
  function main (line 7) | int main() {

FILE: vendor/github.com/zserge/webview/examples/page-load-go/main.go
  function runLocalHTTP (line 27) | func runLocalHTTP() {
  function runLocalFile (line 48) | func runLocalFile() {
  function runDataURL (line 71) | func runDataURL() {
  function runInjectJS (line 80) | func runInjectJS() {
  function main (line 92) | func main() {

FILE: vendor/github.com/zserge/webview/examples/timer-cxx/main.cc
  class Timer (line 12) | class Timer {
    method get (line 14) | int get() {
    method set (line 20) | void set(int ticks) {
    method incr (line 25) | void incr(int n = 1) {
    method start (line 30) | void start(struct webview *w) {
    method render (line 34) | void render(struct webview *w) {
    method run (line 42) | void run(struct webview *w) {
    type webview (line 57) | struct webview
  function url_encode (line 60) | static std::string url_encode(const std::string &value) {
  function timer_cb (line 90) | static void timer_cb(struct webview *w, const char *arg) {
  function main (line 104) | int main() {

FILE: vendor/github.com/zserge/webview/examples/todo-go/assets.go
  function bindataRead (line 23) | func bindataRead(data []byte, name string) ([]byte, error) {
  type asset (line 43) | type asset struct
  type bindataFileInfo (line 48) | type bindataFileInfo struct
    method Name (line 55) | func (fi bindataFileInfo) Name() string {
    method Size (line 58) | func (fi bindataFileInfo) Size() int64 {
    method Mode (line 61) | func (fi bindataFileInfo) Mode() os.FileMode {
    method ModTime (line 64) | func (fi bindataFileInfo) ModTime() time.Time {
    method IsDir (line 67) | func (fi bindataFileInfo) IsDir() bool {
    method Sys (line 70) | func (fi bindataFileInfo) Sys() interface{} {
  function appJsBytes (line 76) | func appJsBytes() ([]byte, error) {
  function appJs (line 83) | func appJs() (*asset, error) {
  function indexHtmlBytes (line 96) | func indexHtmlBytes() ([]byte, error) {
  function indexHtml (line 103) | func indexHtml() (*asset, error) {
  function picodomJsBytes (line 116) | func picodomJsBytes() ([]byte, error) {
  function picodomJs (line 123) | func picodomJs() (*asset, error) {
  function stylesCssBytes (line 136) | func stylesCssBytes() ([]byte, error) {
  function stylesCss (line 143) | func stylesCss() (*asset, error) {
  function Asset (line 157) | func Asset(name string) ([]byte, error) {
  function MustAsset (line 171) | func MustAsset(name string) []byte {
  function AssetInfo (line 183) | func AssetInfo(name string) (os.FileInfo, error) {
  function AssetNames (line 196) | func AssetNames() []string {
  function AssetDir (line 225) | func AssetDir(name string) ([]string, error) {
  type bintree (line 247) | type bintree struct
  function RestoreAsset (line 259) | func RestoreAsset(dir, name string) error {
  function RestoreAssets (line 284) | func RestoreAssets(dir, name string) error {
  function _filePath (line 300) | func _filePath(dir, name string) string {

FILE: vendor/github.com/zserge/webview/examples/todo-go/assets/app.js
  function UI (line 3) | function UI(items) {

FILE: vendor/github.com/zserge/webview/examples/todo-go/assets/picodom.js
  function t (line 1) | function t(e,t){var n,r=[];for(u=arguments.length;u-- >2;)d.push(argumen...
  function n (line 1) | function n(e,t,a,l,u,d){if(null==a)t=e.insertBefore(o(l,u),t);else if(nu...
  function r (line 1) | function r(e){if(e&&(e=e.data))return e.key}
  function a (line 1) | function a(e,t){var n={};for(var r in e)n[r]=e[r];for(var r in t)n[r]=t[...
  function o (line 1) | function o(e,t){if("string"==typeof e)var n=document.createTextNode(e);e...
  function i (line 1) | function i(e,t,n){for(var r in a(t,n)){var o=n[r],i="value"===r||"checke...
  function f (line 1) | function f(e,t,n){n&&n.onremove?n.onremove(t):e.removeChild(t)}
  function l (line 1) | function l(e,t,n,r){if("key"===t);else if("style"===t)for(var o in a(r,n...

FILE: vendor/github.com/zserge/webview/examples/todo-go/main.go
  function startServer (line 20) | func startServer() string {
  type Task (line 48) | type Task struct
  function render (line 56) | func render(w webview.WebView, tasks []Task) {
  function handleRPC (line 63) | func handleRPC(w webview.WebView, data string) {
  function main (line 114) | func main() {

FILE: vendor/github.com/zserge/webview/examples/window-go/main.go
  constant windowWidth (line 13) | windowWidth  = 480
  constant windowHeight (line 14) | windowHeight = 320
  function startServer (line 36) | func startServer() string {
  function handleRPC (line 51) | func handleRPC(w webview.WebView, data string) {
  function main (line 66) | func main() {

FILE: vendor/github.com/zserge/webview/webview.go
  function init (line 104) | func init() {
  function Open (line 117) | func Open(title, url string, w, h int, resizable bool) error {
  function Debug (line 136) | func Debug(a ...interface{}) {
  function Debugf (line 144) | func Debugf(format string, a ...interface{}) {
  type ExternalInvokeCallbackFunc (line 155) | type ExternalInvokeCallbackFunc
  type Settings (line 159) | type Settings struct
  type WebView (line 178) | type WebView interface
  type DialogType (line 218) | type DialogType
  constant DialogTypeOpen (line 222) | DialogTypeOpen DialogType = iota
  constant DialogTypeSave (line 224) | DialogTypeSave
  constant DialogTypeAlert (line 226) | DialogTypeAlert
  type webview (line 236) | type webview struct
    method Loop (line 276) | func (w *webview) Loop(blocking bool) bool {
    method Run (line 284) | func (w *webview) Run() {
    method Exit (line 289) | func (w *webview) Exit() {
    method Dispatch (line 293) | func (w *webview) Dispatch(f func()) {
    method SetTitle (line 302) | func (w *webview) SetTitle(title string) {
    method Dialog (line 308) | func (w *webview) Dialog(dlgType DialogType, flags int, title string, ...
    method Eval (line 321) | func (w *webview) Eval(js string) {
    method InjectCSS (line 327) | func (w *webview) InjectCSS(css string) {
    method Terminate (line 333) | func (w *webview) Terminate() {
    method Bind (line 500) | func (w *webview) Bind(name string, v interface{}) (sync func(), err e...
  function boolToInt (line 242) | func boolToInt(b bool) int {
  function New (line 252) | func New(settings Settings) WebView {
  function _webviewDispatchGoCallback (line 338) | func _webviewDispatchGoCallback(index unsafe.Pointer) {
  function _webviewExternalInvokeCallback (line 348) | func _webviewExternalInvokeCallback(w unsafe.Pointer, data unsafe.Pointe...
  type binding (line 374) | type binding struct
    method JS (line 388) | func (b *binding) JS() (string, error) {
    method Sync (line 394) | func (b *binding) Sync() (string, error) {
    method Call (line 402) | func (b *binding) Call(js string) bool {
  function newBinding (line 380) | func newBinding(name string, v interface{}) (*binding, error) {
  type methodInfo (line 444) | type methodInfo struct
    method Arity (line 449) | func (mi methodInfo) Arity() int { return mi.Value.Type().NumIn() }
    method JSName (line 451) | func (mi methodInfo) JSName() string {
    method JSArgs (line 459) | func (mi methodInfo) JSArgs() (js string) {
  function getMethods (line 469) | func getMethods(obj interface{}) ([]methodInfo, error) {

FILE: vendor/github.com/zserge/webview/webview.h
  type webview_priv (line 16) | struct webview_priv {
  type webview_priv (line 36) | struct webview_priv {
  type webview_priv (line 45) | struct webview_priv {
  type webview (line 56) | struct webview
  type webview (line 58) | struct webview
  type webview (line 61) | struct webview {
  type webview_dialog_type (line 73) | enum webview_dialog_type {
  type webview (line 79) | struct webview
  type webview_dispatch_arg (line 81) | struct webview_dispatch_arg {
  type webview (line 109) | struct webview
  type webview (line 110) | struct webview
  type webview (line 111) | struct webview
  type webview (line 112) | struct webview
  type webview (line 113) | struct webview
  type webview (line 114) | struct webview
  type webview_dialog_type (line 114) | enum webview_dialog_type
  type webview (line 117) | struct webview
  type webview (line 119) | struct webview
  type webview (line 120) | struct webview
  function webview (line 124) | static int webview(const char *title, const char *url, int w, int h,
  function webview_debug (line 142) | static void webview_debug(const char *format, ...) {
  function webview_js_encode (line 151) | static int webview_js_encode(const char *s, char *esc, size_t n) {
  function webview_inject_css (line 173) | static int webview_inject_css(struct webview *w, const char *css) {
  function external_message_received_cb (line 189) | static void external_message_received_cb(WebKitUserContentManager *m,
  function webview_load_changed_cb (line 208) | static void webview_load_changed_cb(WebKitWebView *webview,
  function webview_desroy_cb (line 217) | static void webview_desroy_cb(GtkWidget *widget, gpointer arg) {
  function gboolean (line 223) | static gboolean webview_context_menu_cb(WebKitWebView *webview,
  function webview_init (line 236) | static int webview_init(struct webview *w) {
  function webview_loop (line 293) | static int webview_loop(struct webview *w, int blocking) {
  function webview_set_title (line 298) | static void webview_set_title(struct webview *w, const char *title) {
  function webview_dialog (line 302) | static void webview_dialog(struct webview *w, enum webview_dialog_type d...
  function webview_eval (line 342) | static int webview_eval(struct webview *w, const char *js) {
  function gboolean (line 351) | static gboolean webview_dispatch_wrapper(gpointer userdata) {
  function webview_dispatch (line 358) | static void webview_dispatch(struct webview *w, webview_dispatch_fn fn,
  function webview_terminate (line 368) | static void webview_terminate(struct webview *w) { w->priv.should_exit =...
  function webview_exit (line 370) | static void webview_exit(struct webview *w) { (void)w; }
  function webview_print_log (line 371) | static void webview_print_log(const char *s) { fprintf(stderr, "%s\n", s...
  type _IOleInPlaceFrameEx (line 383) | typedef struct {
  type _IOleInPlaceSiteEx (line 388) | typedef struct {
  type _IDocHostUIHandlerEx (line 393) | typedef struct { IDocHostUIHandler ui; } _IDocHostUIHandlerEx;
  type _IOleClientSiteEx (line 395) | typedef struct {
  function WCHAR (line 410) | static inline WCHAR *webview_to_utf16(const char *s) {
  function iid_eq (line 430) | static int iid_eq(REFIID a, const IID *b) {
  function HRESULT (line 434) | static HRESULT STDMETHODCALLTYPE JS_QueryInterface(IDispatch FAR *This,
  function ULONG (line 444) | static ULONG STDMETHODCALLTYPE JS_AddRef(IDispatch FAR *This) { return 1; }
  function ULONG (line 445) | static ULONG STDMETHODCALLTYPE JS_Release(IDispatch FAR *This) { return ...
  function HRESULT (line 446) | static HRESULT STDMETHODCALLTYPE JS_GetTypeInfoCount(IDispatch FAR *This,
  function HRESULT (line 450) | static HRESULT STDMETHODCALLTYPE JS_GetTypeInfo(IDispatch FAR *This,
  function HRESULT (line 456) | static HRESULT STDMETHODCALLTYPE JS_GetIDsOfNames(IDispatch FAR *This,
  function HRESULT (line 471) | static HRESULT STDMETHODCALLTYPE
  function ULONG (line 500) | static ULONG STDMETHODCALLTYPE Site_AddRef(IOleClientSite FAR *This) {
  function ULONG (line 503) | static ULONG STDMETHODCALLTYPE Site_Release(IOleClientSite FAR *This) {
  function HRESULT (line 506) | static HRESULT STDMETHODCALLTYPE Site_SaveObject(IOleClientSite FAR *Thi...
  function HRESULT (line 509) | static HRESULT STDMETHODCALLTYPE Site_GetMoniker(IOleClientSite FAR *This,
  function HRESULT (line 515) | static HRESULT STDMETHODCALLTYPE
  function HRESULT (line 520) | static HRESULT STDMETHODCALLTYPE Site_ShowObject(IOleClientSite FAR *Thi...
  function HRESULT (line 523) | static HRESULT STDMETHODCALLTYPE Site_OnShowWindow(IOleClientSite FAR *T...
  function HRESULT (line 527) | static HRESULT STDMETHODCALLTYPE
  function HRESULT (line 531) | static HRESULT STDMETHODCALLTYPE Site_QueryInterface(IOleClientSite FAR ...
  function HRESULT (line 546) | static HRESULT STDMETHODCALLTYPE InPlace_QueryInterface(
  function ULONG (line 551) | static ULONG STDMETHODCALLTYPE InPlace_AddRef(IOleInPlaceSite FAR *This) {
  function ULONG (line 554) | static ULONG STDMETHODCALLTYPE InPlace_Release(IOleInPlaceSite FAR *This) {
  function HRESULT (line 557) | static HRESULT STDMETHODCALLTYPE InPlace_GetWindow(IOleInPlaceSite FAR *...
  function HRESULT (line 562) | static HRESULT STDMETHODCALLTYPE
  function HRESULT (line 566) | static HRESULT STDMETHODCALLTYPE
  function HRESULT (line 570) | static HRESULT STDMETHODCALLTYPE
  function HRESULT (line 574) | static HRESULT STDMETHODCALLTYPE
  function HRESULT (line 578) | static HRESULT STDMETHODCALLTYPE InPlace_GetWindowContext(
  function HRESULT (line 590) | static HRESULT STDMETHODCALLTYPE InPlace_Scroll(IOleInPlaceSite FAR *This,
  function HRESULT (line 594) | static HRESULT STDMETHODCALLTYPE
  function HRESULT (line 598) | static HRESULT STDMETHODCALLTYPE
  function HRESULT (line 602) | static HRESULT STDMETHODCALLTYPE
  function HRESULT (line 606) | static HRESULT STDMETHODCALLTYPE
  function HRESULT (line 610) | static HRESULT STDMETHODCALLTYPE
  function HRESULT (line 624) | static HRESULT STDMETHODCALLTYPE Frame_QueryInterface(
  function ULONG (line 628) | static ULONG STDMETHODCALLTYPE Frame_AddRef(IOleInPlaceFrame FAR *This) {
  function ULONG (line 631) | static ULONG STDMETHODCALLTYPE Frame_Release(IOleInPlaceFrame FAR *This) {
  function HRESULT (line 634) | static HRESULT STDMETHODCALLTYPE Frame_GetWindow(IOleInPlaceFrame FAR *T...
  function HRESULT (line 639) | static HRESULT STDMETHODCALLTYPE
  function HRESULT (line 643) | static HRESULT STDMETHODCALLTYPE Frame_GetBorder(IOleInPlaceFrame FAR *T...
  function HRESULT (line 647) | static HRESULT STDMETHODCALLTYPE Frame_RequestBorderSpace(
  function HRESULT (line 651) | static HRESULT STDMETHODCALLTYPE Frame_SetBorderSpace(
  function HRESULT (line 655) | static HRESULT STDMETHODCALLTYPE Frame_SetActiveObject(
  function HRESULT (line 660) | static HRESULT STDMETHODCALLTYPE
  function HRESULT (line 665) | static HRESULT STDMETHODCALLTYPE Frame_SetMenu(IOleInPlaceFrame FAR *This,
  function HRESULT (line 671) | static HRESULT STDMETHODCALLTYPE Frame_RemoveMenus(IOleInPlaceFrame FAR ...
  function HRESULT (line 675) | static HRESULT STDMETHODCALLTYPE Frame_SetStatusText(IOleInPlaceFrame FA...
  function HRESULT (line 679) | static HRESULT STDMETHODCALLTYPE
  function HRESULT (line 683) | static HRESULT STDMETHODCALLTYPE
  function HRESULT (line 687) | static HRESULT STDMETHODCALLTYPE UI_QueryInterface(IDocHostUIHandler FAR...
  function ULONG (line 695) | static ULONG STDMETHODCALLTYPE UI_AddRef(IDocHostUIHandler FAR *This) {
  function ULONG (line 698) | static ULONG STDMETHODCALLTYPE UI_Release(IDocHostUIHandler FAR *This) {
  function HRESULT (line 701) | static HRESULT STDMETHODCALLTYPE UI_ShowContextMenu(
  function HRESULT (line 706) | static HRESULT STDMETHODCALLTYPE
  function HRESULT (line 713) | static HRESULT STDMETHODCALLTYPE UI_ShowUI(
  function HRESULT (line 720) | static HRESULT STDMETHODCALLTYPE UI_HideUI(IDocHostUIHandler FAR *This) {
  function HRESULT (line 723) | static HRESULT STDMETHODCALLTYPE UI_UpdateUI(IDocHostUIHandler FAR *This) {
  function HRESULT (line 726) | static HRESULT STDMETHODCALLTYPE UI_EnableModeless(IDocHostUIHandler FAR...
  function HRESULT (line 730) | static HRESULT STDMETHODCALLTYPE
  function HRESULT (line 734) | static HRESULT STDMETHODCALLTYPE
  function HRESULT (line 738) | static HRESULT STDMETHODCALLTYPE
  function HRESULT (line 743) | static HRESULT STDMETHODCALLTYPE
  function HRESULT (line 748) | static HRESULT STDMETHODCALLTYPE UI_GetOptionKeyPath(
  function HRESULT (line 752) | static HRESULT STDMETHODCALLTYPE UI_GetDropTarget(
  function HRESULT (line 757) | static HRESULT STDMETHODCALLTYPE UI_GetExternal(
  function HRESULT (line 762) | static HRESULT STDMETHODCALLTYPE UI_TranslateUrl(
  function HRESULT (line 768) | static HRESULT STDMETHODCALLTYPE
  function UnEmbedBrowserObject (line 836) | static void UnEmbedBrowserObject(struct webview *w) {
  function EmbedBrowserObject (line 845) | static int EmbedBrowserObject(struct webview *w) {
  function DisplayHTMLPage (line 922) | static long DisplayHTMLPage(struct webview *w) {
  function LRESULT (line 1018) | static LRESULT CALLBACK wndproc(HWND hwnd, UINT uMsg, WPARAM wParam,
  function webview_fix_ie_compat_mode (line 1056) | static int webview_fix_ie_compat_mode() {
  function webview_init (line 1080) | static int webview_init(struct webview *w) {
  function webview_loop (line 1147) | static int webview_loop(struct webview *w, int blocking) {
  function webview_eval (line 1185) | static int webview_eval(struct webview *w, const char *js) {
  function webview_dispatch (line 1252) | static void webview_dispatch(struct webview *w, webview_dispatch_fn fn,
  function webview_set_title (line 1257) | static void webview_set_title(struct webview *w, const char *title) {
  type _FILEOPENDIALOGOPTIONS (line 1264) | enum _FILEOPENDIALOGOPTIONS {
  type DWORD (line 1287) | typedef DWORD FILEOPENDIALOGOPTIONS;
  type FDAP (line 1288) | typedef enum FDAP { FDAP_BOTTOM = 0, FDAP_TOP = 1 } FDAP;
  type IFileDialogVtbl (line 1291) | typedef struct IFileDialogVtbl {
  function interface (line 1336) | interface IFileDialog {
  function webview_dialog (line 1345) | static void webview_dialog(struct webview *w, enum webview_dialog_type d...
  function webview_terminate (line 1416) | static void webview_terminate(struct webview *w) { PostQuitMessage(0); }
  function webview_exit (line 1417) | static void webview_exit(struct webview *w) { OleUninitialize(); }
  function webview_print_log (line 1418) | static void webview_print_log(const char *s) { OutputDebugString(s); }
  function webview_window_will_close (line 1438) | static void webview_window_will_close(id self, SEL cmd, id notification) {
  function BOOL (line 1444) | static BOOL webview_is_selector_excluded_from_web_script(id self, SEL cmd,
  function NSString (line 1449) | static NSString *webview_webscript_name_for_selector(id self, SEL cmd,
  function webview_did_clear_window_object (line 1454) | static void webview_did_clear_window_object(id self, SEL cmd, id webview,
  function webview_external_invoke (line 1459) | static void webview_external_invoke(id self, SEL cmd, id arg) {
  function webview_init (line 1471) | static int webview_init(struct webview *w) {
  function webview_loop (line 1571) | static int webview_loop(struct webview *w, int blocking) {
  function webview_eval (line 1583) | static int webview_eval(struct webview *w, const char *js) {
  function webview_set_title (line 1589) | static void webview_set_title(struct webview *w, const char *title) {
  function webview_dialog (line 1594) | static void webview_dialog(struct webview *w, enum webview_dialog_type d...
  function webview_dispatch_cb (line 1636) | static void webview_dispatch_cb(void *arg) {
  function webview_dispatch (line 1642) | static void webview_dispatch(struct webview *w, webview_dispatch_fn fn,
  function webview_terminate (line 1652) | static void webview_terminate(struct webview *w) { w->priv.should_exit =...
  function webview_exit (line 1653) | static void webview_exit(struct webview *w) { [NSApp terminate:NSApp]; }
  function webview_print_log (line 1654) | static void webview_print_log(const char *s) { NSLog(@"%s", s); }

FILE: vendor/github.com/zserge/webview/webview_test.go
  type foo (line 8) | type foo struct
    method Foo1 (line 12) | func (f *foo) Foo1(a int, b float32) {
    method Foo2 (line 15) | func (f *foo) Foo2(a []int, b [3]float32, c map[int]int) {
    method Foo3 (line 18) | func (f *foo) Foo3(a []image.Point, b struct{ Z int }) {
  function TestBadBinding (line 22) | func TestBadBinding(t *testing.T) {
  function TestBindingCall (line 44) | func TestBindingCall(t *testing.T) {
Copy disabled (too large) Download .json
Condensed preview — 234 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (11,769K chars).
[
  {
    "path": ".gitignore",
    "chars": 90,
    "preview": "*.o\nglitch.alsa\nglitch.pulse\nglitch.jack\nglitch.mac\nglitch.exe\n\nweb/dist\n\nsamples\n\n.idea/\n"
  },
  {
    "path": ".travis.yml",
    "chars": 649,
    "preview": "language: go\n\nmatrix:\n  include:\n    - os: linux\n      before_install:\n        - sudo add-apt-repository ppa:webkit-team"
  },
  {
    "path": "API.md",
    "chars": 13214,
    "preview": "# Glitch API\n\nGlitch is an algorithmic synthesizer. It creates music with math. Below is a\nlist of functions that you ca"
  },
  {
    "path": "Gopkg.toml",
    "chars": 831,
    "preview": "\n# Gopkg.toml example\n#\n# Refer to https://github.com/golang/dep/blob/master/docs/Gopkg.toml.md\n# for detailed Gopkg.tom"
  },
  {
    "path": "LICENSE",
    "chars": 35141,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "README.md",
    "chars": 7888,
    "preview": "# Glitch\n\n[![Build Status](https://travis-ci.org/naivesound/glitch.svg?branch=master)](https://travis-ci.org/naivesound/"
  },
  {
    "path": "appveyor.yml",
    "chars": 1099,
    "preview": "os: Visual Studio 2017\n\nversion: \"{build}\"\n\nclone_folder: c:\\gopath\\src\\github.com\\naivesound\\glitch\n\nenvironment:\n  glo"
  },
  {
    "path": "audio/audio.go",
    "chars": 2873,
    "preview": "package audio\n\nimport (\n\t\"log\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/thestk/rtaudio/contrib/go/rtaudio\"\n)\n\ntype Callback func(in"
  },
  {
    "path": "audio/midi.go",
    "chars": 4214,
    "preview": "package audio\n\nimport (\n\t\"log\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/thestk/rtmidi/contrib/go/rtmidi\"\n)\n\ntype MIDICallback func("
  },
  {
    "path": "cmd/glitch/app.go",
    "chars": 4326,
    "preview": "package main\n\nimport (\n\t\"io/ioutil\"\n\t\"log\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"time\"\n\n\t\"github.com/naivesound/glitch/audio\"\n\t\"githu"
  },
  {
    "path": "cmd/glitch/assets.go",
    "chars": 6032797,
    "preview": "package main\n\nimport (\n\t\"bytes\"\n\t\"compress/gzip\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n)\n\nfunc bindata_read(data []byte, name string) "
  },
  {
    "path": "cmd/glitch/gen.go",
    "chars": 972,
    "preview": "// +build gen\n\npackage main\n\nimport (\n\t\"log\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"regexp\"\n\n\t\"github.com/jteeuwen/go-bindata\"\n)\n\nfunc"
  },
  {
    "path": "cmd/glitch/loader.go",
    "chars": 1863,
    "preview": "package main\n\nimport (\n\t\"io/ioutil\"\n\t\"math\"\n\t\"path/filepath\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/naivesound/glitch/core\"\n)\n"
  },
  {
    "path": "cmd/glitch/main.go",
    "chars": 1656,
    "preview": "package main\n\n//go:generate go run -tags gen gen.go\n\nimport (\n\t\"encoding/json\"\n\t\"io/ioutil\"\n\t\"log\"\n\t\"os\"\n\t\"path/filepath"
  },
  {
    "path": "cmd/glitch/ui.go",
    "chars": 786,
    "preview": "package main\n\nimport (\n\t\"bytes\"\n\t\"io\"\n\t\"log\"\n\t\"mime\"\n\t\"net\"\n\t\"net/http\"\n\t\"path/filepath\"\n)\n\nconst (\n\twindowWidth  = 640\n"
  },
  {
    "path": "core/CMakeLists.txt",
    "chars": 352,
    "preview": "cmake_minimum_required(VERSION 3.2)\n\nproject(glitch-core)\n\nadd_library(glitch-core STATIC glitch.c)\nset_target_propertie"
  },
  {
    "path": "core/expr.h",
    "chars": 24606,
    "preview": "#ifndef EXPR_H\n#define EXPR_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#include <ctype.h> /* for isspace */\n#include <li"
  },
  {
    "path": "core/glitch.c",
    "chars": 24588,
    "preview": "#include <stdint.h>\n#include <stdio.h>\n#include <stdlib.h>\n\n#include \"expr.h\"\n#include \"libglitch.h\"\n\n#include \"glitch.h"
  },
  {
    "path": "core/glitch.go",
    "chars": 2618,
    "preview": "package core\n\n/*\n#cgo CFLAGS: -std=c99 -g -Wall -Wextra -pedantic -Wno-unused-parameter -Wno-unused-function\n#cgo LDFLAG"
  },
  {
    "path": "core/glitch.h",
    "chars": 1410,
    "preview": "#ifndef GLITCH_H\n#define GLITCH_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n#include \"expr.h\"\n\n#define MAX_POLYPHONY 9\n\nst"
  },
  {
    "path": "core/glitch_test.c",
    "chars": 13925,
    "preview": "// +build ignore\n\n#include <assert.h>\n#include <stdio.h>\n#include <time.h>\n\n#define LIBGLITCH_TEST\n#include \"glitch.c\"\n\n"
  },
  {
    "path": "core/glitch_test.go",
    "chars": 1578,
    "preview": "package core\n\nimport \"testing\"\n\nfunc eval(g Glitch) float32 {\n\tf32 := []float32{0}\n\tg.Fill(f32, 1, 1)\n\treturn f32[0]\n}\n\n"
  },
  {
    "path": "core/libglitch.h",
    "chars": 16244,
    "preview": "#ifndef LIBGLITCH_H\n#define LIBGLITCH_H\n\n#include <assert.h>\n#include <math.h>\n#include <stdlib.h>\n\n#ifdef LIBGLITCH_TES"
  },
  {
    "path": "core/tr808.h",
    "chars": 1951869,
    "preview": "unsigned char tr808_bd_wav[] = {\n  0x52, 0x49, 0x46, 0x46, 0x8c, 0xac, 0x00, 0x00, 0x57, 0x41, 0x56, 0x45,\n  0x66, 0x6d,"
  },
  {
    "path": "dist/glitch.exe.manifest",
    "chars": 509,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersi"
  },
  {
    "path": "dist/glitch.rc",
    "chars": 66,
    "preview": "100 ICON    \"icons\\\\glitch.ico\"\n100 24      \"glitch.exe.manifest\"\n"
  },
  {
    "path": "dist/release-linux.sh",
    "chars": 596,
    "preview": "#!/bin/sh\n\nVERSION=$(git describe --abbrev=0 --tags)\n\nDIR=$(cd $(dirname $0)/..; pwd)\nDISTNAME=glitch-linux-$(uname -m)-"
  },
  {
    "path": "dist/release-macos.sh",
    "chars": 1379,
    "preview": "#!/bin/sh\n\nVERSION=$(git describe --abbrev=0 --tags)\n\nDIR=$(cd $(dirname $0)/..; pwd)\nDISTNAME=glitch-macos-$(uname -m)-"
  },
  {
    "path": "dist/release-web.sh",
    "chars": 1447,
    "preview": "#!/bin/sh\n\nVERSION=$(git describe --abbrev=0 --tags)\n\nDIR=$(cd $(dirname $0)/..; pwd)\nDISTNAME=glitch-web-$(uname -m)-$V"
  },
  {
    "path": "dist/release-windows.bat",
    "chars": 925,
    "preview": "@echo off\n\nreg Query \"HKLM\\Hardware\\Description\\System\\CentralProcessor\\0\" | find /i \"x86\" > NUL && set UNAME=i686 || se"
  },
  {
    "path": "examples/bytebeat/42.glitch",
    "chars": 67,
    "preview": "#\n# A famous very laconic \"42\" bytebeat riff\n#\n\nbyte(t*(42&t>>10))\n"
  },
  {
    "path": "examples/bytebeat/arp.glitch",
    "chars": 172,
    "preview": "#\n# Combines two \"instruments\": a rhythmic two-note part and a chaotic\n# high-pitched voice\n#\n\nbyte((t*t/256)&(t>>((t/10"
  },
  {
    "path": "examples/bytebeat/dreamy.glitch",
    "chars": 58,
    "preview": "#\n# A calm 8-bit arpeggio\n#\n\nbyte((t*5&t>>7)|(t*3&t>>10))\n"
  },
  {
    "path": "examples/bytebeat/drum.glitch",
    "chars": 111,
    "preview": "#\n# Short random-pitched harsh tones sound like a drum pattern\n#\n\nbyte((t>>6|t<<1)+(t>>5|t<<3|t>>3)|t>>2|t<<1)\n"
  },
  {
    "path": "examples/bytebeat/nervous.glitch",
    "chars": 99,
    "preview": "#\n# Ascending progression of sawtooth waves\n#\n\nbyte((t*((3+(1^t>>10&5))*(5+(3&t>>14))))>>(t>>8&3))\n"
  },
  {
    "path": "examples/bytebeat/poly.glitch",
    "chars": 110,
    "preview": "#\n# Polyphonic mini-song made of \"drums\", \"lead\" synth and \"voice\".\n#\n\nbyte((t*9&t>>4|t*5&t>>7|t*3&t/1024)-1)\n"
  },
  {
    "path": "examples/bytebeat/right.glitch",
    "chars": 89,
    "preview": "#\n# A recurring riff made with right-shifts\n#\n\nbyte((t>>6|t|t>>(t>>16))*10+((t>>11)&7))\n\n"
  },
  {
    "path": "examples/bytebeat/saw.glitch",
    "chars": 129,
    "preview": "#\n# Harsh and clear dance of sawtooth waves,\n# a very popular bytebeat tune (made by @viznut)\n#\n\nbyte(t*((t>>12|t>>8)&63"
  },
  {
    "path": "examples/bytebeat/sqr.glitch",
    "chars": 88,
    "preview": "#\n# A melodic tune for square waves (made by @visy)\n#\n\nbyte((t*((t>>9|t>>13)&15))&129)\n\n"
  },
  {
    "path": "examples/bytebeat/white.glitch",
    "chars": 131,
    "preview": "#\n# White noise drums and high-pitch cosmic computer sounds\n#\n\nbyte(t*(t>>((t&4096)&&((t*t)/4096)||(t/4096)))|(t<<(t/256"
  },
  {
    "path": "examples/das_model.glitch",
    "chars": 668,
    "preview": "#\n# Kraftwerk - Das Model\n#\n\nbpm=120\n\nparts = seq(bpm/16, 0, 1, 3, 7, 7, 7, 7, 3, 1)\n\ni = seq(bpm/4, 0, 7)\n\nroot = saw(h"
  },
  {
    "path": "examples/drums.glitch",
    "chars": 860,
    "preview": "#\n# An example of synthesized drum kit\n#\n\nbpm=80\n\n# kick(volume, freq) - kick drum is a low-frequency sine wave with qui"
  },
  {
    "path": "examples/get_yucky.glitch",
    "chars": 878,
    "preview": "#\n# Get Lucky chords progression with hand-made drums\n#\n\nbpm=120\n\npart=seq(bpm/4/4, 1, 3, 7, 15, 15, 15, 15, 10, 3)\n\nkic"
  },
  {
    "path": "examples/sur_la_planche.glitch",
    "chars": 827,
    "preview": "bpm=100\n\np = seq(bpm/8,0,1,3,7,7,11,11,7,7,15,15,7,1)\n\nintro = seq(bpm*4, 0, 0, 7, 7)\nintro = env(tri(hz(intro-12)), 0.0"
  },
  {
    "path": "ui/app.js",
    "chars": 14697,
    "preview": "'use strict';\n\nvar h = picodom.h;\n\nfunction isWebView() {\n  try {\n    window.external.invoke('');\n    return true;\n  } c"
  },
  {
    "path": "ui/index.html",
    "chars": 2304,
    "preview": "<!doctype html>\n<html>\n\t<head>\n\t\t<meta charset=\"UTF-8\">\n\t\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n\t\t<met"
  },
  {
    "path": "ui/styles.css",
    "chars": 6715,
    "preview": "* {\n\tmargin: 0;\n\tpadding: 0;\n\tbox-sizing: border-box;\n\tfont-family: 'Roboto Mono';\n}\n\nhtml { height: 100%; }\nbody {\n\twid"
  },
  {
    "path": "ui/vendor/codemirror/codemirror.css",
    "chars": 8271,
    "preview": "/* BASICS */\n\n.CodeMirror {\n  /* Set height, width, borders, and global font properties here */\n  font-family: monospace"
  },
  {
    "path": "ui/vendor/codemirror/codemirror.js",
    "chars": 367051,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "ui/vendor/codemirror/matchbrackets.js",
    "chars": 6058,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "ui/vendor/codemirror/material.css",
    "chars": 2564,
    "preview": "/*\n\n    Name:       material\n    Author:     Michael Kaminsky (http://github.com/mkaminsky11)\n\n    Original material col"
  },
  {
    "path": "ui/vendor/codemirror/simplescrollbars.js",
    "chars": 5462,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "ui/vendor/material-icons/MaterialIcons-Regular.ijmap",
    "chars": 28416,
    "preview": "{\"icons\":{\"e84d\":{\"name\":\"3d Rotation\"},\"eb3b\":{\"name\":\"Ac Unit\"},\"e190\":{\"name\":\"Access Alarm\"},\"e191\":{\"name\":\"Access "
  },
  {
    "path": "ui/vendor/material-icons/README.md",
    "chars": 316,
    "preview": "The recommended way to use the Material Icons font is by linking to the web font hosted on Google Fonts:\n\n```html\n<link "
  },
  {
    "path": "ui/vendor/material-icons/codepoints",
    "chars": 16289,
    "preview": "3d_rotation e84d\nac_unit eb3b\naccess_alarm e190\naccess_alarms e191\naccess_time e192\naccessibility e84e\naccessible e914\na"
  },
  {
    "path": "ui/vendor/material-icons/material-icons.css",
    "chars": 970,
    "preview": "@font-face {\n  font-family: 'Material Icons';\n  font-style: normal;\n  font-weight: 400;\n  src: url(MaterialIcons-Regular"
  },
  {
    "path": "ui/vendor/picodom/picodom.js",
    "chars": 2299,
    "preview": "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?def"
  },
  {
    "path": "ui/vendor/roboto-mono/roboto-mono.css",
    "chars": 3092,
    "preview": "/* roboto-mono-300 - greek_cyrillic_latin */\n@font-face {\n  font-family: 'Roboto Mono';\n  font-style: normal;\n  font-wei"
  },
  {
    "path": "vendor/github.com/jteeuwen/go-bindata/CONTRIBUTING.md",
    "chars": 3614,
    "preview": "## Contribution guidelines.\n\nSo you wish to contribute to this project? Fantastic!\nHere are a few guidelines to help you"
  },
  {
    "path": "vendor/github.com/jteeuwen/go-bindata/LICENSE",
    "chars": 169,
    "preview": "This work is subject to the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication\nlicense. Its contents can be found at:\n"
  },
  {
    "path": "vendor/github.com/jteeuwen/go-bindata/README.md",
    "chars": 6689,
    "preview": "## bindata\n\nThis package converts any file into managable Go source code. Useful for\nembedding binary data into a go pro"
  },
  {
    "path": "vendor/github.com/jteeuwen/go-bindata/asset.go",
    "chars": 733,
    "preview": "// This work is subject to the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication\n// license. Its contents can be foun"
  },
  {
    "path": "vendor/github.com/jteeuwen/go-bindata/bytewriter.go",
    "chars": 668,
    "preview": "// This work is subject to the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication\n// license. Its contents can be foun"
  },
  {
    "path": "vendor/github.com/jteeuwen/go-bindata/config.go",
    "chars": 6217,
    "preview": "// This work is subject to the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication\n// license. Its contents can be foun"
  },
  {
    "path": "vendor/github.com/jteeuwen/go-bindata/convert.go",
    "chars": 4271,
    "preview": "// This work is subject to the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication\n// license. Its contents can be foun"
  },
  {
    "path": "vendor/github.com/jteeuwen/go-bindata/debug.go",
    "chars": 1429,
    "preview": "// This work is subject to the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication\n// license. Its contents can be foun"
  },
  {
    "path": "vendor/github.com/jteeuwen/go-bindata/doc.go",
    "chars": 5028,
    "preview": "// This work is subject to the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication\n// license. Its contents can be foun"
  },
  {
    "path": "vendor/github.com/jteeuwen/go-bindata/go-bindata/AppendSliceValue.go",
    "chars": 503,
    "preview": "package main\n\nimport \"strings\"\n\n// borrowed from https://github.com/hashicorp/serf/blob/master/command/agent/flag_slice_"
  },
  {
    "path": "vendor/github.com/jteeuwen/go-bindata/go-bindata/main.go",
    "chars": 2978,
    "preview": "// This work is subject to the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication\n// license. Its contents can be foun"
  },
  {
    "path": "vendor/github.com/jteeuwen/go-bindata/go-bindata/version.go",
    "chars": 751,
    "preview": "// This work is subject to the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication\n// license. Its contents can be foun"
  },
  {
    "path": "vendor/github.com/jteeuwen/go-bindata/release.go",
    "chars": 5648,
    "preview": "// This work is subject to the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication\n// license. Its contents can be foun"
  },
  {
    "path": "vendor/github.com/jteeuwen/go-bindata/stringwriter.go",
    "chars": 551,
    "preview": "// This work is subject to the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication\n// license. Its contents can be foun"
  },
  {
    "path": "vendor/github.com/jteeuwen/go-bindata/testdata/in/a/test.asset",
    "chars": 15,
    "preview": "// sample file\n"
  },
  {
    "path": "vendor/github.com/jteeuwen/go-bindata/testdata/in/b/test.asset",
    "chars": 15,
    "preview": "// sample file\n"
  },
  {
    "path": "vendor/github.com/jteeuwen/go-bindata/testdata/in/c/test.asset",
    "chars": 15,
    "preview": "// sample file\n"
  },
  {
    "path": "vendor/github.com/jteeuwen/go-bindata/testdata/in/test.asset",
    "chars": 15,
    "preview": "// sample file\n"
  },
  {
    "path": "vendor/github.com/jteeuwen/go-bindata/testdata/out/compress-memcopy.go",
    "chars": 2177,
    "preview": "package main\n\nimport (\n\t\"bytes\"\n\t\"compress/gzip\"\n\t\"io\"\n\t\"log\"\n)\n\nfunc bindata_read(data []byte, name string) []byte {\n\tg"
  },
  {
    "path": "vendor/github.com/jteeuwen/go-bindata/testdata/out/compress-nomemcopy.go",
    "chars": 2179,
    "preview": "package main\n\nimport (\n\t\"bytes\"\n\t\"compress/gzip\"\n\t\"io\"\n\t\"log\"\n\t\"reflect\"\n\t\"unsafe\"\n)\n\nfunc bindata_read(data, name strin"
  },
  {
    "path": "vendor/github.com/jteeuwen/go-bindata/testdata/out/debug.go",
    "chars": 1910,
    "preview": "package main\n\nimport (\n\t\"bytes\"\n\t\"io\"\n\t\"log\"\n\t\"os\"\n)\n\n// bindata_read reads the given file from disk.\n// It panics if an"
  },
  {
    "path": "vendor/github.com/jteeuwen/go-bindata/testdata/out/nocompress-memcopy.go",
    "chars": 1075,
    "preview": "package main\n\nfunc in_b_test_asset() []byte {\n\treturn []byte{\n\t\t0x2f, 0x2f, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x"
  },
  {
    "path": "vendor/github.com/jteeuwen/go-bindata/testdata/out/nocompress-nomemcopy.go",
    "chars": 1515,
    "preview": "package main\n\nimport (\n\t\"reflect\"\n\t\"unsafe\"\n)\n\nfunc bindata_read(data, name string) []byte {\n\tvar empty [0]byte\n\tsx := ("
  },
  {
    "path": "vendor/github.com/jteeuwen/go-bindata/toc.go",
    "chars": 4574,
    "preview": "// This work is subject to the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication\n// license. Its contents can be foun"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/.gitattributes",
    "chars": 153,
    "preview": "# make sure that .gitignore, .travis.yml,... are not part of a\n# source-package generated via 'git archive'\n.git*      \t"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/.gitignore",
    "chars": 124,
    "preview": "Makefile\n*.o\n/config\n/configure\n/Makefile.in\n/aclocal.m4\n/autom4te.cache\n/configure\n/m4\n/doc/Makefile.in\n/tests/Makefile"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/.travis.yml",
    "chars": 2558,
    "preview": "language: cpp\nsudo: false  # docker VM\nmatrix:\n  include:\n  - os: linux\n    env: HOST=\"\" API=\"alsa\"\n    compiler: gcc\n  "
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/CMakeLists.txt",
    "chars": 4539,
    "preview": "cmake_minimum_required(VERSION 2.8.10)\nproject(RtAudio)\n\ninclude(CTest)\ninclude(CheckFunctionExists)\n\noption(BUILD_PYTHO"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/Makefile.am",
    "chars": 655,
    "preview": "SUBDIRS = . tests\nif MAKE_DOC\nSUBDIRS += doc\nendif\n\nAM_CXXFLAGS = @visibility@\n\nlib_LTLIBRARIES = %D%/librtaudio.la\n%C%_"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/README.md",
    "chars": 3709,
    "preview": "# RtAudio\n\n[![Build Status](https://travis-ci.org/thestk/rtaudio.svg?branch=master)](https://travis-ci.org/thestk/rtaudi"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/RtAudio.cpp",
    "chars": 355081,
    "preview": "/************************************************************************/\n/*! \\class RtAudio\n    \\brief Realtime audio"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/RtAudio.h",
    "chars": 47152,
    "preview": "/************************************************************************/\n/*! \\class RtAudio\n    \\brief Realtime audio "
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/autogen.sh",
    "chars": 2884,
    "preview": "#!/bin/sh\n# Run this to generate all the initial makefiles, etc.\n\nsrcdir=`dirname $0`\ntest -z \"$srcdir\" && srcdir=.\n\nDIE"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/configure.ac",
    "chars": 9547,
    "preview": "# Process this file with autoconf to produce a configure script.\nAC_INIT(RtAudio, 5.0.0, gary@music.mcgill.ca, rtaudio)\n"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/contrib/go/rtaudio/rtaudio.go",
    "chars": 15128,
    "preview": "package rtaudio\n\n/*\n\n#cgo CXXFLAGS: -g\n#cgo LDFLAGS: -lstdc++ -g\n\n#cgo linux CXXFLAGS: -D__LINUX_ALSA__\n#cgo linux LDFLA"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/contrib/go/rtaudio/rtaudio_stub.cpp",
    "chars": 97,
    "preview": "#include \"../../../RtAudio.h\"\n\n#include \"../../../RtAudio.cpp\"\n#include \"../../../rtaudio_c.cpp\"\n"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/contrib/go/rtaudio/rtaudio_stub.h",
    "chars": 32,
    "preview": "#include \"../../../rtaudio_c.h\"\n"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/contrib/go/rtaudio/rtaudio_test.go",
    "chars": 1369,
    "preview": "package rtaudio\n\nimport (\n\t\"log\"\n\t\"math\"\n\t\"time\"\n)\n\nfunc ExampleCompiledAPI() {\n\tlog.Println(\"RtAudio version: \", Versio"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/contrib/python/pyrtaudio/PyRtAudioTest.py",
    "chars": 1553,
    "preview": "\r\nimport rtaudio as rt\r\n\r\nfrom math import cos\r\n\r\nimport struct\r\n\r\n\r\nclass audio_generator:\r\n    def __init__(self):\r\n  "
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/contrib/python/pyrtaudio/readme",
    "chars": 2496,
    "preview": "PyRtAudio - a python wrapper around RtAudio that allows to perform audio i/o operations in real-time from the python lan"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/contrib/python/pyrtaudio/rtaudiomodule.cpp",
    "chars": 21507,
    "preview": "/************************************************************************/\n/*  PyRtAudio: a python wrapper around RtAudi"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/contrib/python/pyrtaudio/setup.py",
    "chars": 1559,
    "preview": "#!/bin/env python\n\nimport os\nfrom distutils.core import setup, Extension\n\nif hasattr(os, 'uname'):\n    OSNAME = os.uname"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/doc/Makefile.am",
    "chars": 646,
    "preview": "\nMAINTAINERCLEANFILES=Makefile.in \n\nCLEANFILES=doxygen-build.stamp\n\nDOX=Doxyfile\n\nEXTRA_DIST=html\n\nINSTIMAGES=html/doxyg"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/doc/doxygen/Doxyfile.in",
    "chars": 81331,
    "preview": "# Doxyfile 1.8.3.1\n\n# This file describes the settings to be used by the documentation system\n# doxygen (www.doxygen.org"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/doc/doxygen/acknowledge.txt",
    "chars": 2082,
    "preview": "/*! \\page acknowledge Acknowledgements\n\nMany thanks to the following people for providing bug fixes and improvements:\n<U"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/doc/doxygen/apinotes.txt",
    "chars": 4971,
    "preview": "/*! \\page apinotes API Notes\n\nRtAudio is designed to provide a common API across the various supported operating systems"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/doc/doxygen/compiling.txt",
    "chars": 3706,
    "preview": "/*! \\page compiling Debugging & Compiling\n\n\\section debug Debugging\n\nIf you are having problems getting RtAudio to run o"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/doc/doxygen/duplex.txt",
    "chars": 2145,
    "preview": "/*! \\page duplex Duplex Mode\n\nFinally, it is easy to use RtAudio for simultaneous audio input/output, or duplex operatio"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/doc/doxygen/error.txt",
    "chars": 929,
    "preview": "/*! \\page errors Error Handling\n\nRtAudio makes restrained use of C++ exceptions.  That is, exceptions are thrown only wh"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/doc/doxygen/footer.html",
    "chars": 266,
    "preview": "<HR>\n\n<table><tr><td><img src=\"../images/mcgill.gif\" width=165></td>\n  <td>&copy;2001-2017 Gary P. Scavone, McGill Unive"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/doc/doxygen/header.html",
    "chars": 490,
    "preview": "<HTML>\n<HEAD>\n<TITLE>The RtAudio Home Page</TITLE>\n<LINK HREF=\"doxygen.css\" REL=\"stylesheet\" TYPE=\"text/css\">\n<LINK REL="
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/doc/doxygen/license.txt",
    "chars": 1482,
    "preview": "/*! \\page license License\n\n    RtAudio: a set of realtime audio i/o C++ classes<BR>\n    Copyright (c) 2001-2017 Gary P. "
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/doc/doxygen/multi.txt",
    "chars": 1591,
    "preview": "/*! \\page multi Using Simultaneous Multiple APIs\n\nBecause support for each audio API is encapsulated in a specific RtApi"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/doc/doxygen/playback.txt",
    "chars": 2986,
    "preview": "/*! \\page playback Playback\n\nIn this example, we provide a complete program that demonstrates the use of RtAudio for aud"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/doc/doxygen/probe.txt",
    "chars": 3636,
    "preview": "/*! \\page probe Probing Device Capabilities\n\nA programmer may wish to query the available audio device capabilities befo"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/doc/doxygen/recording.txt",
    "chars": 1733,
    "preview": "/*! \\page recording Recording\n\n\nUsing RtAudio for audio input is almost identical to the way it is used for playback.  H"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/doc/doxygen/settings.txt",
    "chars": 4179,
    "preview": "/*! \\page settings Device Settings\n\nThe next step in using RtAudio is to open a stream with particular device and parame"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/doc/doxygen/tutorial.txt",
    "chars": 2211,
    "preview": "/*! \\mainpage The RtAudio Home Page\n\nRtAudio is a set of C++ classes that provide a common API (Application Programming "
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/doc/release.txt",
    "chars": 9380,
    "preview": "RtAudio - a set of C++ classes that provide a common API for realtime audio input/output across Linux (native ALSA, JACK"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/include/asio.cpp",
    "chars": 5577,
    "preview": "/*\r\n\tSteinberg Audio Stream I/O API\r\n\t(c) 1996, Steinberg Soft- und Hardware GmbH\r\n\r\n\tasio.cpp\r\n\t\r\n\tasio functions entri"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/include/asio.h",
    "chars": 42889,
    "preview": "//---------------------------------------------------------------------------------------------------\r\n//---------------"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/include/asiodrivers.cpp",
    "chars": 3426,
    "preview": "#include <string.h>\r\n#include \"asiodrivers.h\"\r\n\r\nAsioDrivers* asioDrivers = 0;\r\n\r\nbool loadAsioDriver(char *name);\r\n\r\nbo"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/include/asiodrivers.h",
    "chars": 719,
    "preview": "#ifndef __AsioDrivers__\r\n#define __AsioDrivers__\r\n\r\n#include \"ginclude.h\"\r\n\r\n#if MAC\r\n#include \"CodeFragments.hpp\"\r\n\r\ncl"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/include/asiodrvr.h",
    "chars": 2266,
    "preview": "/*\r\n\tSteinberg Audio Stream I/O API\r\n\t(c) 1996, Steinberg Soft- und Hardware GmbH\r\n\tcharlie (May 1996)\r\n\r\n\tasiodrvr.h\r\n\t"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/include/asiolist.cpp",
    "chars": 7676,
    "preview": "#include <windows.h>\n#include \"iasiodrv.h\"\n#include \"asiolist.h\"\n\n#define ASIODRV_DESC\t\t\"description\"\n#define INPROC_SER"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/include/asiolist.h",
    "chars": 994,
    "preview": "#ifndef __asiolist__\r\n#define __asiolist__\r\n\r\n#define DRVERR\t\t\t-5000\r\n#define DRVERR_INVALID_PARAM\t\tDRVERR-1\r\n#define DR"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/include/asiosys.h",
    "chars": 1360,
    "preview": "#ifndef __asiosys__\r\n\t#define __asiosys__\r\n\r\n\t#ifdef WIN32\r\n\t\t#undef MAC \r\n\t\t#define PPC 0\r\n\t\t#define WINDOWS 1\r\n\t\t#defi"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/include/dsound.h",
    "chars": 108387,
    "preview": "/*==========================================================================;\n *\n *  Copyright (c) Microsoft Corporation"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/include/functiondiscoverykeys_devpkey.h",
    "chars": 18674,
    "preview": "#pragma once\n\n/*++\n\nCopyright (c) Microsoft Corporation.  All rights reserved.\n\nModule Name:\n\n    devpkey.h\n\nAbstract:\n\n"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/include/ginclude.h",
    "chars": 636,
    "preview": "#ifndef __gInclude__\r\n#define __gInclude__\r\n\r\n#if SGI \r\n\t#undef BEOS \r\n\t#undef MAC \r\n\t#undef WINDOWS\r\n\t//\r\n\t#define ASIO"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/include/iasiodrv.h",
    "chars": 1588,
    "preview": "#include \"asiosys.h\"\r\n#include \"asio.h\"\r\n\r\n/* Forward Declarations */ \r\n\r\n#ifndef __ASIODRIVER_FWD_DEFINED__\r\n#define __"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/include/iasiothiscallresolver.cpp",
    "chars": 23987,
    "preview": "/*\n\tIASIOThiscallResolver.cpp see the comments in iasiothiscallresolver.h for\n    the top level description - this comme"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/include/iasiothiscallresolver.h",
    "chars": 9864,
    "preview": "// ****************************************************************************\r\n//\r\n// Changed:         I have modified"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/include/soundcard.h",
    "chars": 66113,
    "preview": "/*\n * soundcard.h\n */\n\n/*-\n * Copyright by Hannu Savolainen 1993 / 4Front Technologies 1993-2006\n * Modified for the new"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/install.txt",
    "chars": 2592,
    "preview": "RtAudio - a set of C++ classes which provide a common API for realtime audio input/output across Linux (native ALSA, JAC"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/rtaudio.pc.in",
    "chars": 364,
    "preview": "prefix=@prefix@\nexec_prefix=${prefix}\nlibdir=${exec_prefix}/lib\nincludedir=${prefix}/include/rtaudio        \n\nName: libr"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/rtaudio_c.cpp",
    "chars": 7448,
    "preview": "#include \"rtaudio_c.h\"\n#include \"RtAudio.h\"\n\n#include <cstring>\n\n#define MAX_ERROR_MESSAGE_LENGTH 512\n\nstruct rtaudio {\n"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/rtaudio_c.h",
    "chars": 4409,
    "preview": "#ifndef RTAUDIO_C_H\n#define RTAUDIO_C_H\n\n#if defined(RTAUDIO_EXPORT)\n#define RTAUDIOAPI __declspec(dllexport)\n#else\n#def"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/tests/CMakeLists.txt",
    "chars": 759,
    "preview": "include_directories(..)\nif (WIN32)\n    include_directories(../include)\nendif (WIN32)\n\nadd_executable(audioprobe audiopro"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/tests/Debug/.placeholder",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/tests/Makefile.am",
    "chars": 685,
    "preview": "\nnoinst_PROGRAMS = audioprobe playsaw playraw record duplex testall teststops\n\nAM_CXXFLAGS = -Wall -I$(top_srcdir)\n\naudi"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/tests/Release/.placeholder",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/tests/Windows/Debug/.placeholder",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/tests/Windows/Release/.placeholder",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/tests/Windows/audioprobe.dsp",
    "chars": 5455,
    "preview": "# Microsoft Developer Studio Project File - Name=\"audioprobe\" - Package Owner=<4>\r\n# Microsoft Developer Studio Generate"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/tests/Windows/duplex.dsp",
    "chars": 5428,
    "preview": "# Microsoft Developer Studio Project File - Name=\"duplex\" - Package Owner=<4>\r\n# Microsoft Developer Studio Generated Bu"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/tests/Windows/playraw.dsp",
    "chars": 5407,
    "preview": "# Microsoft Developer Studio Project File - Name=\"playraw\" - Package Owner=<4>\r\n# Microsoft Developer Studio Generated B"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/tests/Windows/playsaw.dsp",
    "chars": 5407,
    "preview": "# Microsoft Developer Studio Project File - Name=\"playsaw\" - Package Owner=<4>\r\n# Microsoft Developer Studio Generated B"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/tests/Windows/record.dsp",
    "chars": 5391,
    "preview": "# Microsoft Developer Studio Project File - Name=\"record\" - Package Owner=<4>\r\n# Microsoft Developer Studio Generated Bu"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/tests/Windows/rtaudio.dsw",
    "chars": 1677,
    "preview": "Microsoft Developer Studio Workspace File, Format Version 6.00\r\n# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\r\n\r"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/tests/Windows/testall.dsp",
    "chars": 5407,
    "preview": "# Microsoft Developer Studio Project File - Name=\"testall\" - Package Owner=<4>\r\n# Microsoft Developer Studio Generated B"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/tests/Windows/teststops.dsp",
    "chars": 5439,
    "preview": "# Microsoft Developer Studio Project File - Name=\"teststops\" - Package Owner=<4>\r\n# Microsoft Developer Studio Generated"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/tests/audioprobe.cpp",
    "chars": 3206,
    "preview": "/******************************************/\n/*\n  audioprobe.cpp\n  by Gary P. Scavone, 2001\n\n  Probe audio system and pr"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/tests/duplex.cpp",
    "chars": 3930,
    "preview": "/******************************************/\n/*\n  duplex.cpp\n  by Gary P. Scavone, 2006-2007.\n\n  This program opens a du"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/tests/playraw.cpp",
    "chars": 4110,
    "preview": "/******************************************/\n/*\n  playraw.cpp\n  by Gary P. Scavone, 2007\n\n  Play a specified raw file.  "
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/tests/playsaw.cpp",
    "chars": 5949,
    "preview": "/******************************************/\n/*\n  playsaw.cpp\n  by Gary P. Scavone, 2006\n\n  This program will output saw"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/tests/record.cpp",
    "chars": 4961,
    "preview": "/******************************************/\n/*\n  record.cpp\n  by Gary P. Scavone, 2007\n\n  This program records audio fr"
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/tests/testall.cpp",
    "chars": 6642,
    "preview": "/******************************************/\n/*\n  testall.cpp\n  by Gary P. Scavone, 2007-2008\n\n  This program will make "
  },
  {
    "path": "vendor/github.com/thestk/rtaudio/tests/teststops.cpp",
    "chars": 7911,
    "preview": "/******************************************/\r\n/*\r\n  teststop.cpp\r\n  by Gary P. Scavone, 2011\r\n\r\n  This program starts an"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/.gitattributes",
    "chars": 153,
    "preview": "# make sure that .gitignore, .travis.yml,... are not part of a\n# source-package generated via 'git archive'\n.git*      \t"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/.github/issue_template.md",
    "chars": 460,
    "preview": "The maintainers / developers of RtMidi favour pull requests over issues. We generally do not have access to all the supp"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/.gitignore",
    "chars": 111,
    "preview": "/config\n/configure\n/Makefile.in\n/aclocal.m4\n/autom4te.cache\n/configure\n/m4\n/doc/Makefile.in\n/tests/Makefile.in\n"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/.travis.yml",
    "chars": 1353,
    "preview": "language: cpp\nsudo: false  # docker VM\nmatrix:\n  include:\n  - os: linux\n    env: HOST=\"\" API=\"alsa\"\n    compiler: gcc\n  "
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/Makefile.am",
    "chars": 444,
    "preview": "SUBDIRS = . tests\nif MAKE_DOC\nSUBDIRS += doc\nendif\n\nlib_LTLIBRARIES = %D%/librtmidi.la\n%C%_librtmidi_la_LDFLAGS = -no-un"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/README.md",
    "chars": 3785,
    "preview": "# RtMidi\n\n[![Build Status](https://travis-ci.org/thestk/rtmidi.svg?branch=master)](https://travis-ci.org/thestk/rtmidi)\n"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/RtMidi.cpp",
    "chars": 96541,
    "preview": "/**********************************************************************/\n/*! \\class RtMidi\n    \\brief An abstract base c"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/RtMidi.h",
    "chars": 30714,
    "preview": "/**********************************************************************/\n/*! \\class RtMidi\n    \\brief An abstract base c"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/autogen.sh",
    "chars": 2884,
    "preview": "#!/bin/sh\n# Run this to generate all the initial makefiles, etc.\n\nsrcdir=`dirname $0`\ntest -z \"$srcdir\" && srcdir=.\n\nDIE"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/configure.ac",
    "chars": 7156,
    "preview": "# Process this file with autoconf to produce a configure script.\nAC_INIT(RtMidi, 3.0.0, gary@music.mcgill.ca, rtmidi)\nAC"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/contrib/go/rtmidi/rtmidi.go",
    "chars": 8902,
    "preview": "package rtmidi\n\n/*\n#cgo CXXFLAGS: -g\n#cgo LDFLAGS: -g\n\n#cgo linux CXXFLAGS: -D__LINUX_ALSA__\n#cgo linux LDFLAGS: -lasoun"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/contrib/go/rtmidi/rtmidi_stub.cpp",
    "chars": 94,
    "preview": "#include \"../../../RtMidi.h\"\n\n#include \"../../../RtMidi.cpp\"\n#include \"../../../rtmidi_c.cpp\"\n"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/contrib/go/rtmidi/rtmidi_stub.h",
    "chars": 31,
    "preview": "#include \"../../../rtmidi_c.h\"\n"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/contrib/go/rtmidi/rtmidi_test.go",
    "chars": 758,
    "preview": "package rtmidi\n\nimport (\n\t\"log\"\n)\n\nfunc ExampleCompiledAPI() {\n\tfor _, api := range CompiledAPI() {\n\t\tlog.Println(\"Compi"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/doc/Makefile.am",
    "chars": 682,
    "preview": "\nMAINTAINERCLEANFILES=Makefile.in \n\nCLEANFILES=doxygen-build.stamp\n\nDOX=Doxyfile\n\nEXTRA_DIST=html release.txt\n\nINSTIMAGE"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/doc/doxygen/Doxyfile.in",
    "chars": 81137,
    "preview": "# Doxyfile 1.8.3.1\n\n# This file describes the settings to be used by the documentation system\n# doxygen (www.doxygen.org"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/doc/doxygen/footer.html",
    "chars": 254,
    "preview": "<HR>\r\n\r\n<table><tr><td><img src=\"../images/mcgill.gif\" width=165></td>\r\n  <td>&copy;2003-2017 Gary P. Scavone, McGill Un"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/doc/doxygen/header.html",
    "chars": 422,
    "preview": "<HTML>\r\n<HEAD>\r\n<TITLE>The RtMidi Tutorial</TITLE>\r\n<LINK HREF=\"doxygen.css\" REL=\"stylesheet\" TYPE=\"text/css\">\r\n</HEAD>\r"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/doc/doxygen/tutorial.txt",
    "chars": 20822,
    "preview": "/*! \\mainpage The RtMidi Tutorial\r\n\r\n<CENTER>\\ref intro &nbsp;&nbsp; \\ref download &nbsp;&nbsp; \\ref start &nbsp;&nbsp; "
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/doc/release.txt",
    "chars": 6389,
    "preview": "RtMidi - a set of C++ classes that provides a common API for realtime MIDI input/output across Linux (ALSA & JACK), Maci"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/msw/readme",
    "chars": 171,
    "preview": "This directory contains a Visual Studio 2008 project, contributed by Jason Champion, to build rtmidi as a library.  The "
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/msw/rtmidilib.sln",
    "chars": 881,
    "preview": "\r\nMicrosoft Visual Studio Solution File, Format Version 10.00\r\n# Visual Studio 2008\r\nProject(\"{8BC9CEB8-8B4A-11D0-8D11-"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/msw/rtmidilib.vcproj",
    "chars": 3734,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\"?>\r\n<VisualStudioProject\r\n\tProjectType=\"Visual C++\"\r\n\tVersion=\"9.00\"\r\n\tName=\""
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/rtmidi-config.in",
    "chars": 388,
    "preview": "#! /bin/sh\nif (test \"x$#\" != \"x1\") ; then\n  echo \"Usage: $0 [--libs | --cxxflags | --cppflags]\"\n  exit;\nfi\n\nLIBRARY=\"@LI"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/rtmidi.pc.in",
    "chars": 351,
    "preview": "prefix=@prefix@\nexec_prefix=${prefix}\nlibdir=${exec_prefix}/lib\nincludedir=${prefix}/include/rtmidi\n\nName: librtmidi\nDes"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/rtmidi_c.cpp",
    "chars": 7717,
    "preview": "#include <string.h>\n#include <stdlib.h>\n#include \"rtmidi_c.h\"\n#include \"RtMidi.h\"\n\nclass CallbackProxyUserData\n{\n  publi"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/rtmidi_c.h",
    "chars": 6230,
    "preview": "\n#include <stdbool.h>\n#include <stddef.h>\n#ifndef RTMIDI_C_H\n#define RTMIDI_C_H\n\n#if defined(RTMIDI_EXPORT)\n#define RTMI"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/tests/Debug/.placeholder",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/tests/Makefile.am",
    "chars": 789,
    "preview": "\nnoinst_PROGRAMS = midiprobe midiout qmidiin cmidiin sysextest midiclock_in midiclock_out\n\nAM_CXXFLAGS = -Wall -I$(top_s"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/tests/Release/.placeholder",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/tests/RtMidi.dsw",
    "chars": 1311,
    "preview": "Microsoft Developer Studio Workspace File, Format Version 6.00\r\n# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\r\n\r"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/tests/cmidiin.cpp",
    "chars": 2865,
    "preview": "//*****************************************//\n//  cmidiin.cpp\n//  by Gary Scavone, 2003-2004.\n//\n//  Simple program to t"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/tests/cmidiin.dsp",
    "chars": 4320,
    "preview": "# Microsoft Developer Studio Project File - Name=\"cmidiin\" - Package Owner=<4>\r\n# Microsoft Developer Studio Generated B"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/tests/midiclock.cpp",
    "chars": 5550,
    "preview": "//*****************************************//\n//  midiclock.cpp\n//\n//  Simple program to test MIDI clock sync.  Run midi"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/tests/midiout.cpp",
    "chars": 3156,
    "preview": "//*****************************************//\n//  midiout.cpp\n//  by Gary Scavone, 2003-2004.\n//\n//  Simple program to t"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/tests/midiout.dsp",
    "chars": 4320,
    "preview": "# Microsoft Developer Studio Project File - Name=\"midiout\" - Package Owner=<4>\r\n# Microsoft Developer Studio Generated B"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/tests/midiprobe.cpp",
    "chars": 1919,
    "preview": "// midiprobe.cpp\n//\n// Simple program to check MIDI inputs and outputs.\n//\n// by Gary Scavone, 2003-2012.\n\n#include <ios"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/tests/midiprobe.dsp",
    "chars": 4356,
    "preview": "# Microsoft Developer Studio Project File - Name=\"midiprobe\" - Package Owner=<4>\r\n# Microsoft Developer Studio Generated"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/tests/qmidiin.cpp",
    "chars": 2362,
    "preview": "//*****************************************//\n//  qmidiin.cpp\n//  by Gary Scavone, 2003-2004.\n//\n//  Simple program to t"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/tests/qmidiin.dsp",
    "chars": 4320,
    "preview": "# Microsoft Developer Studio Project File - Name=\"qmidiin\" - Package Owner=<4>\r\n# Microsoft Developer Studio Generated B"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/tests/sysextest.cpp",
    "chars": 3879,
    "preview": "//*****************************************//\n//  sysextest.cpp\n//  by Gary Scavone, 2003-2005.\n//\n//  Simple program to"
  },
  {
    "path": "vendor/github.com/thestk/rtmidi/tests/sysextest.dsp",
    "chars": 4360,
    "preview": "# Microsoft Developer Studio Project File - Name=\"sysextest\" - Package Owner=<4>\r\n# Microsoft Developer Studio Generated"
  },
  {
    "path": "vendor/github.com/zserge/webview/.gitattributes",
    "chars": 24,
    "preview": "*.h linguist-language=c\n"
  }
]

// ... and 34 more files (download for full content)

About this extraction

This page contains the full source code of the naivesound/glitch GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 234 files (9.7 MB), approximately 2.5M tokens, and a symbol index with 1741 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!