<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>203127</bug_id>
          
          <creation_ts>2019-10-17 16:54:50 -0700</creation_ts>
          <short_desc>ctx.font = &quot;&quot; asserts in CSS parser</short_desc>
          <delta_ts>2019-10-17 17:44:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1581224</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2019-10-17 16:54:50 -0700</bug_when>
    <thetext>ctx.font = &quot;&quot; asserts in CSS parser</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581225</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-17 16:55:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/56391016&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581227</commentid>
    <comment_count>2</comment_count>
      <attachid>381252</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2019-10-17 16:59:48 -0700</bug_when>
    <thetext>Created attachment 381252
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581235</commentid>
    <comment_count>3</comment_count>
      <attachid>381252</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-10-17 17:14:42 -0700</bug_when>
    <thetext>Comment on attachment 381252
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=381252&amp;action=review

r=me

&gt; Source/WebCore/ChangeLog:13
&gt; +        will assert. This was the only case I could find where we sidestepped
&gt; +        most of the parsing infrastructure and injected a raw string.

For the record (which I think is what you were referring to), there are a number of other places where we call `CSSParser::parseValue`, and most of them already do a check for an empty string before calling it, but not all of them.

The only other one I could is `CSSFontFaceSet::matchingFacesExcludingPreinstalledFonts` (which looks to be reachable from JavaScript via `FontFaceSet.prototype.check`), so perhaps we should add a similar check there as well.

&gt; LayoutTests/http/wpt/2dcontext/text-styles/2d.text.font.parse.invalid.html:21
&gt; +ctx.font = &apos;20px serif&apos;;

