Case Studies
Registered S3 methods overwritten by 'dbplyr':
method from
print.tbl_lazy
print.tbl_sql
── Attaching packages ───────────────────────────────── tidyverse 1.3.1 ──
✓ ggplot2 3.3.5 ✓ purrr 0.3.4
✓ tibble 3.1.3 ✓ dplyr 1.0.7
✓ tidyr 1.1.3 ✓ stringr 1.4.0
✓ readr 2.0.1 ✓ forcats 0.5.1
── Conflicts ──────────────────────────────────── tidyverse_conflicts() ──
x dplyr::filter() masks stats::filter()
x dplyr::lag() masks stats::lag()
Attaching package: ‘reshape2’
The following object is masked from ‘package:tidyr’:
smiths
New names:
* `` -> ...5
* `` -> ...9



Allograft
New names:
* `` -> ...6
* `` -> ...11



Hamstring
Registered S3 method overwritten by 'data.table':
method from
print.data.table
New names:
* `` -> ...3
* `` -> ...8
* `` -> ...13



BTB
New names:
* `` -> ...3
* `` -> ...8
* `` -> ...13



LS0tCnRpdGxlOiAiV2VkbmVzZGF5IFByZXNlbnRhdGlvbiBHcmFwaGljcyIKYXV0aG9yOiAiSWhzYW4gRS4gQnVrZXIiCm91dHB1dDoKICBodG1sX25vdGVib29rOiAKICAgIHRvYzogeWVzCiAgICBoaWdobGlnaHQ6IG1vbm9jaHJvbWUKICAgIG51bWJlcl9zZWN0aW9uczogeWVzCiAgaHRtbF9kb2N1bWVudDoKICAgIHRvYzogeWVzCiAgICBkZl9wcmludDogcGFnZWQKICBwZGZfZG9jdW1lbnQ6CiAgICB0b2M6IHllcwotLS0KCmBgYHtyfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFLCB3YXJuaW5nID0gRkFMU0UsIG1lc3NhZ2UgPSBGQUxTRSkKYGBgCgojIENhc2UgU3R1ZGllcyAKYGBge3J9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KHJlYWR4bCkKbGlicmFyeShyZXNoYXBlMikKZGF0YV9jYXNlX3N0dWRpZXMgPC0gcmVhZF9leGNlbCgiL1VzZXJzL2loc2FuYnVrZXIvRGVza3RvcC9CaW9BbGxvZ3JhZnQvRGF0YS9NUkkgRGF0YSBDbGVhbmVkLnhsc3giLAogICAgc2hlZXQgPSAiQ2FzZSBTdHVkaWVzIikKCmRhdGFfY2FzZV9zdHVkaWVzICU+JQogIHNlbGVjdCgtMSwtNSwtOSkgLT4gZGF0YV9jYXNlX3N0dWRpZXMKCmRhdGFfY2FzZV9zdHVkaWVzICU+JQogIHNlbGVjdCgxOjMpIC0+IGRhdGFfY2FzZV9zdHVkaWVzX3ZvbHVtZQoKbWVsdCh0KGNvbE1lYW5zKGRhdGFfY2FzZV9zdHVkaWVzX3ZvbHVtZSkpKSAlPiUKICBzZWxlY3QoLTEpIC0+IGRmX3ZvbHVtZQpjb2xuYW1lcyhkZl92b2x1bWUpIDwtIGMoIk1vbnRoIiwgIk1lYW4gVm9sdW1lIikKeTwtYXMubWF0cml4KGRmX3ZvbHVtZSAlPiUgc2VsZWN0KC0xKSkKCng8LWJhcnBsb3QoZGZfdm9sdW1lJGBNZWFuIFZvbHVtZWAsIAogICAgICAgIG1haW4gPSAiTWVhbiBWb2x1bWUgYXQgRWFjaCBNb250aCIsIAogICAgICAgIHlsYWIgPSAiTWVhbiBWb2x1bWUgKG1tXjMpIiwgCiAgICAgICAgbmFtZXMuYXJnID0gYygiMyBNb250aHMiLCAiNiBNb250aHMiLCAiMTIgTW9udGhzIiksIAogICAgICAgIGhvcml6ID0gRkFMU0UsIAogICAgICAgIHlsaW0gPSBjKDAsMzAwMCksIAogICAgICAgIGNvbCA9ICJsaWdodGJsdWUiKQp0ZXh0KHgseSsxMDAsbGFiZWxzPWFzLmNoYXJhY3Rlcihyb3VuZCh5LCBkaWdpdHMgPSAxKSkpCgpkYXRhX2Nhc2Vfc3R1ZGllcyAlPiUKICBzZWxlY3QoNDo2KSAtPiBkYXRhX2Nhc2Vfc3R1ZGllc19UMgptZWx0KHQoY29sTWVhbnMoZGF0YV9jYXNlX3N0dWRpZXNfVDIpKSkgJT4lCiAgc2VsZWN0KC0xKSAtPiBkZl9UMgpjb2xuYW1lcyhkZl9UMikgPC0gYygiTW9udGgiLCAiTWVhbiBUMiIpCnkgPC0gYXMubWF0cml4KGRmX1QyICU+JSBzZWxlY3QoLTEpKQp4IDwtIGJhcnBsb3QoZGZfVDIkYE1lYW4gVDJgLCAKICAgICAgICBtYWluID0gIk1lYW4gVDIgYXQgRWFjaCBNb250aCIsIAogICAgICAgIHlsYWIgPSAiTWVhbiBUMiAobXMpIiwgCiAgICAgICAgbmFtZXMuYXJnID0gYygiMyBNb250aHMiLCAiNiBNb250aHMiLCAiMTIgTW9udGhzIiksIAogICAgICAgIGhvcml6ID0gRkFMU0UsIAogICAgICAgIHlsaW0gPSBjKDAsMzUpLAogICAgICAgIGNvbCA9ICJsaWdodGJsdWUiKQp0ZXh0KHgseSsyLGxhYmVscz1hcy5jaGFyYWN0ZXIocm91bmQoeSwgZGlnaXRzID0gMSkpKQoKZGF0YV9jYXNlX3N0dWRpZXMgJT4lCiAgc2VsZWN0KDc6OSkgLT4gZGF0YV9jYXNlX3N0dWRpZXNfVDJfc3RhcgptZWx0KHQoY29sTWVhbnMoZGF0YV9jYXNlX3N0dWRpZXNfVDJfc3RhcikpKSAlPiUKICBzZWxlY3QoLTEpIC0+IGRmX1QyX3N0YXIKY29sbmFtZXMoZGZfVDJfc3RhcikgPC0gYygiTW9udGgiLCAiTWVhbiBUMioiKQp5IDwtIGFzLm1hdHJpeChkZl9UMl9zdGFyICU+JSBzZWxlY3QoLTEpKQp4IDwtIGJhcnBsb3QoZGZfVDJfc3RhciRgTWVhbiBUMipgLCAKICAgICAgICBtYWluID0gIk1lYW4gVDIqIGF0IEVhY2ggTW9udGgiLCAKICAgICAgICB5bGFiID0gIk1lYW4gVDIqIChtcykiLCAKICAgICAgICBuYW1lcy5hcmcgPSBjKCIzIE1vbnRocyIsICI2IE1vbnRocyIsICIxMiBNb250aHMiKSwgCiAgICAgICAgaG9yaXogPSBGQUxTRSwgCiAgICAgICAgeWxpbSA9IGMoMCwxMiksCiAgICAgICAgY29sID0gImxpZ2h0Ymx1ZSIpCnRleHQoeCx5KzAuNSxsYWJlbHM9YXMuY2hhcmFjdGVyKHJvdW5kKHksIGRpZ2l0cyA9IDEpKSkKYGBgCiMgQWxsb2dyYWZ0IApgYGB7cn0KbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkocmVhZHhsKQpkYXRhX2FsbG9ncmFmdCA8LSByZWFkX2V4Y2VsKCIvVXNlcnMvaWhzYW5idWtlci9EZXNrdG9wL0Jpb0FsbG9ncmFmdC9EYXRhL01SSSBEYXRhIENsZWFuZWQueGxzeCIsIAogICAgc2hlZXQgPSAiQWxsb2dyYWZ0IikKCmRhdGFfYWxsb2dyYWZ0ICU+JQogIHNlbGVjdCgtMSwtNiwtMTEpIC0+IGRhdGFfYWxsb2dyYWZ0CgoKZGF0YV9hbGxvZ3JhZnQgJT4lCiAgc2VsZWN0KDE6NCkgLT4gZGF0YV9hbGxvZ3JhZnRfdm9sdW1lCm1lbHQodChjb2xNZWFucyhkYXRhX2FsbG9ncmFmdF92b2x1bWUpKSkgJT4lCiAgc2VsZWN0KC0xKSAtPiBkZl92b2x1bWUKCmNvbG5hbWVzKGRmX3ZvbHVtZSkgPC0gYygiTW9udGgiLCAiTWVhbiBWb2x1bWUiKQp5IDwtIGFzLm1hdHJpeChkZl92b2x1bWUgJT4lIHNlbGVjdCgtMSkpCnggPC0gYmFycGxvdChkZl92b2x1bWUkYE1lYW4gVm9sdW1lYCwgCiAgICAgICAgbWFpbiA9ICJNZWFuIFZvbHVtZSBhdCBFYWNoIE1vbnRoIiwgCiAgICAgICAgeWxhYiA9ICJNZWFuIFZvbHVtZSAobW1eMykiLCAKICAgICAgICBuYW1lcy5hcmcgPSBjKCIzIE1vbnRocyIsICI2IE1vbnRocyIsICI5IE1vbnRocyIsICIxMiBNb250aHMiKSwgCiAgICAgICAgaG9yaXogPSBGQUxTRSwgCiAgICAgICAgeHBkID0gRiwKICAgICAgICB5YXhzID0gImkiLAogICAgICAgIHlsaW0gPSBjKDE1MDAsMzUwMCksCiAgICAgICAgY29sID0gImxpZ2h0Ymx1ZSIpCnRleHQoeCx5KzEwMCxsYWJlbHM9YXMuY2hhcmFjdGVyKHJvdW5kKHksIGRpZ2l0cyA9IDEpKSkKCmRhdGFfYWxsb2dyYWZ0ICU+JQogIHNlbGVjdCg1OjgpIC0+IGRhdGFfYWxsb2dyYWZ0X1QyCm1lbHQodChjb2xNZWFucyhkYXRhX2FsbG9ncmFmdF9UMikpKSAlPiUKICBzZWxlY3QoLTEpIC0+IGRmX1QyCgpjb2xuYW1lcyhkZl9UMikgPC0gYygiTW9udGgiLCAiTWVhbiBUMiIpCnkgPC0gYXMubWF0cml4KGRmX1QyICU+JSBzZWxlY3QoLTEpKQp4IDwtIGJhcnBsb3QoZGZfVDIkYE1lYW4gVDJgLCAKICAgICAgICBtYWluID0gIk1lYW4gVDIgYXQgRWFjaCBNb250aCIsIAogICAgICAgIHlsYWIgPSAiTWVhbiBUMiAobXMpIiwgCiAgICAgICAgbmFtZXMuYXJnID0gYygiMyBNb250aHMiLCAiNiBNb250aHMiLCAiOSBNb250aHMiLCAiMTIgTW9udGhzIiksIAogICAgICAgIGhvcml6ID0gRkFMU0UsIAogICAgICAgIHlsaW0gPSBjKDMwLDQwKSwKICAgICAgICB4cGQgPSBGQUxTRSwgIyBpZiB5b3UgZG8gbm90IHdhbnQgYmFycGxvdCB0byBzcGlsbCwgc2V0IHhwZCA9IEZBTFNFCiAgICAgICAgY29sID0gImxpZ2h0Ymx1ZSIpCnRleHQoeCx5KzAuNSxsYWJlbHM9YXMuY2hhcmFjdGVyKHJvdW5kKHksIGRpZ2l0cyA9IDEpKSkKCmRhdGFfYWxsb2dyYWZ0ICU+JQogIHNlbGVjdCg5OjEyKSAtPiBkYXRhX2FsbG9ncmFmdF9UMl9zdGFyCm1lbHQodChjb2xNZWFucyhkYXRhX2FsbG9ncmFmdF9UMl9zdGFyKSkpICU+JQogIHNlbGVjdCgtMSkgLT4gZGZfVDJfc3RhcgoKY29sbmFtZXMoZGZfVDJfc3RhcikgPC0gYygiTW9udGgiLCAiTWVhbiBUMioiKQp5IDwtIGFzLm1hdHJpeChkZl9UMl9zdGFyICU+JSBzZWxlY3QoLTEpKQp4IDwtIGJhcnBsb3QoZGZfVDJfc3RhciRgTWVhbiBUMipgLCAKICAgICAgICBtYWluID0gIk1lYW4gVDIqIGF0IEVhY2ggTW9udGgiLCAKICAgICAgICB5bGFiID0gIk1lYW4gVDIqIChtcykiLCAKICAgICAgICBuYW1lcy5hcmcgPSBjKCIzIE1vbnRocyIsICI2IE1vbnRocyIsICI5IE1vbnRocyIsICIxMiBNb250aHMiKSwgCiAgICAgICAgaG9yaXogPSBGQUxTRSwgCiAgICAgICAgeWxpbSA9IGMoNSwxMCksCiAgICAgICAgeWF4cyA9ICJpIiwKICAgICAgICB4cGQgPSBGLAogICAgICAgIGNvbCA9ICJsaWdodGJsdWUiKQp0ZXh0KHgseSswLjI3LGxhYmVscz1hcy5jaGFyYWN0ZXIocm91bmQoeSwgZGlnaXRzID0gMSkpKQpgYGAKIyBIYW1zdHJpbmcKYGBge3J9CmxpYnJhcnkocmxpc3QpCmxpYnJhcnkocmVhZHhsKQpsaWJyYXJ5KHJlYWRyKQpsaWJyYXJ5KHRpZHl2ZXJzZSkKZGF0YV9oYW1zdHJpbmcgPC0gcmVhZF9leGNlbCgiL1VzZXJzL2loc2FuYnVrZXIvRGVza3RvcC9CaW9BbGxvZ3JhZnQvRGF0YS9NUkkgRGF0YSBDbGVhbmVkLnhsc3giLCAKICAgIHNoZWV0ID0gIkhhbXN0cmluZyIpCgpkYXRhX2hhbXN0cmluZyAlPiUKICBzZWxlY3QoLTEsLTMsLTgsLTEzKSAtPiBkYXRhX2hhbXN0cmluZyAKCiMgVm9sdW1lIERhdGEgCmRhdGFfaGFtc3RyaW5nICU+JQogIHNlbGVjdCgxLDI6NSkgJT4lCiAgZ3JvdXBfYnkoZGF0YV9oYW1zdHJpbmckR3JvdXAsIC5hZGQgPSBUUlVFKSAlPiUKICBncm91cF9zcGxpdCgpIC0+IHgKeFtbMV1dICU+JQogIHNlbGVjdCgtNikgLT4gZGZfdm9sdW1lX2NvbnRyb2wKY29udHJvbCA8LSBhcy5kYXRhLmZyYW1lKGNvbE1lYW5zKGRmX3ZvbHVtZV9jb250cm9sICU+JSBzZWxlY3QoLTEpKSkKY29udHJvbCRHcm91cCA8LSAiQ29udHJvbCIKY29udHJvbCRNb250aCA8LSByb3cubmFtZXMoY29udHJvbCkKcm93Lm5hbWVzKGNvbnRyb2wpIDwtIE5VTEwKY29sbmFtZXMoY29udHJvbCkgPC0gYygiTWVhbiBWb2x1bWUiLCAiR3JvdXAiLCAiTW9udGgiKQoKeFtbMl1dICU+JQogIHNlbGVjdCgtNikgLT4gZGZfdm9sdW1lX2ludGVydmVudGlvbgppbnRlcnZlbnRpb24gPC0gYXMuZGF0YS5mcmFtZShjb2xNZWFucyhkZl92b2x1bWVfaW50ZXJ2ZW50aW9uICU+JSBzZWxlY3QoLTEpKSkKaW50ZXJ2ZW50aW9uJEdyb3VwIDwtICJJbnRlcnZlbnRpb24iCmludGVydmVudGlvbiRNb250aCA8LSByb3cubmFtZXMoaW50ZXJ2ZW50aW9uKQpyb3cubmFtZXMoaW50ZXJ2ZW50aW9uKSA8LSBOVUxMCmNvbG5hbWVzKGludGVydmVudGlvbikgPC0gYygiTWVhbiBWb2x1bWUiLCAiR3JvdXAiLCAiTW9udGgiKQoKZGZfdm9sdW1lIDwtIHJiaW5kKGludGVydmVudGlvbixjb250cm9sKQpkZl92b2x1bWUgJT4lCiAgZ3JvdXBfYnkoTW9udGgpICU+JQogIGdyb3VwX3NwbGl0KCkgLT4geQoKeVtbMl1dICU+JSBzZWxlY3QoLTMsLTIpIC0+IHRocmVlX21vbnRocwp5W1szXV0gJT4lIHNlbGVjdCgtMywtMikgLT4gc2l4X21vbnRocwp5W1s0XV0gJT4lIHNlbGVjdCgtMywtMikgLT4gbmluZV9tb250aHMKeVtbMV1dICU+JSBzZWxlY3QoLTMsLTIpIC0+IHR3ZWx2ZV9tb250aHMKCnogPC0gY2JpbmQodGhyZWVfbW9udGhzLCBzaXhfbW9udGhzLCBuaW5lX21vbnRocywgdHdlbHZlX21vbnRocykKeiRHcm91cCA8LSBjKCJJbnRlcnZlbnRpb24iLCAiQ29udHJvbCIpCmNvbG5hbWVzKHopIDwtIGMoIjMgTW9udGhzIiwgIjYgTW9udGhzIiwgIjkgTW9udGhzIiwgIjEyIE1vbnRocyIsICJHcm91cCIpCgpzIDwtIGFzLm1hdHJpeChkYXRhLm1hdHJpeCh6KSkKeSA8LSBzW2MoLTksLTEwKV0KeCA8LSBiYXJwbG90KHMsCiAgICAgICAgYmVzaWRlID0gVCwKICAgICAgICB4bGltID0gYygxLDEyKSwKICAgICAgICB4cGQgPSBGLAogICAgICAgIHlsaW0gPSBjKDIwMDAsNDAwMCksCiAgICAgICAgbWFpbiA9ICJNZWFuIFZvbHVtZSBhdCBFYWNoIE1vbnRoIiwgCiAgICAgICAgeWxhYiA9ICJNZWFuIFZvbHVtZSAobW1eMykiLCAKICAgICAgICBjb2wgPSBjKCJsaWdodGJsdWUiLCAicGluayIpKQpsZWdlbmQoInRvcHJpZ2h0IixsZWdlbmQgPSBjKCJJbnRlcnZlbnRpb24iLCJDb250cm9sIiksIGZpbGwgPSBjKCJsaWdodGJsdWUiLCJwaW5rIiksIGhvcml6ID0gVCwgY2V4ID0gMC43KQp0ZXh0KHgseSs4NSxsYWJlbHM9YXMuY2hhcmFjdGVyKHJvdW5kKHksIGRpZ2l0cyA9IDEpKSwgY2V4ID0gMC44KQoKIyBUMiBEYXRhIApkYXRhX2hhbXN0cmluZyAlPiUgCiAgc2VsZWN0KDEsNjo5KSAlPiUKICBncm91cF9ieShkYXRhX2hhbXN0cmluZyRHcm91cCwgLmFkZCA9IFRSVUUpICU+JQogIGdyb3VwX3NwbGl0KCkgLT4geAp4W1sxXV0gJT4lCiAgc2VsZWN0KC02KSAtPiBkZl9UMl9jb250cm9sCmNvbnRyb2wgPC0gYXMuZGF0YS5mcmFtZShjb2xNZWFucyhkZl9UMl9jb250cm9sICU+JSBzZWxlY3QoLTEpKSkKY29udHJvbCRHcm91cCA8LSAiQ29udHJvbCIKY29udHJvbCRNb250aCA8LSByb3cubmFtZXMoY29udHJvbCkKcm93Lm5hbWVzKGNvbnRyb2wpIDwtIE5VTEwKY29sbmFtZXMoY29udHJvbCkgPC0gYygiTWVhbiBUMiIsICJHcm91cCIsICJNb250aCIpCgp4W1syXV0gJT4lCiAgc2VsZWN0KC02KSAtPiBkZl9UMl9pbnRlcnZlbnRpb24KaW50ZXJ2ZW50aW9uIDwtIGFzLmRhdGEuZnJhbWUoY29sTWVhbnMoZGZfVDJfaW50ZXJ2ZW50aW9uICU+JSBzZWxlY3QoLTEpKSkKaW50ZXJ2ZW50aW9uJEdyb3VwIDwtICJJbnRlcnZlbnRpb24iCmludGVydmVudGlvbiRNb250aCA8LSByb3cubmFtZXMoaW50ZXJ2ZW50aW9uKQpyb3cubmFtZXMoaW50ZXJ2ZW50aW9uKSA8LSBOVUxMCmNvbG5hbWVzKGludGVydmVudGlvbikgPC0gYygiTWVhbiBUMiIsICJHcm91cCIsICJNb250aCIpCgpkZl92b2x1bWUgPC0gcmJpbmQoaW50ZXJ2ZW50aW9uLGNvbnRyb2wpCmRmX3ZvbHVtZSAlPiUKICBncm91cF9ieShNb250aCkgJT4lCiAgZ3JvdXBfc3BsaXQoKSAtPiB5Cgp5W1syXV0gJT4lIHNlbGVjdCgtMywtMikgLT4gdGhyZWVfbW9udGhzCnlbWzNdXSAlPiUgc2VsZWN0KC0zLC0yKSAtPiBzaXhfbW9udGhzCnlbWzRdXSAlPiUgc2VsZWN0KC0zLC0yKSAtPiBuaW5lX21vbnRocwp5W1sxXV0gJT4lIHNlbGVjdCgtMywtMikgLT4gdHdlbHZlX21vbnRocwoKeiA8LSBjYmluZCh0aHJlZV9tb250aHMsIHNpeF9tb250aHMsIG5pbmVfbW9udGhzLCB0d2VsdmVfbW9udGhzKQp6JEdyb3VwIDwtIGMoIkludGVydmVudGlvbiIsICJDb250cm9sIikKY29sbmFtZXMoeikgPC0gYygiMyBNb250aHMiLCAiNiBNb250aHMiLCAiOSBNb250aHMiLCAiMTIgTW9udGhzIiwgIkdyb3VwIikKCnMgPC1hcy5tYXRyaXgoZGF0YS5tYXRyaXgoeikpCnkgPC0gc1tjKC05LC0xMCldCnggPC0gYmFycGxvdChzLAogICAgICAgIGJlc2lkZSA9IFQsCiAgICAgICAgeGxpbSA9IGMoMSwxMiksCiAgICAgICAgeWxpbSA9IGMoMjAsNDUpLAogICAgICAgIHhwZCA9IEYsCiAgICAgICAgbWFpbiA9ICJNZWFuIFQyIGF0IEVhY2ggTW9udGgiLCAKICAgICAgICB5bGFiID0gIk1lYW4gVDIgKG1zKSIsIAogICAgICAgIGNvbCA9IGMoImxpZ2h0Ymx1ZSIsICJwaW5rIikpCmxlZ2VuZCgidG9wcmlnaHQiLGxlZ2VuZCA9IGMoIkludGVydmVudGlvbiIsIkNvbnRyb2wiKSwgZmlsbCA9IGMoImxpZ2h0Ymx1ZSIsInBpbmsiKSwgaG9yaXogPSBULCBjZXggPSAwLjcpCnRleHQoeCx5KzEsbGFiZWxzPWFzLmNoYXJhY3Rlcihyb3VuZCh5LCBkaWdpdHMgPSAxKSksIGNleCA9IDAuOCkKCiMgVDIqIERhdGEKZGF0YV9oYW1zdHJpbmcgJT4lCiAgc2VsZWN0KDEsMTA6MTMpICU+JQogIGdyb3VwX2J5KGRhdGFfaGFtc3RyaW5nJEdyb3VwLCAuYWRkID0gVFJVRSkgJT4lCiAgZ3JvdXBfc3BsaXQoKSAtPiB4CnhbWzFdXSAlPiUKICBzZWxlY3QoLTYpIC0+IGRmX1QyX3N0YXJfY29udHJvbApjb250cm9sIDwtIGFzLmRhdGEuZnJhbWUoY29sTWVhbnMoZGZfVDJfc3Rhcl9jb250cm9sICU+JSBzZWxlY3QoLTEpKSkKY29udHJvbCRHcm91cCA8LSAiQ29udHJvbCIKY29udHJvbCRNb250aCA8LSByb3cubmFtZXMoY29udHJvbCkKcm93Lm5hbWVzKGNvbnRyb2wpIDwtIE5VTEwKY29sbmFtZXMoY29udHJvbCkgPC0gYygiTWVhbiBUMl9zdGFyIiwgIkdyb3VwIiwgIk1vbnRoIikKCnhbWzJdXSAlPiUKICBzZWxlY3QoLTYpIC0+IGRmX1QyX3N0YXJfaW50ZXJ2ZW50aW9uCmludGVydmVudGlvbiA8LSBhcy5kYXRhLmZyYW1lKGNvbE1lYW5zKGRmX1QyX3N0YXJfaW50ZXJ2ZW50aW9uICU+JSBzZWxlY3QoLTEpKSkKaW50ZXJ2ZW50aW9uJEdyb3VwIDwtICJJbnRlcnZlbnRpb24iCmludGVydmVudGlvbiRNb250aCA8LSByb3cubmFtZXMoaW50ZXJ2ZW50aW9uKQpyb3cubmFtZXMoaW50ZXJ2ZW50aW9uKSA8LSBOVUxMCmNvbG5hbWVzKGludGVydmVudGlvbikgPC0gYygiTWVhbiBUMl9zdGFyIiwgIkdyb3VwIiwgIk1vbnRoIikKCmRmX3ZvbHVtZSA8LSByYmluZChpbnRlcnZlbnRpb24sY29udHJvbCkKZGZfdm9sdW1lICU+JQogIGdyb3VwX2J5KE1vbnRoKSAlPiUKICBncm91cF9zcGxpdCgpIC0+IHkKCnlbWzJdXSAlPiUgc2VsZWN0KC0zLC0yKSAtPiB0aHJlZV9tb250aHMKeVtbM11dICU+JSBzZWxlY3QoLTMsLTIpIC0+IHNpeF9tb250aHMKeVtbNF1dICU+JSBzZWxlY3QoLTMsLTIpIC0+IG5pbmVfbW9udGhzCnlbWzFdXSAlPiUgc2VsZWN0KC0zLC0yKSAtPiB0d2VsdmVfbW9udGhzCgp6IDwtIGNiaW5kKHRocmVlX21vbnRocywgc2l4X21vbnRocywgbmluZV9tb250aHMsIHR3ZWx2ZV9tb250aHMpCnokR3JvdXAgPC0gYygiSW50ZXJ2ZW50aW9uIiwgIkNvbnRyb2wiKQpjb2xuYW1lcyh6KSA8LSBjKCIzIE1vbnRocyIsICI2IE1vbnRocyIsICI5IE1vbnRocyIsICIxMiBNb250aHMiLCAiR3JvdXAiKQoKczwtYXMubWF0cml4KGRhdGEubWF0cml4KHopKQp5IDwtc1tjKC05LC0xMCldCnggPC0gYmFycGxvdChzLAogICAgICAgIGJlc2lkZSA9IFQsCiAgICAgICAgeGxpbSA9IGMoMSwxMiksCiAgICAgICAgeWxpbSA9IGMoNiwxNSksCiAgICAgICAgeHBkID0gRiwKICAgICAgICBtYWluID0gIk1lYW4gVDIqIGF0IEVhY2ggTW9udGgiLCAKICAgICAgICB5bGFiID0gIk1lYW4gVDIqIChtcykiLCAKICAgICAgICBjb2wgPSBjKCJsaWdodGJsdWUiLCAicGluayIpKQpsZWdlbmQoInRvcHJpZ2h0IixsZWdlbmQgPSBjKCJJbnRlcnZlbnRpb24iLCJDb250cm9sIiksIGZpbGwgPSBjKCJsaWdodGJsdWUiLCJwaW5rIiksIGhvcml6ID0gVCwgY2V4ID0gMC43KQp0ZXh0KHgseSswLjUsbGFiZWxzPWFzLmNoYXJhY3Rlcihyb3VuZCh5LCBkaWdpdHMgPSAxKSksIGNleCA9IDAuOCkKYGBgCiMgQlRCIApgYGB7cn0KbGlicmFyeShyZWFkeGwpCmxpYnJhcnkodGlkeXZlcnNlKQpkYXRhX0JUQiA8LSByZWFkX2V4Y2VsKCIvVXNlcnMvaWhzYW5idWtlci9EZXNrdG9wL0Jpb0FsbG9ncmFmdC9EYXRhL01SSSBEYXRhIENsZWFuZWQueGxzeCIsIAogICAgc2hlZXQgPSAiQlRCIikKCmRhdGFfQlRCICU+JQogIHNlbGVjdCgtMSwtMywtOCwtMTMpIC0+IGRhdGFfQlRCCgojIFZvbHVtZSBEYXRhCmRhdGFfQlRCICU+JQogIHNlbGVjdCgxLDI6NSkgJT4lCiAgZ3JvdXBfYnkoZGF0YV9CVEIkR3JvdXAsIC5hZGQgPSBUUlVFKSAlPiUKICBncm91cF9zcGxpdCgpIC0+IHgKeFtbMV1dICU+JQogIHNlbGVjdCgtNikgLT4gZGZfdm9sdW1lX2NvbnRyb2wKY29udHJvbCA8LSBhcy5kYXRhLmZyYW1lKGNvbE1lYW5zKGRmX3ZvbHVtZV9jb250cm9sICU+JSBzZWxlY3QoLTEpKSkKY29udHJvbCRHcm91cCA8LSAiQ29udHJvbCIKY29udHJvbCRNb250aCA8LSByb3cubmFtZXMoY29udHJvbCkKcm93Lm5hbWVzKGNvbnRyb2wpIDwtIE5VTEwKY29sbmFtZXMoY29udHJvbCkgPC0gYygiTWVhbiB2b2x1bWUiLCAiR3JvdXAiLCAiTW9udGgiKQoKeFtbMl1dICU+JQogIHNlbGVjdCgtNikgLT4gZGZfdm9sdW1lX2ludGVydmVudGlvbgppbnRlcnZlbnRpb24gPC0gYXMuZGF0YS5mcmFtZShjb2xNZWFucyhkZl92b2x1bWVfaW50ZXJ2ZW50aW9uICU+JSBzZWxlY3QoLTEpKSkKaW50ZXJ2ZW50aW9uJEdyb3VwIDwtICJJbnRlcnZlbnRpb24iCmludGVydmVudGlvbiRNb250aCA8LSByb3cubmFtZXMoaW50ZXJ2ZW50aW9uKQpyb3cubmFtZXMoaW50ZXJ2ZW50aW9uKSA8LSBOVUxMCmNvbG5hbWVzKGludGVydmVudGlvbikgPC0gYygiTWVhbiB2b2x1bWUiLCAiR3JvdXAiLCAiTW9udGgiKQoKZGZfdm9sdW1lIDwtIHJiaW5kKGludGVydmVudGlvbixjb250cm9sKQpkZl92b2x1bWUgJT4lCiAgZ3JvdXBfYnkoTW9udGgpICU+JQogIGdyb3VwX3NwbGl0KCkgLT4geQoKeVtbMl1dICU+JSBzZWxlY3QoLTMsLTIpIC0+IHRocmVlX21vbnRocwp5W1szXV0gJT4lIHNlbGVjdCgtMywtMikgLT4gc2l4X21vbnRocwp5W1s0XV0gJT4lIHNlbGVjdCgtMywtMikgLT4gbmluZV9tb250aHMKeVtbMV1dICU+JSBzZWxlY3QoLTMsLTIpIC0+IHR3ZWx2ZV9tb250aHMKCnogPC0gY2JpbmQodGhyZWVfbW9udGhzLCBzaXhfbW9udGhzLCBuaW5lX21vbnRocywgdHdlbHZlX21vbnRocykKeiRHcm91cCA8LSBjKCJJbnRlcnZlbnRpb24iLCAiQ29udHJvbCIpCmNvbG5hbWVzKHopIDwtIGMoIjMgTW9udGhzIiwgIjYgTW9udGhzIiwgIjkgTW9udGhzIiwgIjEyIE1vbnRocyIsICJHcm91cCIpCgpzIDwtYXMubWF0cml4KGRhdGEubWF0cml4KHopKQp5IDwtIHNbYygtOSwtMTApXQp4IDwtIGJhcnBsb3QocywKICAgICAgICBiZXNpZGUgPSBULAogICAgICAgIHhsaW0gPSBjKDEsMTIpLAogICAgICAgIHlsaW0gPSBjKDE1MDAsMzUwMCksCiAgICAgICAgeWF4cyA9ICJpIiwKICAgICAgICB4cGQgPSBGLAogICAgICAgIG1haW4gPSAiTWVhbiBWb2x1bWUgYXQgRWFjaCBNb250aCIsIAogICAgICAgIHlsYWIgPSAiTWVhbiBWb2x1bWUgKG1tXjMpIiwgCiAgICAgICAgY29sID0gYygibGlnaHRibHVlIiwgInBpbmsiKSkKbGVnZW5kKCJ0b3ByaWdodCIsbGVnZW5kID0gYygiSW50ZXJ2ZW50aW9uIiwiQ29udHJvbCIpLCBmaWxsID0gYygibGlnaHRibHVlIiwicGluayIpLCBob3JpeiA9IFQsIGNleCA9IDAuNykKdGV4dCh4LHkrODUsbGFiZWxzPWFzLmNoYXJhY3Rlcihyb3VuZCh5LCBkaWdpdHMgPSAxKSksIGNleCA9IDAuOCkKCiMgVDIgRGF0YQpkYXRhX0JUQiAlPiUKICBzZWxlY3QoMSw2OjkpICAlPiUKICBncm91cF9ieShkYXRhX0JUQiRHcm91cCwgLmFkZCA9IFRSVUUpICU+JQogIGdyb3VwX3NwbGl0KCkgLT4geAp4W1sxXV0gJT4lCiAgc2VsZWN0KC02KSAtPiBkZl9UMl9jb250cm9sCmNvbnRyb2wgPC0gYXMuZGF0YS5mcmFtZShjb2xNZWFucyhkZl9UMl9jb250cm9sICU+JSBzZWxlY3QoLTEpKSkKY29udHJvbCRHcm91cCA8LSAiQ29udHJvbCIKY29udHJvbCRNb250aCA8LSByb3cubmFtZXMoY29udHJvbCkKcm93Lm5hbWVzKGNvbnRyb2wpIDwtIE5VTEwKY29sbmFtZXMoY29udHJvbCkgPC0gYygiTWVhbiBUMiIsICJHcm91cCIsICJNb250aCIpCgp4W1syXV0gJT4lCiAgc2VsZWN0KC02KSAtPiBkZl9UMl9pbnRlcnZlbnRpb24KaW50ZXJ2ZW50aW9uIDwtIGFzLmRhdGEuZnJhbWUoY29sTWVhbnMoZGZfVDJfaW50ZXJ2ZW50aW9uICU+JSBzZWxlY3QoLTEpKSkKaW50ZXJ2ZW50aW9uJEdyb3VwIDwtICJJbnRlcnZlbnRpb24iCmludGVydmVudGlvbiRNb250aCA8LSByb3cubmFtZXMoaW50ZXJ2ZW50aW9uKQpyb3cubmFtZXMoaW50ZXJ2ZW50aW9uKSA8LSBOVUxMCmNvbG5hbWVzKGludGVydmVudGlvbikgPC0gYygiTWVhbiBUMiIsICJHcm91cCIsICJNb250aCIpCgpkZl9UMiA8LSByYmluZChpbnRlcnZlbnRpb24sY29udHJvbCkKZGZfVDIgJT4lCiAgZ3JvdXBfYnkoTW9udGgpICU+JQogIGdyb3VwX3NwbGl0KCkgLT4geQoKeVtbMl1dICU+JSBzZWxlY3QoLTMsLTIpIC0+IHRocmVlX21vbnRocwp5W1szXV0gJT4lIHNlbGVjdCgtMywtMikgLT4gc2l4X21vbnRocwp5W1s0XV0gJT4lIHNlbGVjdCgtMywtMikgLT4gbmluZV9tb250aHMKeVtbMV1dICU+JSBzZWxlY3QoLTMsLTIpIC0+IHR3ZWx2ZV9tb250aHMKCnogPC0gY2JpbmQodGhyZWVfbW9udGhzLCBzaXhfbW9udGhzLCBuaW5lX21vbnRocywgdHdlbHZlX21vbnRocykKeiRHcm91cCA8LSBjKCJJbnRlcnZlbnRpb24iLCAiQ29udHJvbCIpCmNvbG5hbWVzKHopIDwtIGMoIjMgTW9udGhzIiwgIjYgTW9udGhzIiwgIjkgTW9udGhzIiwgIjEyIE1vbnRocyIsICJHcm91cCIpCgpzPC1hcy5tYXRyaXgoZGF0YS5tYXRyaXgoeikpCnkgPC0gc1tjKC05LC0xMCldCng8LWJhcnBsb3QocywKICAgICAgICBiZXNpZGUgPSBULAogICAgICAgIHhsaW0gPSBjKDEsMTIpLAogICAgICAgIHlsaW0gPSBjKDIwLDQ1KSwKICAgICAgICB5YXhzID0gImkiLAogICAgICAgIHhwZCA9IEYsCiAgICAgICAgbWFpbiA9ICJNZWFuIFQyIGF0IEVhY2ggTW9udGgiLCAKICAgICAgICB5bGFiID0gIk1lYW4gVDIgKG1zKSIsIAogICAgICAgIGNvbCA9IGMoImxpZ2h0Ymx1ZSIsICJwaW5rIikpCmxlZ2VuZCgidG9wcmlnaHQiLGxlZ2VuZCA9IGMoIkludGVydmVudGlvbiIsIkNvbnRyb2wiKSwgZmlsbCA9IGMoImxpZ2h0Ymx1ZSIsInBpbmsiKSwgaG9yaXogPSBULCBjZXggPSAwLjcpCnRleHQoeCx5KzEsbGFiZWxzPWFzLmNoYXJhY3Rlcihyb3VuZCh5LCBkaWdpdHMgPSAxKSksIGNleCA9IDAuOCkKCiMgVDIqIERhdGEgCmRhdGFfQlRCICU+JQogIHNlbGVjdCgxLDEwOjEzKSAlPiUKICBncm91cF9ieShkYXRhX0JUQiRHcm91cCwgLmFkZCA9IFRSVUUpICU+JQogIGdyb3VwX3NwbGl0KCkgLT4geAp4W1sxXV0gJT4lCiAgc2VsZWN0KC02KSAtPiBkZl9UMl9zdGFyX2NvbnRyb2wKY29udHJvbCA8LSBhcy5kYXRhLmZyYW1lKGNvbE1lYW5zKGRmX1QyX3N0YXJfY29udHJvbCAlPiUgc2VsZWN0KC0xKSkpCmNvbnRyb2wkR3JvdXAgPC0gIkNvbnRyb2wiCmNvbnRyb2wkTW9udGggPC0gcm93Lm5hbWVzKGNvbnRyb2wpCnJvdy5uYW1lcyhjb250cm9sKSA8LSBOVUxMCmNvbG5hbWVzKGNvbnRyb2wpIDwtIGMoIk1lYW4gVDJfc3RhciIsICJHcm91cCIsICJNb250aCIpCgp4W1syXV0gJT4lCiAgc2VsZWN0KC02KSAtPiBkZl9UMl9zdGFyX2ludGVydmVudGlvbgppbnRlcnZlbnRpb24gPC0gYXMuZGF0YS5mcmFtZShjb2xNZWFucyhkZl9UMl9zdGFyX2ludGVydmVudGlvbiAlPiUgc2VsZWN0KC0xKSkpCmludGVydmVudGlvbiRHcm91cCA8LSAiSW50ZXJ2ZW50aW9uIgppbnRlcnZlbnRpb24kTW9udGggPC0gcm93Lm5hbWVzKGludGVydmVudGlvbikKcm93Lm5hbWVzKGludGVydmVudGlvbikgPC0gTlVMTApjb2xuYW1lcyhpbnRlcnZlbnRpb24pIDwtIGMoIk1lYW4gVDJfc3RhciIsICJHcm91cCIsICJNb250aCIpCgpkZl9UMl9zdGFyIDwtIHJiaW5kKGludGVydmVudGlvbixjb250cm9sKQpkZl9UMl9zdGFyICU+JQogIGdyb3VwX2J5KE1vbnRoKSAlPiUKICBncm91cF9zcGxpdCgpIC0+IHkKCnlbWzJdXSAlPiUgc2VsZWN0KC0zLC0yKSAtPiB0aHJlZV9tb250aHMKeVtbM11dICU+JSBzZWxlY3QoLTMsLTIpIC0+IHNpeF9tb250aHMKeVtbNF1dICU+JSBzZWxlY3QoLTMsLTIpIC0+IG5pbmVfbW9udGhzCnlbWzFdXSAlPiUgc2VsZWN0KC0zLC0yKSAtPiB0d2VsdmVfbW9udGhzCgp6IDwtIGNiaW5kKHRocmVlX21vbnRocywgc2l4X21vbnRocywgbmluZV9tb250aHMsIHR3ZWx2ZV9tb250aHMpCnokR3JvdXAgPC0gYygiSW50ZXJ2ZW50aW9uIiwgIkNvbnRyb2wiKQpjb2xuYW1lcyh6KSA8LSBjKCIzIE1vbnRocyIsICI2IE1vbnRocyIsICI5IE1vbnRocyIsICIxMiBNb250aHMiLCAiR3JvdXAiKQoKczwtYXMubWF0cml4KGRhdGEubWF0cml4KHopKQp5IDwtIHNbYygtOSwtMTApXQp4IDwtIGJhcnBsb3QocywKICAgICAgICBiZXNpZGUgPSBULAogICAgICAgIHhsaW0gPSBjKDEsMTIpLAogICAgICAgIHlsaW0gPSBjKDAsMjApLAogICAgICAgIHlheHMgPSAiaSIsCiAgICAgICAgeHBkID0gRiwKICAgICAgICBtYWluID0gIk1lYW4gVDIqIGF0IEVhY2ggTW9udGgiLCAKICAgICAgICB5bGFiID0gIk1lYW4gVDIqIChtcykiLCAKICAgICAgICBjb2wgPSBjKCJsaWdodGJsdWUiLCAicGluayIpKQpsZWdlbmQoInRvcHJpZ2h0IixsZWdlbmQgPSBjKCJJbnRlcnZlbnRpb24iLCJDb250cm9sIiksIGZpbGwgPSBjKCJsaWdodGJsdWUiLCJwaW5rIiksIGhvcml6ID0gVCwgY2V4ID0gMC43KQp0ZXh0KHgseSsxLGxhYmVscz1hcy5jaGFyYWN0ZXIocm91bmQoeSwgZGlnaXRzID0gMSkpLCBjZXggPSAwLjgpCmBgYA==