<?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>160295</bug_id>
          
          <creation_ts>2016-07-28 08:25:25 -0700</creation_ts>
          <short_desc>[ARM] REGRESSION: generateSelfPropertyAccess shouldn&apos;t overwrite the constant pool</short_desc>
          <delta_ts>2017-08-01 17:06:37 -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>JavaScriptCore</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>159408</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Csaba Osztrogonác">ossy</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
    
    <cc>ticaiolima</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1215228</commentid>
    <comment_count>0</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-07-28 08:25:25 -0700</bug_when>
    <thetext>ARMv7 (ARM instruction set) backend is completely broken
due to the recent IC related refactoring/development.

I got one more regression related to this IC development.

generateSelfPropertyAccess() overwrites the constant pool
with nops which doesn&apos;t belong to IC code, but previous
opcodes.

It is easy to reproduce this bug on sunspider-1.0/3d-raytrace.js with default settings.
(There are only ~100 crashed on r203785 with other fixes applied:
 - https://trac.webkit.org/changeset/203816
 - https://bugs.webkit.org/attachment.cgi?id=284690 from bug159720
 - revert https://trac.webkit.org/changeset/203272 )

Let&apos;s see the generated JIT code
---------------------------------

Generated Baseline JIT code for intersect#DSuR25:[0xafba61c0-&gt;0xafbdd3c0, BaselineFunctionCall, 368], instruction count = 368
   Source: function (orig, dir, near, far) { var u = (this.axis + 1) % 3; var v = (this.axis + 2) % 3; var d = dir[this.axis] + this.nu * dir[u] + this.nv * dir[v]; var t = (this.nd - orig[this.axis] - this.nu * orig[u] - this.nv * orig[v]) / d; if (t &lt; near || t &gt; far) return null; var Pu = orig[u] + t * dir[u] - this.eu; var Pv = orig[v] + t * dir[v] - this.ev; var a2 = Pv * this.nu1 + Pu * this.nv1; if (a2 &lt; 0) return null; var a3 = Pu * this.nu2 + Pv * this.nv2; if (a3 &lt; 0) return null; if ((a2 + a3) &gt; 1) return null; return t; }
   Code at [0xb1506000, 0xb150a794):
...
    [ 129] get_by_val        loc12, arg1, loc13    ArrayWithDouble, Original; predicting Nonintasdouble
              0xb1506b60: [0xe5860000]  ldr     r6, [pc, #2152]           &lt;============ read from constant pool adress: 0xb15073d0
              0xb1506b64: [0xe59f6864]  str     r0, [r6]                  &lt;============ CRASH, because the address was overwritten
              0xb1506b68: [0xe5861000]  ldr     r6, [pc, #2148]
              0xb1506b6c: [0xe50b0068]  str     r1, [r6]
              0xb1506b70: [0xe50b1064]  str     r0, [r11, #-104]
              0xb1506b74: [0xe51b0060]  str     r1, [r11, #-100]
    [ 135] sub               loc11, loc11, loc12    results: Result:&lt;Int32&gt; LHS ObservedType:&lt;Number&gt; RHS ObservedType:&lt;Number&gt; LHS ResultType:&lt;0x3e&gt; RHS ResultType:&lt;0x3e&gt;
...
    [ 227] get_by_id         loc12, this, eu(@id4) llint(struct = 0xafba3a40 (offset = 5))    predicting Nonboolint32
              0xb1507388: [0xe59b1024]  ldr     r0, [r11, #32]
              0xb150738c: [0xea00090c]  ldr     r1, [r11, #36]
              0xb1507390: [0xe1a00000]  b       #9264
              0xb1507394: [0xe1a00000]  mov     r0, r0
              0xb1507398: [0xe1a00000]  mov     r0, r0
              0xb150739c: [0xe1a00000]  mov     r0, r0
              0xb15073a0: [0xe1a00000]  mov     r0, r0
              0xb15073a4: [0xe1a00000]  mov     r0, r0
              0xb15073a8: [0xe1a00000]  mov     r0, r0
              0xb15073ac: [0xe1a00000]  mov     r0, r0
              0xb15073b0: [0xe1a00000]  mov     r0, r0
              0xb15073b4: [0xe1a00000]  mov     r0, r0
              0xb15073b8: [0xe1a00000]  mov     r0, r0
              0xb15073bc: [0xe1a00000]  mov     r0, r0
              0xb15073c0: [0xea000077]  mov     r0, r0
              0xb15073c4: [0x00002c8c]  b       #476                 &lt;================== constant pool starts with barrier
              0xb15073c8: [0x00000b60]  andeq   r2, r0, r12, lsl #25
              0xb15073cc: [0xaffebb58]  andeq   r0, r0, r0, ror #22
              0xb15073d0: [0xaffebb5c]  svcge   #16694104            &lt;================== read from here before the CRASH
              0xb15073d4: [0x00000bb0]  svcge   #16694108
              0xb15073d8: [0x00000be0] unknown instruction
...

Let&apos;s see what&apos;s going wrong
-----------------------------

generating 492 nops from this backtrace which overwrite the constant pool

1   0xb58087a4 JSC::LinkBuffer::allocate(JSC::MacroAssembler&amp;, void*, JSC::JITCompilationEffort)
2   0xb58085f8 JSC::LinkBuffer::linkCode(JSC::MacroAssembler&amp;, void*, JSC::JITCompilationEffort)
3   0xb58bef1c JSC::LinkBuffer::LinkBuffer(JSC::MacroAssembler&amp;, void*, unsigned int, JSC::JITCompilationEffort, bool)
4   0xb58bd654
5   0xb58bca80 JSC::InlineAccess::generateSelfPropertyAccess(JSC::VM&amp;, JSC::StructureStubInfo&amp;, JSC::Structure*, int)
6   0xb5f81550
7   0xb5f82024 JSC::repatchGetByID(JSC::ExecState*, JSC::JSValue, JSC::Identifier const&amp;, JSC::PropertySlot const&amp;, JSC::StructureStubInfo&amp;, JSC::GetByIDKind)
8   0xb5f48338
9   0xb5f54308
10  0xb5f53670
11  0xb5f48528

Generated JIT code for InlineAccessType: &apos;property access&apos;:
    Code at [0xb1507390, 0xb15075a8):
          0xb1507390: [0xe3036a40]      ldr     r12, [r0]
          0xb1507394: [0xe34a6fba]      movw    r6, #14912
          0xb1507398: [0xe15c0006]      movt    r6, #44986
          0xb150739c: [0x159fc010]      cmp     r12, r6
          0xb15073a0: [0x112fff1c]      ldrne   r12, [pc, #16]
          0xb15073a4: [0xe590103c]      bxne    r12
          0xb15073a8: [0xe5900038]      ldr     r1, [r0, #60]
          0xb15073ac: [0xea000001]      ldr     r0, [r0, #56]
          0xb15073b0: [0xe12fff7f]      b       #4
          0xb15073b4: [0xb15097c8]      bkpt    #65535
          0xb15073b8: [0xe1a00000] unknown instruction
          0xb15073bc: [0xe1a00000]      mov     r0, r0
          0xb15073c0: [0xe1a00000]      mov     r0, r0
          0xb15073c4: [0xe1a00000]      mov     r0, r0      &lt; ============= constant pool barrier should be here, but was overwritten
          0xb15073c8: [0xe1a00000]      mov     r0, r0
...
          0xb15075a0: [0xe1a00000]      mov     r0, r0
          0xb15075a4: [0xe59f68e0]      mov     r0, r0


Have you got any idea how can we fix this serious regression? It seems the new IC
mechanism doesn&apos;t respect constant pools at all. :( My first idea is that we should
force flush constant pool before generating any code for get_by_id. Do you think
if it would help? And could you help where should I put this flush instruction?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215515</commentid>
    <comment_count>1</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-07-29 00:57:42 -0700</bug_when>
    <thetext>Could you give me some hints how can we fix this regression?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215609</commentid>
    <comment_count>2</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-07-29 11:08:34 -0700</bug_when>
    <thetext>ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218392</commentid>
    <comment_count>3</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-07 14:21:59 -0700</bug_when>
    <thetext>So this happens when we&apos;re regenerating the IC?
We don&apos;t want to take into account the constant pool into the size of the IC.
Is there a predictable way to predict the size of a constant pool for code
with X number of branches when X is well known?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334047</commentid>
    <comment_count>4</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-08-01 17:02:48 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #3)
&gt; So this happens when we&apos;re regenerating the IC?

No. The problem is happening when the getById fast path is being generated in &quot;JITByIdGenerator::generateFastCommon&quot; and the constant poll is flushed in the middle of IC code. As the logic in &quot;JSC::LinkBuffer::allocate&quot; is to fill al remaining IC code with nops, constant pool is then overwritten in such case. However, it also could be overwritten by IC repatch version as well.

&gt; We don&apos;t want to take into account the constant pool into the size of the IC.

I&apos;ve found a solution that I&apos;m not happy with, but at least enables me run code with IC enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334050</commentid>
    <comment_count>5</comment_count>
      <attachid>316916</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-08-01 17:06:37 -0700</bug_when>
    <thetext>Created attachment 316916
Noisy Patch

This Patch doesn&apos;t apply to master. Also, it&apos;s is just the hacking I&apos;ve made to identify the problem. Maybe it can be useful to share. However, I&apos;m evaluating if enable JIT into ARMv6 will provide performance gain as we expect and if we succeed on that I can revisit this bug afterwards.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316916</attachid>
            <date>2017-08-01 17:06:37 -0700</date>
            <delta_ts>2017-08-01 17:06:37 -0700</delta_ts>
            <desc>Noisy Patch</desc>
            <filename>armv6-ic.diff</filename>
            <type>text/plain</type>
            <size>11950</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmgKaW5kZXggMmViNDUxZC4uMjdjOWVlNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgK
QEAgLTEwMDcsMTMgKzEwMDcsMTQgQEAgcHVibGljOgogICAgICAgICBtX2xpbmtUYXNrcy5hcHBl
bmQoY3JlYXRlU2hhcmVkVGFzazx2b2lkKExpbmtCdWZmZXImKT4oZnVuY3RvcikpOwogICAgIH0K
IAotICAgIHZvaWQgZW1pdE5vcHMoc2l6ZV90IG1lbW9yeVRvRmlsbFdpdGhOb3BzSW5CeXRlcykK
KyAgICB2b2lkIGVtaXROb3BzKHNpemVfdCBtZW1vcnlUb0ZpbGxXaXRoTm9wc0luQnl0ZXMsIGJv
b2wgZm9yY2VGbHVzaCA9IGZhbHNlKQogICAgIHsKICAgICAgICAgQXNzZW1ibGVyQnVmZmVyJiBi
dWZmZXIgPSBtX2Fzc2VtYmxlci5idWZmZXIoKTsKICAgICAgICAgc2l6ZV90IHN0YXJ0Q29kZVNp
emUgPSBidWZmZXIuY29kZVNpemUoKTsKICAgICAgICAgc2l6ZV90IHRhcmdldENvZGVTaXplID0g
c3RhcnRDb2RlU2l6ZSArIG1lbW9yeVRvRmlsbFdpdGhOb3BzSW5CeXRlczsKLSAgICAgICAgYnVm
ZmVyLmVuc3VyZVNwYWNlKG1lbW9yeVRvRmlsbFdpdGhOb3BzSW5CeXRlcyk7CisgICAgICAgIGJ1
ZmZlci5lbnN1cmVTcGFjZShtZW1vcnlUb0ZpbGxXaXRoTm9wc0luQnl0ZXMsIGZvcmNlRmx1c2gp
OwogICAgICAgICBib29sIGlzQ29weWluZ1RvRXhlY3V0YWJsZU1lbW9yeSA9IGZhbHNlOworICAg
ICAgICAKICAgICAgICAgQXNzZW1ibGVyVHlwZTo6ZmlsbE5vcHMoc3RhdGljX2Nhc3Q8Y2hhcio+
KGJ1ZmZlci5kYXRhKCkpICsgc3RhcnRDb2RlU2l6ZSwgbWVtb3J5VG9GaWxsV2l0aE5vcHNJbkJ5
dGVzLCBpc0NvcHlpbmdUb0V4ZWN1dGFibGVNZW1vcnkpOwogICAgICAgICBidWZmZXIuc2V0Q29k
ZVNpemUodGFyZ2V0Q29kZVNpemUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oCmluZGV4IDczNDA5NTIuLjUxMDUwYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIu
aApAQCAtMTUzLDYgKzE1MywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVy
biBtX2luZGV4ICsgc3BhY2UgPD0gbV9zdG9yYWdlLmNhcGFjaXR5KCk7CiAgICAgICAgIH0KIAor
CisKKyAgICAgICAgdm9pZCBlbnN1cmVTcGFjZSh1bnNpZ25lZCBzcGFjZSwgYm9vbCkgeworICAg
ICAgICAgICAgd2hpbGUgKCFpc0F2YWlsYWJsZShzcGFjZSkpCisgICAgICAgICAgICAgICAgb3V0
T2ZMaW5lR3JvdygpOworICAgICAgICB9CisKICAgICAgICAgdm9pZCBlbnN1cmVTcGFjZSh1bnNp
Z25lZCBzcGFjZSkKICAgICAgICAgewogICAgICAgICAgICAgd2hpbGUgKCFpc0F2YWlsYWJsZShz
cGFjZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2Vt
YmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oCmluZGV4IDNiNjMyODguLmQ5
YjM1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1i
bGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oCkBAIC0xMTQsOSArMTE0
LDEwIEBAIHB1YmxpYzoKICAgICAgICAgZmFzdEZyZWUobV9wb29sKTsKICAgICB9CiAKLSAgICB2
b2lkIGVuc3VyZVNwYWNlKGludCBzcGFjZSkKKyAgICB2b2lkIGVuc3VyZVNwYWNlKGludCBzcGFj
ZSwgYm9vbCBza2lwRmx1c2ggPSBmYWxzZSkKICAgICB7Ci0gICAgICAgIGZsdXNoSWZOb1NwYWNl
Rm9yKHNwYWNlKTsKKyAgICAgICAgaWYgKCFza2lwRmx1c2gpCisgICAgICAgICAgICBmbHVzaElm
Tm9TcGFjZUZvcihzcGFjZSk7CiAgICAgICAgIEFzc2VtYmxlckJ1ZmZlcjo6ZW5zdXJlU3BhY2Uo
c3BhY2UpOwogICAgIH0KIApAQCAtMjIyLDYgKzIyMywxNiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtX251bUNvbnN0czsKICAgICB9CiAKKyAgICBpbnQgc2l6ZU9mQ29uc3RhbnRQb29sSW5C
eXRlcyhib29sIHVzZUJhcnJpZXIgPSB0cnVlKQorICAgIHsKKyAgICAgICAgaW50IGFsaWduUG9v
bCA9IChjb2RlU2l6ZSgpICsgKHVzZUJhcnJpZXIgPyBiYXJyaWVyU2l6ZSA6IDApKSAmIChzaXpl
b2YodWludDY0X3QpIC0gMSk7CisgICAgICAgIAorICAgICAgICBpZiAoYWxpZ25Qb29sKQorICAg
ICAgICAgICAgYWxpZ25Qb29sID0gc2l6ZW9mKHVpbnQ2NF90KSAtIGFsaWduUG9vbDsKKyAgICAg
ICAgCisgICAgICAgIHJldHVybiBtX251bUNvbnN0cyAqIHNpemVvZih1aW50MzJfdCkgKyBhbGln
blBvb2w7CisgICAgfQorCiAgICAgdm9pZCBmbHVzaENvbnN0YW50UG9vbChib29sIHVzZUJhcnJp
ZXIgPSB0cnVlKQogICAgIHsKICAgICAgICAgaWYgKCFtX251bUNvbnN0cykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCmluZGV4IGM5Zjg2MjMuLmIy
NGZjZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1
ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVy
LmNwcApAQCAtMTk0LDE0ICsxOTQsMTYgQEAgdm9pZCBMaW5rQnVmZmVyOjpjb3B5Q29tcGFjdEFu
ZExpbmtDb2RlKE1hY3JvQXNzZW1ibGVyJiBtYWNyb0Fzc2VtYmxlciwgdm9pZCogb3cKICNlbmRp
ZgogCiAKLXZvaWQgTGlua0J1ZmZlcjo6bGlua0NvZGUoTWFjcm9Bc3NlbWJsZXImIG1hY3JvQXNz
ZW1ibGVyLCB2b2lkKiBvd25lclVJRCwgSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQordm9p
ZCBMaW5rQnVmZmVyOjpsaW5rQ29kZShNYWNyb0Fzc2VtYmxlciYgbWFjcm9Bc3NlbWJsZXIsIHZv
aWQqIG93bmVyVUlELCBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQsIGJvb2wgaXNMaW5raW5n
SUMpCiB7CiAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIGVuZCBvZiB0aGUgbGFzdCBpbnZhbGlkYXRp
b24gcG9pbnQgZG9lcyBub3QgZXh0ZW5kIGJleW9uZCB0aGUgZW5kIG9mIHRoZSBidWZmZXIuCiAg
ICAgbWFjcm9Bc3NlbWJsZXIubGFiZWwoKTsKIAogI2lmICFFTkFCTEUoQlJBTkNIX0NPTVBBQ1RJ
T04pCiAjaWYgZGVmaW5lZChBU1NFTUJMRVJfSEFTX0NPTlNUQU5UX1BPT0wpICYmIEFTU0VNQkxF
Ul9IQVNfQ09OU1RBTlRfUE9PTAotICAgIG1hY3JvQXNzZW1ibGVyLm1fYXNzZW1ibGVyLmJ1ZmZl
cigpLmZsdXNoQ29uc3RhbnRQb29sKGZhbHNlKTsKKyAgICBtYWNyb0Fzc2VtYmxlci5tX2Fzc2Vt
Ymxlci5idWZmZXIoKS5mbHVzaENvbnN0YW50UG9vbChpc0xpbmtpbmdJQyk7CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShpc0xpbmtpbmdJQyk7CiAjZW5kaWYKICAgICBhbGxvY2F0ZShtYWNyb0Fz
c2VtYmxlciwgb3duZXJVSUQsIGVmZm9ydCk7CiAgICAgaWYgKCFtX2RpZEFsbG9jYXRlKQpAQCAt
MjMyLDcgKzIzNCw3IEBAIHZvaWQgTGlua0J1ZmZlcjo6YWxsb2NhdGUoTWFjcm9Bc3NlbWJsZXIm
IG1hY3JvQXNzZW1ibGVyLCB2b2lkKiBvd25lclVJRCwgSklUQ29tCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIAogICAgICAgICBzaXplX3Qgbm9wc1RvRmlsbEluQnl0ZXMgPSBtX3NpemUg
LSBpbml0aWFsU2l6ZTsKLSAgICAgICAgbWFjcm9Bc3NlbWJsZXIuZW1pdE5vcHMobm9wc1RvRmls
bEluQnl0ZXMpOworICAgICAgICBtYWNyb0Fzc2VtYmxlci5lbWl0Tm9wcyhub3BzVG9GaWxsSW5C
eXRlcywgdHJ1ZSk7CiAgICAgICAgIG1fZGlkQWxsb2NhdGUgPSB0cnVlOwogICAgICAgICByZXR1
cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9M
aW5rQnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIu
aAppbmRleCBhNjVkYjY5Li5kMDEyODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0xpbmtCdWZmZXIuaApAQCAtNzgsNyArNzgsNyBAQCBjbGFzcyBMaW5rQnVmZmVyIHsK
ICNlbmRpZgogCiBwdWJsaWM6Ci0gICAgTGlua0J1ZmZlcihNYWNyb0Fzc2VtYmxlciYgbWFjcm9B
c3NlbWJsZXIsIHZvaWQqIG93bmVyVUlELCBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQgPSBK
SVRDb21waWxhdGlvbk11c3RTdWNjZWVkKQorICAgIExpbmtCdWZmZXIoTWFjcm9Bc3NlbWJsZXIm
IG1hY3JvQXNzZW1ibGVyLCB2b2lkKiBvd25lclVJRCwgSklUQ29tcGlsYXRpb25FZmZvcnQgZWZm
b3J0ID0gSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCwgYm9vbCBpc0xpbmtpbmdJQyA9IGZhbHNl
KQogICAgICAgICA6IG1fc2l6ZSgwKQogICAgICAgICAsIG1fZGlkQWxsb2NhdGUoZmFsc2UpCiAg
ICAgICAgICwgbV9jb2RlKDApCkBAIC04NiwxMCArODYsMTAgQEAgcHVibGljOgogICAgICAgICAs
IG1fY29tcGxldGVkKGZhbHNlKQogI2VuZGlmCiAgICAgewotICAgICAgICBsaW5rQ29kZShtYWNy
b0Fzc2VtYmxlciwgb3duZXJVSUQsIGVmZm9ydCk7CisgICAgICAgIGxpbmtDb2RlKG1hY3JvQXNz
ZW1ibGVyLCBvd25lclVJRCwgZWZmb3J0LCBpc0xpbmtpbmdJQyk7CiAgICAgfQogCi0gICAgTGlu
a0J1ZmZlcihNYWNyb0Fzc2VtYmxlciYgbWFjcm9Bc3NlbWJsZXIsIHZvaWQqIGNvZGUsIHNpemVf
dCBzaXplLCBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQgPSBKSVRDb21waWxhdGlvbk11c3RT
dWNjZWVkLCBib29sIHNob3VsZFBlcmZvcm1CcmFuY2hDb21wYWN0aW9uID0gdHJ1ZSkKKyAgICBM
aW5rQnVmZmVyKE1hY3JvQXNzZW1ibGVyJiBtYWNyb0Fzc2VtYmxlciwgdm9pZCogY29kZSwgc2l6
ZV90IHNpemUsIEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCA9IEpJVENvbXBpbGF0aW9uTXVz
dFN1Y2NlZWQsIGJvb2wgc2hvdWxkUGVyZm9ybUJyYW5jaENvbXBhY3Rpb24gPSB0cnVlLCBib29s
IGlzTGlua2luZ0lDID0gZmFsc2UpCiAgICAgICAgIDogbV9zaXplKHNpemUpCiAgICAgICAgICwg
bV9kaWRBbGxvY2F0ZShmYWxzZSkKICAgICAgICAgLCBtX2NvZGUoY29kZSkKQEAgLTEwMiw3ICsx
MDIsNyBAQCBwdWJsaWM6CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0oc2hvdWxkUGVyZm9y
bUJyYW5jaENvbXBhY3Rpb24pOwogI2VuZGlmCi0gICAgICAgIGxpbmtDb2RlKG1hY3JvQXNzZW1i
bGVyLCAwLCBlZmZvcnQpOworICAgICAgICBsaW5rQ29kZShtYWNyb0Fzc2VtYmxlciwgMCwgZWZm
b3J0LCBpc0xpbmtpbmdJQyk7CiAgICAgfQogCiAgICAgfkxpbmtCdWZmZXIoKQpAQCAtMjc2LDcg
KzI3Niw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBhbGxvY2F0ZShNYWNyb0Fzc2VtYmxl
ciYsIHZvaWQqIG93bmVyVUlELCBKSVRDb21waWxhdGlvbkVmZm9ydCk7CiAKLSAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIGxpbmtDb2RlKE1hY3JvQXNzZW1ibGVyJiwgdm9pZCogb3duZXJVSUQs
IEpJVENvbXBpbGF0aW9uRWZmb3J0KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGxpbmtD
b2RlKE1hY3JvQXNzZW1ibGVyJiwgdm9pZCogb3duZXJVSUQsIEpJVENvbXBpbGF0aW9uRWZmb3J0
LCBib29sIGlzTGlua2luZ0lDID0gZmFsc2UpOwogI2lmIEVOQUJMRShCUkFOQ0hfQ09NUEFDVElP
TikKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5zdHJ1Y3Rpb25UeXBlPgogICAgIHZvaWQgY29w
eUNvbXBhY3RBbmRMaW5rQ29kZShNYWNyb0Fzc2VtYmxlciYsIHZvaWQqIG93bmVyVUlELCBKSVRD
b21waWxhdGlvbkVmZm9ydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5saW5lQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bmxpbmVBY2Nlc3MuY3BwCmluZGV4IGViMzY4ZDguLjFhMmYyZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCkBAIC0xMzAsOSArMTMwLDE1
IEBAIHZvaWQgSW5saW5lQWNjZXNzOjpkdW1wQ2FjaGVTaXplc0FuZENyYXNoKCkKIHRlbXBsYXRl
IDx0eXBlbmFtZSBGdW5jdGlvbj4KIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgbGlua0NvZGVJ
bmxpbmUoY29uc3QgY2hhciogbmFtZSwgQ0NhbGxIZWxwZXJzJiBqaXQsIFN0cnVjdHVyZVN0dWJJ
bmZvJiBzdHViSW5mbywgY29uc3QgRnVuY3Rpb24mIGZ1bmN0aW9uKQogewotICAgIGlmIChqaXQu
bV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKSA8PSBzdHViSW5mby5wYXRjaC5pbmxpbmVT
aXplKSB7CisgICAgI2lmIGRlZmluZWQoQVNTRU1CTEVSX0hBU19DT05TVEFOVF9QT09MKSAmJiBB
U1NFTUJMRVJfSEFTX0NPTlNUQU5UX1BPT0wKKyAgICBzaXplX3QgY29kZVNpemUgPSBqaXQubV9h
c3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKSArIGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5z
aXplT2ZDb25zdGFudFBvb2xJbkJ5dGVzKCk7CisgICAgI2Vsc2UKKyAgICBzaXplX3QgY29kZVNp
emUgPSBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKTsKKyAgICAjZW5kaWYKKwor
ICAgIGlmIChjb2RlU2l6ZSA8PSBzdHViSW5mby5wYXRjaC5pbmxpbmVTaXplKSB7CiAgICAgICAg
IGJvb2wgbmVlZHNCcmFuY2hDb21wYWN0aW9uID0gZmFsc2U7Ci0gICAgICAgIExpbmtCdWZmZXIg
bGlua0J1ZmZlcihqaXQsIHN0dWJJbmZvLnBhdGNoLnN0YXJ0LmRhdGFMb2NhdGlvbigpLCBzdHVi
SW5mby5wYXRjaC5pbmxpbmVTaXplLCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkLCBuZWVkc0Jy
YW5jaENvbXBhY3Rpb24pOworICAgICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBzdHVi
SW5mby5wYXRjaC5zdGFydC5kYXRhTG9jYXRpb24oKSwgc3R1YkluZm8ucGF0Y2guaW5saW5lU2l6
ZSwgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCwgbmVlZHNCcmFuY2hDb21wYWN0aW9uLCB0cnVl
KTsKICAgICAgICAgQVNTRVJUKGxpbmtCdWZmZXIuaXNWYWxpZCgpKTsKICAgICAgICAgZnVuY3Rp
b24obGlua0J1ZmZlcik7CiAgICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgKCJJbmxp
bmVBY2Nlc3NUeXBlOiAnJXMnIiwgbmFtZSkpOwpAQCAtMjg2LDcgKzI5Miw3IEBAIHZvaWQgSW5s
aW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywg
Q29kZUxvY2F0aW9uTGFiCiAKICAgICAvLyBXZSBkb24ndCBuZWVkIGEgbm9wIHNsZWQgaGVyZSBi
ZWNhdXNlIG5vYm9keSBzaG91bGQgYmUganVtcGluZyBpbnRvIHRoZSBtaWRkbGUgb2YgYW4gSUMu
CiAgICAgYm9vbCBuZWVkc0JyYW5jaENvbXBhY3Rpb24gPSBmYWxzZTsKLSAgICBMaW5rQnVmZmVy
IGxpbmtCdWZmZXIoaml0LCBzdHViSW5mby5wYXRjaC5zdGFydC5kYXRhTG9jYXRpb24oKSwgaml0
Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCksIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2Nl
ZWQsIG5lZWRzQnJhbmNoQ29tcGFjdGlvbik7CisgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGpp
dCwgc3R1YkluZm8ucGF0Y2guc3RhcnQuZGF0YUxvY2F0aW9uKCksIGppdC5tX2Fzc2VtYmxlci5i
dWZmZXIoKS5jb2RlU2l6ZSgpLCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkLCBuZWVkc0JyYW5j
aENvbXBhY3Rpb24sIHRydWUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGxpbmtCdWZmZXIuaXNWYWxp
ZCgpKTsKICAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgdGFyZ2V0KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXgg
ZDJkODlkMS4uZmY3YmMyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC01MTQsOCArNTE0LDggQEAgQWNjZXNzR2Vu
ZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSgKICAgICAgICAgY2Fs
bFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nID0gc3RhdGUuY2FsbFNpdGVJbmRleEZvckV4
Y2VwdGlvbkhhbmRsaW5nKCk7CiAgICAgfQogCi0gICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGpp
dCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwotICAgIGlmIChsaW5rQnVmZmVy
LmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKKyAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBj
b2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCwgdHJ1ZSk7CisgICAgaWYgKGxpbmtCdWZm
ZXIuZGlkRmFpbFRvQWxsb2NhdGUoKSB8fCBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNp
emUoKSA+IHN0dWJJbmZvLnBhdGNoLmlubGluZVNpemUpIHsKICAgICAgICAgaWYgKHZlcmJvc2Up
CiAgICAgICAgICAgICBkYXRhTG9nKCJEaWQgZmFpbCB0byBhbGxvY2F0ZS5cbiIpOwogICAgICAg
ICByZXR1cm4gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6R2F2ZVVwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCA5
ZGQ4MjRkLi42YWY2ZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAtOTQsMTIgKzk0LDE1IEBAIHZvaWQgSklU
QnlJZEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIAogdm9pZCBK
SVRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RDb21tb24oTWFjcm9Bc3NlbWJsZXImIGppdCwg
c2l6ZV90IGlubGluZUlDU2l6ZSkKIHsKKyNpZiBkZWZpbmVkKEFTU0VNQkxFUl9IQVNfQ09OU1RB
TlRfUE9PTCkgJiYgQVNTRU1CTEVSX0hBU19DT05TVEFOVF9QT09MCisgICAgaml0Lm1fYXNzZW1i
bGVyLmJ1ZmZlcigpLmZsdXNoQ29uc3RhbnRQb29sKCk7CisjZW5kaWYKICAgICBtX3N0YXJ0ID0g
aml0LmxhYmVsKCk7CiAgICAgc2l6ZV90IHN0YXJ0U2l6ZSA9IGppdC5tX2Fzc2VtYmxlci5idWZm
ZXIoKS5jb2RlU2l6ZSgpOwogICAgIG1fc2xvd1BhdGhKdW1wID0gaml0Lmp1bXAoKTsKICAgICBz
aXplX3QganVtcFNpemUgPSBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKSAtIHN0
YXJ0U2l6ZTsKICAgICBzaXplX3Qgbm9wc1RvRW1pdEluQnl0ZXMgPSBpbmxpbmVJQ1NpemUgLSBq
dW1wU2l6ZTsKLSAgICBqaXQuZW1pdE5vcHMobm9wc1RvRW1pdEluQnl0ZXMpOworICAgIGppdC5l
bWl0Tm9wcyhub3BzVG9FbWl0SW5CeXRlcywgdHJ1ZSk7CiAgICAgQVNTRVJUKGppdC5tX2Fzc2Vt
Ymxlci5idWZmZXIoKS5jb2RlU2l6ZSgpIC0gc3RhcnRTaXplID09IGlubGluZUlDU2l6ZSk7CiAg
ICAgbV9kb25lID0gaml0LmxhYmVsKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE1hdGhJQy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRo
SUMuaAppbmRleCBiODg1YTY2Li4zZWU4N2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE1hdGhJQy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
TWF0aElDLmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzaXplX3Qg
aW5saW5lU2l6ZSA9IGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpIC0gc3RhcnRT
aXplOwogICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oaW5saW5lU2l6ZSkg
PCBNYWNyb0Fzc2VtYmxlcjo6cGF0Y2hhYmxlSnVtcFNpemUoKSkgewogICAgICAgICAgICAgICAg
IHNpemVfdCBub3BzVG9FbWl0SW5CeXRlcyA9IE1hY3JvQXNzZW1ibGVyOjpwYXRjaGFibGVKdW1w
U2l6ZSgpIC0gaW5saW5lU2l6ZTsKLSAgICAgICAgICAgICAgICBqaXQuZW1pdE5vcHMobm9wc1Rv
RW1pdEluQnl0ZXMpOworICAgICAgICAgICAgICAgIGppdC5lbWl0Tm9wcyhub3BzVG9FbWl0SW5C
eXRlcywgdHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzdGF0ZS5zaG91bGRTbG93
UGF0aFJlcGF0Y2ggPSB0cnVlOwogICAgICAgICAgICAgc3RhdGUuZmFzdFBhdGhFbmQgPSBqaXQu
bGFiZWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IGYzNWE5NzMu
LjU4MGFhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtMTI5LDE0
ICsxMjksNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gYWN0aW9uRm9yQ2VsbChWTSYgdm0s
IEpTQ2VsbCogY2VsbCkKIAogc3RhdGljIGJvb2wgZm9yY2VJQ0ZhaWx1cmUoRXhlY1N0YXRlKikK
IHsKLSNpZiBDUFUoQVJNX1RSQURJVElPTkFMKQotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3
b3JrYXJvdW5kIG9uY2UgdGhlIHByb3BlciBmaXhlcyBhcmUgbGFuZGVkLgotICAgIC8vIFtBUk1d
IERpc2FibGUgSW5saW5lIENhY2hpbmcgb24gQVJNdjcgdHJhZGl0aW9uYWwgdW50aWwgcHJvcGVy
IGZpeAotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk3
NTkKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCiAgICAgcmV0dXJuIE9wdGlvbnM6OmZvcmNlSUNG
YWlsdXJlKCk7Ci0jZW5kaWYKIH0KIAogaW5saW5lIEZ1bmN0aW9uUHRyIGFwcHJvcHJpYXRlT3B0
aW1pemluZ0dldEJ5SWRGdW5jdGlvbihHZXRCeUlES2luZCBraW5kKQpAQCAtOTQwLDcgKzkzMyw3
IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAKICAgICBzdHViSml0LnJlc3RvcmVS
ZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEdQUkluZm86OnJlZ1Q0KTsKICAgICBBc3NlbWJseUhl
bHBlcnM6Okp1bXAgc2xvdyA9IHN0dWJKaXQuanVtcCgpOwotICAgICAgICAKKyAgICAKICAgICBM
aW5rQnVmZmVyIHBhdGNoQnVmZmVyKHN0dWJKaXQsIG93bmVyLCBKSVRDb21waWxhdGlvbkNhbkZh
aWwpOwogICAgIGlmIChwYXRjaEJ1ZmZlci5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7CiAgICAgICAg
IGxpbmtWaXJ0dWFsRm9yKGV4ZWMsIGNhbGxMaW5rSW5mbyk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>