I realize this is a WPT, but should we have a test to check that setting a valid value after an invalid one does in fact change the `font`, just to make sure that an invalid value doesn&apos;t &quot;permanently&quot; mess everything up?
```
    ctx.font = &apos;20px serif&apos;;
    ctx.font = &apos;invalid&apos;;
    ctx.font = &apos;10px sans-serif&apos;;
    _assertSame(ctx.font, &apos;10px sans-serif&apos;, &quot;ctx.font&quot;, &quot;&apos;10px sans-serif&apos;&quot;);
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581239</commentid>
    <comment_count>4</comment_count>
      <attachid>381252</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2019-10-17 17:25:56 -0700</bug_when>
    <thetext>Comment on attachment 381252
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=381252&amp;action=review

&gt;&gt; LayoutTests/http/wpt/2dcontext/text-styles/2d.text.font.parse.invalid.html:21
&gt;&gt; +ctx.font = &apos;20px serif&apos;;
&gt; 
&gt; I realize this is a WPT, but should we have a test to check that setting a valid value after an invalid one does in fact change the `font`, just to make sure that an invalid value doesn&apos;t &quot;permanently&quot; mess everything up?
&gt; ```
&gt;     ctx.font = &apos;20px serif&apos;;
&gt;     ctx.font = &apos;invalid&apos;;
&gt;     ctx.font = &apos;10px sans-serif&apos;;
&gt;     _assertSame(ctx.font, &apos;10px sans-serif&apos;, &quot;ctx.font&quot;, &quot;&apos;10px sans-serif&apos;&quot;);
&gt; ```

We probably should. Feel free to make a WPT request :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581240</commentid>
    <comment_count>5</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2019-10-17 17:26:12 -0700</bug_when>
    <thetext>Will do FontFaceSet separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581244</commentid>
    <comment_count>6</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2019-10-17 17:44:14 -0700</bug_when>
    <thetext>Committed r251270: &lt;https://trac.webkit.org/changeset/251270&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381252</attachid>
            <date>2019-10-17 16:59:48 -0700</date>
            <delta_ts>2019-10-17 17:14:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203127-20191018105947.patch</filename>
            <type>text/plain</type>
            <size>14227</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI5YjAxZWY1MGI4OWM2
YjY3N2ZkYWU5Y2I5NTg4NzFmYTJlOGU0Yi4uZGQxNDFjZmNiMTRiODM1YzNmNWYxOTRjMjdhNmU5
MGU4MTRmYjIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE5LTEwLTE3ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBjdHguZm9udCA9ICIiIGFzc2Vy
dHMgaW4gQ1NTIHBhcnNlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAzMTI3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjM5MTAxNj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgSFRNTCBzcGVj
aWZpY2F0aW9uIHNheXM6CisgICAgICAgICJ2YWx1ZXMgdGhhdCBjYW5ub3QgYmUgcGFyc2VkIGFz
IENTUyBmb250IHZhbHVlcyBhcmUgaWdub3JlZCIsIHNvCisgICAgICAgIHJldHVybiBlYXJseSBp
ZiB3ZSBnZXQgYW4gZW1wdHkgc3RyaW5nLCBvdGhlcndpc2UgdGhlIENTUyBwYXJzZXIKKyAgICAg
ICAgd2lsbCBhc3NlcnQuIFRoaXMgd2FzIHRoZSBvbmx5IGNhc2UgSSBjb3VsZCBmaW5kIHdoZXJl
IHdlIHNpZGVzdGVwcGVkCisgICAgICAgIG1vc3Qgb2YgdGhlIHBhcnNpbmcgaW5mcmFzdHJ1Y3R1
cmUgYW5kIGluamVjdGVkIGEgcmF3IHN0cmluZy4KKworICAgICAgICBUZXN0OiBodHRwL3dwdC8y
ZGNvbnRleHQvdGV4dC1zdHlsZXMvMmQudGV4dC5mb250LnBhcnNlLmludmFsaWQuaHRtbAorCisg
ICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Rm9udCk6CisKIDIwMTkt
MTAtMTcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFNpbmNS
ZXNhbXBsZXIgZG9lcyBub3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgQXVkaW9CdXMgZm9yIGVhY2gg
Y29uc3VtZVNvdXJjZSBjYWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCA5ZWJmMTJmMGQwNTRhOTE0NDBk
MTc4MzQ5YmE0MWIyYjA1NDQxMzdmLi45NWI3YjFjNTVmOTNhNDUyMDVmNTIxYTVjYTQwZTNhYjUx
NDYzNzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTEyNyw2ICsxMjcsOSBAQCBTdHJpbmcgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpmb250KCkgY29uc3QKIAogdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnNldEZvbnQoY29uc3QgU3RyaW5nJiBuZXdGb250KQogeworICAgIGlmIChuZXdG
b250LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG5ld0ZvbnQgPT0gc3Rh
dGUoKS51bnBhcnNlZEZvbnQgJiYgc3RhdGUoKS5mb250LnJlYWxpemVkKCkpCiAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGQ5ZDcxMDRhOTg5Nzk5ZWZlOGRmZWE5YjVkNzE1Nzc1OTJlYTY1MzUu
LjNkZmQ3MzhhNjM0NmFlMjMwNDNhNzJiZDNkNDZiM2Q1M2U3ODA5YTcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAxOS0xMC0xNyAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CisKKyAg
ICAgICAgY3R4LmZvbnQgPSAiIiBhc3NlcnRzIGluIENTUyBwYXJzZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzEyNworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTYzOTEwMTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ29weSB0aGUgdXBkYXRlZCB0ZXN0IGZyb20gbXkgV1BUIHB1bGwgcmVxdWVz
dC4gT25jZSB0aGlzCisgICAgICAgIGlzIG1lcmdlZCBpbnRvIFdQVCwgd2Ugd29uJ3QgbmVlZCB0
aGlzIHZlcnNpb24uCisKKyAgICAgICAgKiBodHRwL3dwdC8yZGNvbnRleHQvdGV4dC1zdHlsZXMv
MmQudGV4dC5mb250LnBhcnNlLmludmFsaWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3dwdC8yZGNvbnRleHQvdGV4dC1zdHlsZXMvMmQudGV4dC5mb250LnBhcnNlLmludmFs
aWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvcmVzb3VyY2VzL2NhbnZhcy10ZXN0
cy5jc3M6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3Jlc291cmNlcy9jYW52YXMtdGVzdHMu
anM6IEFkZGVkLgorCiAyMDE5LTEwLTE3ICBUcnVpdHQgU2F2ZWxsICA8dHNhdmVsbEBhcHBsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1MTIzMS4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvd3B0LzJkY29udGV4dC90ZXh0LXN0eWxlcy8yZC50ZXh0LmZv
bnQucGFyc2UuaW52YWxpZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC8yZGNv
bnRleHQvdGV4dC1zdHlsZXMvMmQudGV4dC5mb250LnBhcnNlLmludmFsaWQtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmRlNDcxOWE3Yjc0ZjA4NmVkZDQwYTY1ODdiMmRlYzJkYTY0YjQzYTYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC8yZGNvbnRleHQvdGV4dC1zdHls
ZXMvMmQudGV4dC5mb250LnBhcnNlLmludmFsaWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBA
QAorMmQudGV4dC5mb250LnBhcnNlLmludmFsaWQKK0FjdHVhbCBvdXRwdXQ6CisKK1BBU1MgQ2Fu
dmFzIHRlc3Q6IDJkLnRleHQuZm9udC5wYXJzZS5pbnZhbGlkIAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC8yZGNvbnRleHQvdGV4dC1zdHlsZXMvMmQudGV4dC5mb250LnBhcnNl
LmludmFsaWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0LzJkY29udGV4dC90ZXh0LXN0eWxl
cy8yZC50ZXh0LmZvbnQucGFyc2UuaW52YWxpZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhZWNiYWJjMjVm
NGY1NTgwZTBmMDUxMTMzZTIzOWVkNTE1MWJlYmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC8yZGNvbnRleHQvdGV4dC1zdHlsZXMvMmQudGV4dC5mb250LnBhcnNlLmlu
dmFsaWQuaHRtbApAQCAtMCwwICsxLDU5IEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5DYW52
YXMgdGVzdDogMmQudGV4dC5mb250LnBhcnNlLmludmFsaWQ8L3RpdGxlPgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvY2FudmFzLXRlc3RzLmNzcyI+Cis8Ym9keSBjbGFz
cz0ic2hvd19vdXRwdXQiPgorCis8aDE+MmQudGV4dC5mb250LnBhcnNlLmludmFsaWQ8L2gxPgor
PHAgY2xhc3M9ImRlc2MiPjwvcD4KKworCis8cCBjbGFzcz0ib3V0cHV0Ij5BY3R1YWwgb3V0cHV0
OjwvcD4KKzxjYW52YXMgaWQ9ImMiIGNsYXNzPSJvdXRwdXQiIHdpZHRoPSIxMDAiIGhlaWdodD0i
NTAiPjxwIGNsYXNzPSJmYWxsYmFjayI+RkFJTCAoZmFsbGJhY2sgY29udGVudCk8L3A+PC9jYW52
YXM+CisKKzx1bCBpZD0iZCI+PC91bD4KKzxzY3JpcHQ+Cit2YXIgdCA9IGFzeW5jX3Rlc3QoIiIp
OworX2FkZFRlc3QoZnVuY3Rpb24oY2FudmFzLCBjdHgpIHsKKworY3R4LmZvbnQgPSAnMjBweCBz
ZXJpZic7CitfYXNzZXJ0U2FtZShjdHguZm9udCwgJzIwcHggc2VyaWYnLCAiY3R4LmZvbnQiLCAi
JzIwcHggc2VyaWYnIik7CisKK2N0eC5mb250ID0gJzIwcHggc2VyaWYnOworY3R4LmZvbnQgPSAn
JzsKK19hc3NlcnRTYW1lKGN0eC5mb250LCAnMjBweCBzZXJpZicsICJjdHguZm9udCIsICInMjBw
eCBzZXJpZiciKTsKKworY3R4LmZvbnQgPSAnMjBweCBzZXJpZic7CitjdHguZm9udCA9ICdib2d1
cyc7CitfYXNzZXJ0U2FtZShjdHguZm9udCwgJzIwcHggc2VyaWYnLCAiY3R4LmZvbnQiLCAiJzIw
cHggc2VyaWYnIik7CisKK2N0eC5mb250ID0gJzIwcHggc2VyaWYnOworY3R4LmZvbnQgPSAnaW5o
ZXJpdCc7CitfYXNzZXJ0U2FtZShjdHguZm9udCwgJzIwcHggc2VyaWYnLCAiY3R4LmZvbnQiLCAi
JzIwcHggc2VyaWYnIik7CisKK2N0eC5mb250ID0gJzIwcHggc2VyaWYnOworY3R4LmZvbnQgPSAn
MTBweCB7Ym9ndXN9JzsKK19hc3NlcnRTYW1lKGN0eC5mb250LCAnMjBweCBzZXJpZicsICJjdHgu
Zm9udCIsICInMjBweCBzZXJpZiciKTsKKworY3R4LmZvbnQgPSAnMjBweCBzZXJpZic7CitjdHgu
Zm9udCA9ICcxMHB4IGluaXRpYWwnOworX2Fzc2VydFNhbWUoY3R4LmZvbnQsICcyMHB4IHNlcmlm
JywgImN0eC5mb250IiwgIicyMHB4IHNlcmlmJyIpOworCitjdHguZm9udCA9ICcyMHB4IHNlcmlm
JzsKK2N0eC5mb250ID0gJzEwcHggZGVmYXVsdCc7CitfYXNzZXJ0U2FtZShjdHguZm9udCwgJzIw
cHggc2VyaWYnLCAiY3R4LmZvbnQiLCAiJzIwcHggc2VyaWYnIik7CisKK2N0eC5mb250ID0gJzIw
cHggc2VyaWYnOworY3R4LmZvbnQgPSAnMTBweCBpbmhlcml0JzsKK19hc3NlcnRTYW1lKGN0eC5m
b250LCAnMjBweCBzZXJpZicsICJjdHguZm9udCIsICInMjBweCBzZXJpZiciKTsKKworY3R4LmZv
bnQgPSAnMjBweCBzZXJpZic7CitjdHguZm9udCA9ICcxZW0gc2VyaWY7IGJhY2tncm91bmQ6IGdy
ZWVuOyBtYXJnaW46IDEwcHgnOworX2Fzc2VydFNhbWUoY3R4LmZvbnQsICcyMHB4IHNlcmlmJywg
ImN0eC5mb250IiwgIicyMHB4IHNlcmlmJyIpOworCisKK30pOworPC9zY3JpcHQ+CisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3Jlc291cmNlcy9jYW52YXMtdGVzdHMuY3NzIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvcmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5jc3MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTAwNmU4MTJkZTRkZmIzZjEwMjQ3ODhlMTQ3M2E3MTM2ZDk1ODM5NQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3Jlc291cmNlcy9jYW52YXMtdGVzdHMuY3NzCkBA
IC0wLDAgKzEsMTM0IEBACitodG1sLmZhaWwgeworICAgIGJhY2tncm91bmQ6ICNmNjY7Cit9Cito
dG1sLnBhc3MgeworICAgIGJhY2tncm91bmQ6ICM2ZjY7Cit9CitodG1sLm5lZWRzX2NoZWNrIHsK
KyAgICBiYWNrZ3JvdW5kOiAjOTlmOworfQorCitib2R5IHsKKyAgICBmb250LXNpemU6IHNtYWxs
OworICAgIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOworICAgIGNvbG9yOiBibGFjazsKK30KKwor
YTpsaW5rIHsKKyAgICBjb2xvcjogIzAwYzsKK30KK2E6dmlzaXRlZCB7CisgICAgY29sb3I6ICM4
MDg7Cit9CisKK2JvZHkuZnJhbWVkIHsKKyAgICBmb250LXNpemU6IHgtc21hbGw7Cit9CisKK2gx
IHsKKyAgICBmb250LXNpemU6IGxhcmdlcjsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZy1s
ZWZ0OiAwLjVlbTsKKyAgICB0ZXh0LWluZGVudDogLTAuNWVtOworfQorCitwIHsKKyAgICBtYXJn
aW46IDA7Cit9CisKK3Aubm90ZXMgeworICAgIG1hcmdpbi1ib3R0b206IDAuNWVtOworICAgIGZv
bnQtc3R5bGU6IGl0YWxpYzsKK30KKwordWwgeworICAgIG1hcmdpbjogMDsKKyAgICBtYXJnaW4t
Ym90dG9tOiAwLjVlbTsKKyAgICBwYWRkaW5nOiAwOworICAgIHBhZGRpbmctbGVmdDogMWVtOwor
fQorCisucmVmcyB7CisgICAgZm9udC1zdHlsZTogaXRhbGljOworICAgIG1hcmdpbi1ib3R0b206
IDAuNWVtOworfQorCisucmVmcyB1bCB7CisgICAgZGlzcGxheTogaW5saW5lOworICAgIG1hcmdp
bjogMDsKKyAgICBwYWRkaW5nOiAwOworfQorCisucmVmcyBsaSB7CisgICAgZGlzcGxheTogaW5s
aW5lOworICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKKyAgICBtYXJnaW46IDA7CisgICAgcGFk
ZGluZzogMDsKK30KKworY2FudmFzIHsKKyAgICBkaXNwbGF5OiBub25lOworICAgIHZpc2liaWxp
dHk6IGhpZGRlbjsKKyAgICBib3JkZXI6IDJweCAjZjBmIHNvbGlkOworICAgIGJhY2tncm91bmQ6
IHVybCguLi9pbWFnZXMvYmFja2dyb3VuZC5wbmcpOworfQorCitpbWcuZXhwZWN0ZWQgeworICAg
IGRpc3BsYXk6IG5vbmU7CisgICAgYm9yZGVyOiAycHggI2YwZiBzb2xpZDsKKyAgICBiYWNrZ3Jv
dW5kOiB1cmwoLi4vaW1hZ2VzL2JhY2tncm91bmQucG5nKTsKK30KKworaWZyYW1lIHsKKyAgICBi
b3JkZXI6IDJweCAjZjBmIHNvbGlkOworfQorCisub3V0cHV0IHsKKyAgICBkaXNwbGF5OiBub25l
OworfQorCisuc2hvd19vdXRwdXQgLm91dHB1dCwgLm5lZWRzX2NoZWNrIC5vdXRwdXQgIHsKKyAg
ICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OworICAgIHZpc2liaWxpdHk6IHZpc2libGUgIWlt
cG9ydGFudDsKK30KKworLnNob3dfb3V0cHV0ICNzaG93X291dHB1dCB7CisgICAgZGlzcGxheTog
bm9uZTsKK30KKworLnJlc291cmNlIHsKKyAgICB2aXNpYmlsaXR5OiBoaWRkZW47CisgICAgaGVp
Z2h0OiAwOworfQorCisuZmFsbGJhY2sgeworICAgIGZvbnQtc2l6ZTogMmVtOworICAgIGZvbnQt
d2VpZ2h0OiBib2xkOworICAgIGNvbG9yOiAjYTAwOworfQorCisKK2h0bWwubWluaW1hbCBib2R5
IHsKKyAgICBjb2xvcjogd2hpdGU7Cit9CitodG1sLmZhaWwubWluaW1hbCB7CisgICAgYmFja2dy
b3VuZDogI2YwMDsKK30KK2h0bWwucGFzcy5taW5pbWFsIHsKKyAgICBiYWNrZ3JvdW5kOiAjMDgw
OworfQoraHRtbC5uZWVkc19jaGVjay5taW5pbWFsIHsKKyAgICBiYWNrZ3JvdW5kOiAjMDA4Owor
fQorLm1pbmltYWwgI2QgeworICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKK30KKy5taW5p
bWFsIC5leHBlY3RlZHRleHQgeworICAgIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50Owor
fQorI3Bhc3N0ZXh0LCAjZmFpbHRleHQgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisubWluaW1h
bC5wYXNzICNwYXNzdGV4dCwgLm1pbmltYWwuZmFpbCAjZmFpbHRleHQgeworICAgIGRpc3BsYXk6
IGJsb2NrOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvcmVzb3VyY2VzL2Nh
bnZhcy10ZXN0cy5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3Jlc291cmNlcy9jYW52YXMtdGVz
dHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzYzMTNiYzhmYmFjMjc2NzIxMjhiNTZjYjMzMjdmZWFmOTUxNjRl
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3Jlc291cmNlcy9jYW52
YXMtdGVzdHMuanMKQEAgLTAsMCArMSwyMDAgQEAKK2Z1bmN0aW9uIF92YWxUb1N0cmluZyh2YWwp
Cit7CisgICAgaWYgKHZhbCA9PT0gdW5kZWZpbmVkIHx8IHZhbCA9PT0gbnVsbCkKKyAgICAgICAg
cmV0dXJuICdbJyArIHR5cGVvZih2YWwpICsgJ10nOworICAgIHJldHVybiB2YWwudG9TdHJpbmco
KSArICdbJyArIHR5cGVvZih2YWwpICsgJ10nOworfQorCitmdW5jdGlvbiBfYXNzZXJ0KGNvbmQs
IHRleHQpCit7CisgICAgYXNzZXJ0X3RydWUoISFjb25kLCB0ZXh0KTsKK30KKworZnVuY3Rpb24g
X2Fzc2VydFNhbWUoYSwgYiwgdGV4dF9hLCB0ZXh0X2IpCit7CisgICAgdmFyIG1zZyA9IHRleHRf
YSArICcgPT09ICcgKyB0ZXh0X2IgKyAnIChnb3QgJyArIF92YWxUb1N0cmluZyhhKSArCisgICAg
ICAgICAgICAgICcsIGV4cGVjdGVkICcgKyBfdmFsVG9TdHJpbmcoYikgKyAnKSc7CisgICAgYXNz
ZXJ0X2VxdWFscyhhLCBiLCBtc2cpOworfQorCitmdW5jdGlvbiBfYXNzZXJ0RGlmZmVyZW50KGEs
IGIsIHRleHRfYSwgdGV4dF9iKQoreworICAgIHZhciBtc2cgPSB0ZXh0X2EgKyAnICE9PSAnICsg
dGV4dF9iICsgJyAoZ290ICcgKyBfdmFsVG9TdHJpbmcoYSkgKworICAgICAgICAgICAgICAnLCBl
eHBlY3RlZCBub3QgJyArIF92YWxUb1N0cmluZyhiKSArICcpJzsKKyAgICBhc3NlcnRfbm90X2Vx
dWFscyhhLCBiLCBtc2cpOworfQorCisKK2Z1bmN0aW9uIF9nZXRQaXhlbChjYW52YXMsIHgseSkK
K3sKKyAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7CisgICAgdmFyIGltZ2Rh
dGEgPSBjdHguZ2V0SW1hZ2VEYXRhKHgsIHksIDEsIDEpOworICAgIHJldHVybiBbIGltZ2RhdGEu
ZGF0YVswXSwgaW1nZGF0YS5kYXRhWzFdLCBpbWdkYXRhLmRhdGFbMl0sIGltZ2RhdGEuZGF0YVsz
XSBdOworfQorCitmdW5jdGlvbiBfYXNzZXJ0UGl4ZWwoY2FudmFzLCB4LHksIHIsZyxiLGEsIHBv
cywgY29sb3VyKQoreworICAgIHZhciBjID0gX2dldFBpeGVsKGNhbnZhcywgeCx5KTsKKyAgICBh
c3NlcnRfZXF1YWxzKGNbMF0sIHIsICdSZWQgY2hhbm5lbCBvZiB0aGUgcGl4ZWwgYXQgKCcgKyB4
ICsgJywgJyArIHkgKyAnKScpOworICAgIGFzc2VydF9lcXVhbHMoY1sxXSwgZywgJ0dyZWVuIGNo
YW5uZWwgb2YgdGhlIHBpeGVsIGF0ICgnICsgeCArICcsICcgKyB5ICsgJyknKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKGNbMl0sIGIsICdCbHVlIGNoYW5uZWwgb2YgdGhlIHBpeGVsIGF0ICgnICsgeCAr
ICcsICcgKyB5ICsgJyknKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNbM10sIGEsICdBbHBoYSBjaGFu
bmVsIG9mIHRoZSBwaXhlbCBhdCAoJyArIHggKyAnLCAnICsgeSArICcpJyk7Cit9CisKK2Z1bmN0
aW9uIF9hc3NlcnRQaXhlbEFwcHJveChjYW52YXMsIHgseSwgcixnLGIsYSwgcG9zLCBjb2xvdXIs
IHRvbGVyYW5jZSkKK3sKKyAgICB2YXIgYyA9IF9nZXRQaXhlbChjYW52YXMsIHgseSk7CisgICAg
YXNzZXJ0X2FwcHJveF9lcXVhbHMoY1swXSwgciwgdG9sZXJhbmNlLCAnUmVkIGNoYW5uZWwgb2Yg
dGhlIHBpeGVsIGF0ICgnICsgeCArICcsICcgKyB5ICsgJyknKTsKKyAgICBhc3NlcnRfYXBwcm94
X2VxdWFscyhjWzFdLCBnLCB0b2xlcmFuY2UsICdHcmVlbiBjaGFubmVsIG9mIHRoZSBwaXhlbCBh
dCAoJyArIHggKyAnLCAnICsgeSArICcpJyk7CisgICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoY1sy
XSwgYiwgdG9sZXJhbmNlLCAnQmx1ZSBjaGFubmVsIG9mIHRoZSBwaXhlbCBhdCAoJyArIHggKyAn
LCAnICsgeSArICcpJyk7CisgICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoY1szXSwgYSwgdG9sZXJh
bmNlLCAnQWxwaGEgY2hhbm5lbCBvZiB0aGUgcGl4ZWwgYXQgKCcgKyB4ICsgJywgJyArIHkgKyAn
KScpOworfQorCitsZXQgX2RlZmVycmVkID0gZmFsc2U7CisKK2Z1bmN0aW9uIGRlZmVyVGVzdCgp
IHsKKyAgX2RlZmVycmVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gX2FkZFRlc3QodGVzdEZuKQor
eworICAgIG9uX2V2ZW50KHdpbmRvdywgImxvYWQiLCBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICB0LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2MnKTsKKyAgICAgICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29u
dGV4dCgnMmQnKTsKKyAgICAgICAgICAgIHQuc3RlcCh0ZXN0Rm4sIHdpbmRvdywgY2FudmFzLCBj
dHgpOworICAgICAgICB9KTsKKworICAgICAgICBpZiAoIV9kZWZlcnJlZCkgeworICAgICAgICAg
ICAgdC5kb25lKCk7CisgICAgICAgIH0KKyAgICB9KTsKK30KKworZnVuY3Rpb24gX2Fzc2VydEdy
ZWVuKGN0eCwgY2FudmFzV2lkdGgsIGNhbnZhc0hlaWdodCkKK3sKKyAgICB2YXIgdGVzdENvbG9y
ID0gZnVuY3Rpb24oZCwgaWR4LCBleHBlY3RlZCkgeworICAgICAgICBhc3NlcnRfZXF1YWxzKGRb
aWR4XSwgZXhwZWN0ZWQsICJkWyIgKyBpZHggKyAiXSIsIFN0cmluZyhleHBlY3RlZCkpOworICAg
IH07CisgICAgdmFyIGltYWdlZGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgY2FudmFzV2lk
dGgsIGNhbnZhc0hlaWdodCk7CisgICAgdmFyIHcgPSBpbWFnZWRhdGEud2lkdGgsIGggPSBpbWFn
ZWRhdGEuaGVpZ2h0LCBkID0gaW1hZ2VkYXRhLmRhdGE7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBoOyArK2kpIHsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB3OyArK2opIHsKKyAgICAg
ICAgICAgIHRlc3RDb2xvcihkLCA0ICogKHcgKiBpICsgaikgKyAwLCAwKTsKKyAgICAgICAgICAg
IHRlc3RDb2xvcihkLCA0ICogKHcgKiBpICsgaikgKyAxLCAyNTUpOworICAgICAgICAgICAgdGVz
dENvbG9yKGQsIDQgKiAodyAqIGkgKyBqKSArIDIsIDApOworICAgICAgICAgICAgdGVzdENvbG9y
KGQsIDQgKiAodyAqIGkgKyBqKSArIDMsIDI1NSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1
bmN0aW9uIGFkZENyb3NzT3JpZ2luWWVsbG93SW1hZ2UoKQoreworICAgIHZhciBpbWcgPSBuZXcg
SW1hZ2UoKTsKKyAgICBpbWcuaWQgPSAieWVsbG93LnBuZyI7CisgICAgaW1nLmNsYXNzTmFtZSA9
ICJyZXNvdXJjZSI7CisgICAgaW1nLnNyYyA9IGdldF9ob3N0X2luZm8oKS5IVFRQX1JFTU9URV9P
UklHSU4gKyAiL2ltYWdlcy95ZWxsb3cucG5nIjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGltZyk7Cit9CisKK2Z1bmN0aW9uIGFkZENyb3NzT3JpZ2luUmVkaXJlY3RZZWxsb3dJbWFn
ZSgpCit7CisgICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpOworICAgIGltZy5pZCA9ICJ5ZWxsb3cu
cG5nIjsKKyAgICBpbWcuY2xhc3NOYW1lID0gInJlc291cmNlIjsKKyAgICBpbWcuc3JjID0gZ2V0
X2hvc3RfaW5mbygpLkhUVFBfT1JJR0lOICsgIi9jb21tb24vcmVkaXJlY3QucHk/bG9jYXRpb249
IiArCisgICAgICAgIGdldF9ob3N0X2luZm8oKS5IVFRQX1JFTU9URV9PUklHSU4gKyAiL2ltYWdl
cy95ZWxsb3cucG5nIjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltZyk7Cit9CisK
K2Z1bmN0aW9uIGZvckVhY2hDYW52YXNTb3VyY2UoY3Jvc3NPcmlnaW5VcmwsIHNhbWVPcmlnaW5V
cmwsIGNhbGxiYWNrKSB7CisgIGZ1bmN0aW9uIG1ha2VJbWFnZSgpIHsKKyAgICByZXR1cm4gbmV3
IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgY29uc3QgaW1hZ2UgPSBuZXcg
SW1hZ2UoKTsKKyAgICAgIGltYWdlLm9ubG9hZCA9ICgpID0+IHJlc29sdmUoaW1hZ2UpOworICAg
ICAgaW1hZ2Uub25lcnJvciA9IHJlamVjdDsKKyAgICAgIGltYWdlLnNyYyA9IGNyb3NzT3JpZ2lu
VXJsICsgIi9pbWFnZXMvcmVkLnBuZyI7CisgICAgfSk7CisgIH0KKworICBjb25zdCBhcmd1bWVu
dHMgPSBbCisgICAgeworICAgICAgbmFtZTogImNyb3NzLW9yaWdpbiBIVE1MSW1hZ2VFbGVtZW50
IiwKKyAgICAgIGZhY3Rvcnk6IG1ha2VJbWFnZSwKKyAgICB9LAorCisgICAgeworICAgICAgbmFt
ZTogImNyb3NzLW9yaWdpbiBTVkdJbWFnZUVsZW1lbnQiLAorICAgICAgZmFjdG9yeTogKCkgPT4g
eworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAg
ICAgICAgIGNvbnN0IGltYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJpbWFnZSIpOworICAgICAgICAgIGltYWdlLm9ubG9hZCA9ICgp
ID0+IHJlc29sdmUoaW1hZ2UpOworICAgICAgICAgIGltYWdlLm9uZXJyb3IgPSByZWplY3Q7Cisg
ICAgICAgICAgaW1hZ2Uuc2V0QXR0cmlidXRlKCJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIiwg
InRydWUiKTsKKyAgICAgICAgICBpbWFnZS5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayIsICd4bGluazpocmVmJywgY3Jvc3NPcmlnaW5VcmwgKyAiL2ltYWdlcy9y
ZWQucG5nIik7CisgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWFnZSk7Cisg
ICAgICAgIH0pOworICAgICAgfSwKKyAgICB9LAorCisgICAgeworICAgICAgbmFtZTogImNyb3Nz
LW9yaWdpbiBIVE1MVmlkZW9FbGVtZW50IiwKKyAgICAgIGZhY3Rvcnk6ICgpID0+IHsKKyAgICAg
ICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICBj
b25zdCB2aWRlbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInZpZGVvIik7CisgICAgICAgICAg
dmlkZW8ub25jYW5wbGF5dGhyb3VnaCA9ICgpID0+IHJlc29sdmUodmlkZW8pOworICAgICAgICAg
IHZpZGVvLm9uZXJyb3IgPSByZWplY3Q7CisgICAgICAgICAgdmlkZW8uc3JjID0gZ2V0VmlkZW9V
UkkoY3Jvc3NPcmlnaW5VcmwgKyAiL21lZGlhL21vdmllXzMwMCIpOworICAgICAgICB9KTsKKyAg
ICAgIH0sCisgICAgfSwKKworICAgIHsKKyAgICAgIG5hbWU6ICJyZWRpcmVjdGVkIHRvIGNyb3Nz
LW9yaWdpbiBIVE1MVmlkZW9FbGVtZW50IiwKKyAgICAgIGZhY3Rvcnk6ICgpID0+IHsKKyAgICAg
ICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICBj
b25zdCB2aWRlbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInZpZGVvIik7CisgICAgICAgICAg
dmlkZW8ub25jYW5wbGF5dGhyb3VnaCA9ICgpID0+IHJlc29sdmUodmlkZW8pOworICAgICAgICAg
IHZpZGVvLm9uZXJyb3IgPSByZWplY3Q7CisgICAgICAgICAgdmlkZW8uc3JjID0gIi9jb21tb24v
cmVkaXJlY3QucHk/bG9jYXRpb249IiArIGdldFZpZGVvVVJJKGNyb3NzT3JpZ2luVXJsICsgIi9t
ZWRpYS9tb3ZpZV8zMDAiKTsKKyAgICAgICAgfSk7CisgICAgICB9LAorICAgIH0sCisKKyAgICB7
CisgICAgICBuYW1lOiAicmVkaXJlY3RlZCB0byBzYW1lLW9yaWdpbiBIVE1MVmlkZW9FbGVtZW50
IiwKKyAgICAgIGZhY3Rvcnk6ICgpID0+IHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChy
ZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICBjb25zdCB2aWRlbyA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInZpZGVvIik7CisgICAgICAgICAgdmlkZW8ub25jYW5wbGF5dGhyb3VnaCA9
ICgpID0+IHJlc29sdmUodmlkZW8pOworICAgICAgICAgIHZpZGVvLm9uZXJyb3IgPSByZWplY3Q7
CisgICAgICAgICAgdmlkZW8uc3JjID0gY3Jvc3NPcmlnaW5VcmwgKyAiL2NvbW1vbi9yZWRpcmVj
dC5weT9sb2NhdGlvbj0iICsgZ2V0VmlkZW9VUkkoc2FtZU9yaWdpblVybCArICIvbWVkaWEvbW92
aWVfMzAwIik7CisgICAgICAgIH0pOworICAgICAgfSwKKyAgICB9LAorCisgICAgeworICAgICAg
bmFtZTogInVuY2xlYW4gSFRNTENhbnZhc0VsZW1lbnQiLAorICAgICAgZmFjdG9yeTogKCkgPT4g
eworICAgICAgICByZXR1cm4gbWFrZUltYWdlKCkudGhlbihpbWFnZSA9PiB7CisgICAgICAgICAg
Y29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgICAg
ICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworICAgICAgICAgIGNv
bnRleHQuZHJhd0ltYWdlKGltYWdlLCAwLCAwKTsKKyAgICAgICAgICByZXR1cm4gY2FudmFzOwor
ICAgICAgICB9KTsKKyAgICAgIH0sCisgICAgfSwKKworICAgIHsKKyAgICAgIG5hbWU6ICJ1bmNs
ZWFuIEltYWdlQml0bWFwIiwKKyAgICAgIGZhY3Rvcnk6ICgpID0+IHsKKyAgICAgICAgcmV0dXJu
IG1ha2VJbWFnZSgpLnRoZW4oY3JlYXRlSW1hZ2VCaXRtYXApOworICAgICAgfSwKKyAgICB9LAor
ICBdOworCisgIGZvciAobGV0IHsgbmFtZSwgZmFjdG9yeSB9IG9mIGFyZ3VtZW50cykgeworICAg
IGNhbGxiYWNrKG5hbWUsIGZhY3RvcnkpOworICB9Cit9Cg==
</data>
<flag name="review"
          id="397019"
          type_id="1"
          status="+"
          setter="hi"
    />
          </attachment>
      

    </bug>

</bugzilla>