<?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>177063</bug_id>
          
          <creation_ts>2017-09-17 18:33:32 -0700</creation_ts>
          <short_desc>Fill out vector types in WSL&apos;s standard library</short_desc>
          <delta_ts>2018-10-13 16:31:31 -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>New Bugs</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>
          
          <blocked>176199</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1349812</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-17 18:33:32 -0700</bug_when>
    <thetext>Fill out vector types in WSL&apos;s standard library</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349815</commentid>
    <comment_count>1</comment_count>
      <attachid>321063</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-17 19:06:29 -0700</bug_when>
    <thetext>Created attachment 321063
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349817</commentid>
    <comment_count>2</comment_count>
      <attachid>321065</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-17 19:08:04 -0700</bug_when>
    <thetext>Created attachment 321065
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349824</commentid>
    <comment_count>3</comment_count>
      <attachid>321065</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-17 19:58:46 -0700</bug_when>
    <thetext>Comment on attachment 321065
Patch

Let’s use generics. You can save a lot of typing by saying that int4/float4/etc are just vec4&lt;isn’t&gt;/etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349837</commentid>
    <comment_count>4</comment_count>
      <attachid>321075</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-17 21:54:52 -0700</bug_when>
    <thetext>Created attachment 321075
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349838</commentid>
    <comment_count>5</comment_count>
      <attachid>321075</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-17 22:01:50 -0700</bug_when>
    <thetext>Comment on attachment 321075
Patch

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

R=me if you add trap, assuming you thread it through everything the obvious way.

&gt; Tools/WebGPUShadingLanguageRI/StandardLibrary.js:141
&gt; +    return null;

How about you add a trap operation, that throws WTrapError the way that we currently do for OOB. 

We should talk about what “trap” means. I think it means that the shader returns prematurely, possibly leaving some output state unpopulated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350153</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-18 16:29:13 -0700</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #5)
&gt; Comment on attachment 321075 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=321075&amp;action=review
&gt; 
&gt; R=me if you add trap, assuming you thread it through everything the obvious
&gt; way.
&gt; 
&gt; &gt; Tools/WebGPUShadingLanguageRI/StandardLibrary.js:141
&gt; &gt; +    return null;
&gt; 
&gt; How about you add a trap operation, that throws WTrapError the way that we
&gt; currently do for OOB. 
&gt; 
&gt; We should talk about what “trap” means. I think it means that the shader
&gt; returns prematurely, possibly leaving some output state unpopulated.

I&apos;ll do the trap stuff in a subsequent patch. https://bugs.webkit.org/show_bug.cgi?id=177110</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350159</commentid>
    <comment_count>7</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-18 16:43:04 -0700</bug_when>
    <thetext>Committed r222191: &lt;http://trac.webkit.org/changeset/222191&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353416</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:28:52 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693352&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468923</commentid>
    <comment_count>9</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-13 16:31:31 -0700</bug_when>
    <thetext>Migrated to https://github.com/gpuweb/WHLSL/issues/125</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321063</attachid>
            <date>2017-09-17 19:06:29 -0700</date>
            <delta_ts>2017-09-17 19:07:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177063-20170917190628.patch</filename>
            <type>text/plain</type>
            <size>19665</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMTM4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTJjYWRjNDc2ZjYxMDhhNDE3NGFlMDFiZjAwZGQ0MzIz
ZGFjNDZhOC4uYzAwNzZhY2MzNWY0M2NiMDQ1ZjVmYzY3NGI0YzQ2NjZlOTAzMTU4NSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1
IEBACiAyMDE3LTA5LTE3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CiAKKyAgICAgICAgRmlsbCBvdXQgdmVjdG9yIHR5cGVzIGluIFdTTCdzIHN0YW5kYXJkIGxpYnJh
cnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzA2
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdyB0
aGF0IHdlIGhhdmUgc3RydWN0IHR5cGVzLCBvcGVyYXRvciZbXSwgYW5kIG9wZXJhdG9yPT0sIGZp
bGwgb3V0IGEgZmV3IG9mIHRoZSBidWlsdGluIHZlY3RvciB0eXBlcyBpbiB0aGUKKyAgICAgICAg
c3RhbmRhcmQgbGlicmFyeS4KKworICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0
YW5kYXJkTGlicmFyeS5qczoKKyAgICAgICAgKG9wZXJhdG9yLmludDIpOgorICAgICAgICAoYm9v
bC5vcGVyYXRvcik6CisgICAgICAgICh0aHJlYWQuaW50Lm9wZXJhdG9yKToKKyAgICAgICAgKG9w
ZXJhdG9yLmludDMpOgorICAgICAgICAob3BlcmF0b3IuaW50NCk6CisgICAgICAgIChvcGVyYXRv
ci51aW50Mik6CisgICAgICAgICh0aHJlYWQudWludC5vcGVyYXRvcik6CisgICAgICAgIChvcGVy
YXRvci51aW50Myk6CisgICAgICAgIChvcGVyYXRvci51aW50NCk6CisgICAgICAgIChvcGVyYXRv
ci5mbG9hdDIpOgorICAgICAgICAodGhyZWFkLmZsb2F0Lm9wZXJhdG9yKToKKyAgICAgICAgKG9w
ZXJhdG9yLmZsb2F0Myk6CisgICAgICAgIChvcGVyYXRvci5mbG9hdDQpOgorICAgICAgICAob3Bl
cmF0b3IuZG91YmxlMik6CisgICAgICAgICh0aHJlYWQuZG91YmxlLm9wZXJhdG9yKToKKyAgICAg
ICAgKG9wZXJhdG9yLmRvdWJsZTMpOgorICAgICAgICAob3BlcmF0b3IuZG91YmxlNCk6CisgICAg
ICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qczoKKworMjAxNy0wOS0xNyAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCiAgICAgICAgIFdTTCBuZWVk
cyBmbG9hdCBhbmQgZG91YmxlIHN1cHBvcnQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NzA1OAogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanMKaW5kZXggMDNlOTRjY2FmNDJhNzkzZWYxZTkwNzgw
Y2U3YWM1MzU0MGZhMWRlOS4uZmMzZjM2MGJlNGNmY2IwZjljZGIzMzcwNmZiMWUwNzIzOTRkYmQ3
MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJy
YXJ5LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFy
eS5qcwpAQCAtMTA5LDYgKzEwOSw2OTAgQEAgb3BlcmF0b3I8VDpFcXVhdGFibGU+IGJvb2woVCB4
KQogICAgIHJldHVybiB4ICE9IFQoKTsKIH0KIAorc3RydWN0IGludDIgeworICAgIGludCB4Owor
ICAgIGludCB5OworfQorCitvcGVyYXRvciBpbnQyKGludCB4LCBpbnQgeSkKK3sKKyAgICBpbnQy
IHJlc3VsdDsKKyAgICByZXN1bHQueCA9IHg7CisgICAgcmVzdWx0LnkgPSB5OworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK2Jvb2wgb3BlcmF0b3I9PShpbnQyIGEsIGludDIgYikKK3sKKyAgICBy
ZXR1cm4gYS54ID09IGIueCAmJiBhLnkgPT0gYi55OworfQorCit0aHJlYWQgaW50XiBvcGVyYXRv
ciZbXSh0aHJlYWQgaW50Ml4gZm9vLCB1aW50IGluZGV4KQoreworICAgIGlmIChpbmRleCA9PSAw
KQorICAgICAgICByZXR1cm4gJmZvby0+eDsKKyAgICBpZiAoaW5kZXggPT0gMSkKKyAgICAgICAg
cmV0dXJuICZmb28tPnk7CisgICAgcmV0dXJuIG51bGw7Cit9CisKK3N0cnVjdCBpbnQzIHsKKyAg
ICBpbnQgeDsKKyAgICBpbnQgeTsKKyAgICBpbnQgejsKK30KKworb3BlcmF0b3IgaW50MyhpbnQg
eCwgaW50IHksIGludCB6KQoreworICAgIGludDMgcmVzdWx0OworICAgIHJlc3VsdC54ID0geDsK
KyAgICByZXN1bHQueSA9IHk7CisgICAgcmVzdWx0LnogPSB6OworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK29wZXJhdG9yIGludDMoaW50MiBpMiwgaW50IHopCit7CisgICAgaW50MyByZXN1bHQ7
CisgICAgcmVzdWx0LnggPSBpMi54OworICAgIHJlc3VsdC55ID0gaTIueTsKKyAgICByZXN1bHQu
eiA9IHo7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworb3BlcmF0b3IgaW50MyhpbnQgeCwgaW50
MiBpMikKK3sKKyAgICBpbnQzIHJlc3VsdDsKKyAgICByZXN1bHQueCA9IHg7CisgICAgcmVzdWx0
LnkgPSBpMi54OworICAgIHJlc3VsdC56ID0gaTIueTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
Citib29sIG9wZXJhdG9yPT0oaW50MyBhLCBpbnQzIGIpCit7CisgICAgcmV0dXJuIGEueCA9PSBi
LnggJiYgYS55ID09IGIueSAmJiBhLnogPT0gYi56OworfQorCit0aHJlYWQgaW50XiBvcGVyYXRv
ciZbXSh0aHJlYWQgaW50M14gZm9vLCB1aW50IGluZGV4KQoreworICAgIGlmIChpbmRleCA9PSAw
KQorICAgICAgICByZXR1cm4gJmZvby0+eDsKKyAgICBpZiAoaW5kZXggPT0gMSkKKyAgICAgICAg
cmV0dXJuICZmb28tPnk7CisgICAgaWYgKGluZGV4ID09IDIpCisgICAgICAgIHJldHVybiAmZm9v
LT56OworICAgIHJldHVybiBudWxsOworfQorCitzdHJ1Y3QgaW50NCB7CisgICAgaW50IHg7Cisg
ICAgaW50IHk7CisgICAgaW50IHo7CisgICAgaW50IHc7Cit9CisKK29wZXJhdG9yIGludDQoaW50
IHgsIGludCB5LCBpbnQgeiwgaW50IHcpCit7CisgICAgaW50NCByZXN1bHQ7CisgICAgcmVzdWx0
LnggPSB4OworICAgIHJlc3VsdC55ID0geTsKKyAgICByZXN1bHQueiA9IHo7CisgICAgcmVzdWx0
LncgPSB3OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK29wZXJhdG9yIGludDQoaW50MiBpMiwg
aW50IHosIGludCB3KQoreworICAgIGludDQgcmVzdWx0OworICAgIHJlc3VsdC54ID0gaTIueDsK
KyAgICByZXN1bHQueSA9IGkyLnk7CisgICAgcmVzdWx0LnogPSB6OworICAgIHJlc3VsdC53ID0g
dzsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitvcGVyYXRvciBpbnQ0KGludCB4LCBpbnQyIGky
LCBpbnQgdykKK3sKKyAgICBpbnQ0IHJlc3VsdDsKKyAgICByZXN1bHQueCA9IHg7CisgICAgcmVz
dWx0LnkgPSBpMi54OworICAgIHJlc3VsdC56ID0gaTIueTsKKyAgICByZXN1bHQudyA9IHc7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworb3BlcmF0b3IgaW50NChpbnQgeCwgaW50IHksIGludDIg
aTIpCit7CisgICAgaW50NCByZXN1bHQ7CisgICAgcmVzdWx0LnggPSB4OworICAgIHJlc3VsdC55
ID0geTsKKyAgICByZXN1bHQueiA9IGkyLng7CisgICAgcmVzdWx0LncgPSBpMi55OworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK29wZXJhdG9yIGludDQoaW50MiBpMmEsIGludDIgaTJiKQorewor
ICAgIGludDQgcmVzdWx0OworICAgIHJlc3VsdC54ID0gaTJhLng7CisgICAgcmVzdWx0LnkgPSBp
MmEueTsKKyAgICByZXN1bHQueiA9IGkyYi54OworICAgIHJlc3VsdC53ID0gaTJiLnk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworb3BlcmF0b3IgaW50NChpbnQzIGkzLCBpbnQgdykKK3sKKyAg
ICBpbnQ0IHJlc3VsdDsKKyAgICByZXN1bHQueCA9IGkzLng7CisgICAgcmVzdWx0LnkgPSBpMy55
OworICAgIHJlc3VsdC56ID0gaTMuejsKKyAgICByZXN1bHQudyA9IHc7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworb3BlcmF0b3IgaW50NChpbnQgeCwgaW50MyBpMykKK3sKKyAgICBpbnQ0IHJl
c3VsdDsKKyAgICByZXN1bHQueCA9IHg7CisgICAgcmVzdWx0LnkgPSBpMy54OworICAgIHJlc3Vs
dC56ID0gaTMueTsKKyAgICByZXN1bHQudyA9IGkzLno7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworYm9vbCBvcGVyYXRvcj09KGludDQgYSwgaW50NCBiKQoreworICAgIHJldHVybiBhLnggPT0g
Yi54ICYmIGEueSA9PSBiLnkgJiYgYS56ID09IGIueiAmJiBhLncgPT0gYi53OworfQorCit0aHJl
YWQgaW50XiBvcGVyYXRvciZbXSh0aHJlYWQgaW50NF4gZm9vLCB1aW50IGluZGV4KQoreworICAg
IGlmIChpbmRleCA9PSAwKQorICAgICAgICByZXR1cm4gJmZvby0+eDsKKyAgICBpZiAoaW5kZXgg
PT0gMSkKKyAgICAgICAgcmV0dXJuICZmb28tPnk7CisgICAgaWYgKGluZGV4ID09IDIpCisgICAg
ICAgIHJldHVybiAmZm9vLT56OworICAgIGlmIChpbmRleCA9PSAzKQorICAgICAgICByZXR1cm4g
JmZvby0+dzsKKyAgICByZXR1cm4gbnVsbDsKK30KKworc3RydWN0IHVpbnQyIHsKKyAgICB1aW50
IHg7CisgICAgdWludCB5OworfQorCitvcGVyYXRvciB1aW50Mih1aW50IHgsIHVpbnQgeSkKK3sK
KyAgICB1aW50MiByZXN1bHQ7CisgICAgcmVzdWx0LnggPSB4OworICAgIHJlc3VsdC55ID0geTsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitib29sIG9wZXJhdG9yPT0odWludDIgYSwgdWludDIg
YikKK3sKKyAgICByZXR1cm4gYS54ID09IGIueCAmJiBhLnkgPT0gYi55OworfQorCit0aHJlYWQg
dWludF4gb3BlcmF0b3ImW10odGhyZWFkIHVpbnQyXiBmb28sIHVpbnQgaW5kZXgpCit7CisgICAg
aWYgKGluZGV4ID09IDApCisgICAgICAgIHJldHVybiAmZm9vLT54OworICAgIGlmIChpbmRleCA9
PSAxKQorICAgICAgICByZXR1cm4gJmZvby0+eTsKKyAgICByZXR1cm4gbnVsbDsKK30KKworc3Ry
dWN0IHVpbnQzIHsKKyAgICB1aW50IHg7CisgICAgdWludCB5OworICAgIHVpbnQgejsKK30KKwor
b3BlcmF0b3IgdWludDModWludCB4LCB1aW50IHksIHVpbnQgeikKK3sKKyAgICB1aW50MyByZXN1
bHQ7CisgICAgcmVzdWx0LnggPSB4OworICAgIHJlc3VsdC55ID0geTsKKyAgICByZXN1bHQueiA9
IHo7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworb3BlcmF0b3IgdWludDModWludDIgaTIsIHVp
bnQgeikKK3sKKyAgICB1aW50MyByZXN1bHQ7CisgICAgcmVzdWx0LnggPSBpMi54OworICAgIHJl
c3VsdC55ID0gaTIueTsKKyAgICByZXN1bHQueiA9IHo7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kworb3BlcmF0b3IgdWludDModWludCB4LCB1aW50MiBpMikKK3sKKyAgICB1aW50MyByZXN1bHQ7
CisgICAgcmVzdWx0LnggPSB4OworICAgIHJlc3VsdC55ID0gaTIueDsKKyAgICByZXN1bHQueiA9
IGkyLnk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworYm9vbCBvcGVyYXRvcj09KHVpbnQzIGEs
IHVpbnQzIGIpCit7CisgICAgcmV0dXJuIGEueCA9PSBiLnggJiYgYS55ID09IGIueSAmJiBhLnog
PT0gYi56OworfQorCit0aHJlYWQgdWludF4gb3BlcmF0b3ImW10odGhyZWFkIHVpbnQzXiBmb28s
IHVpbnQgaW5kZXgpCit7CisgICAgaWYgKGluZGV4ID09IDApCisgICAgICAgIHJldHVybiAmZm9v
LT54OworICAgIGlmIChpbmRleCA9PSAxKQorICAgICAgICByZXR1cm4gJmZvby0+eTsKKyAgICBp
ZiAoaW5kZXggPT0gMikKKyAgICAgICAgcmV0dXJuICZmb28tPno7CisgICAgcmV0dXJuIG51bGw7
Cit9CisKK3N0cnVjdCB1aW50NCB7CisgICAgdWludCB4OworICAgIHVpbnQgeTsKKyAgICB1aW50
IHo7CisgICAgdWludCB3OworfQorCitvcGVyYXRvciB1aW50NCh1aW50IHgsIHVpbnQgeSwgdWlu
dCB6LCB1aW50IHcpCit7CisgICAgdWludDQgcmVzdWx0OworICAgIHJlc3VsdC54ID0geDsKKyAg
ICByZXN1bHQueSA9IHk7CisgICAgcmVzdWx0LnogPSB6OworICAgIHJlc3VsdC53ID0gdzsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitvcGVyYXRvciB1aW50NCh1aW50MiBpMiwgdWludCB6LCB1
aW50IHcpCit7CisgICAgdWludDQgcmVzdWx0OworICAgIHJlc3VsdC54ID0gaTIueDsKKyAgICBy
ZXN1bHQueSA9IGkyLnk7CisgICAgcmVzdWx0LnogPSB6OworICAgIHJlc3VsdC53ID0gdzsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitvcGVyYXRvciB1aW50NCh1aW50IHgsIHVpbnQyIGkyLCB1
aW50IHcpCit7CisgICAgdWludDQgcmVzdWx0OworICAgIHJlc3VsdC54ID0geDsKKyAgICByZXN1
bHQueSA9IGkyLng7CisgICAgcmVzdWx0LnogPSBpMi55OworICAgIHJlc3VsdC53ID0gdzsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitvcGVyYXRvciB1aW50NCh1aW50IHgsIHVpbnQgeSwgdWlu
dDIgaTIpCit7CisgICAgdWludDQgcmVzdWx0OworICAgIHJlc3VsdC54ID0geDsKKyAgICByZXN1
bHQueSA9IHk7CisgICAgcmVzdWx0LnogPSBpMi54OworICAgIHJlc3VsdC53ID0gaTIueTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitvcGVyYXRvciB1aW50NCh1aW50MiBpMmEsIHVpbnQyIGky
YikKK3sKKyAgICB1aW50NCByZXN1bHQ7CisgICAgcmVzdWx0LnggPSBpMmEueDsKKyAgICByZXN1
bHQueSA9IGkyYS55OworICAgIHJlc3VsdC56ID0gaTJiLng7CisgICAgcmVzdWx0LncgPSBpMmIu
eTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitvcGVyYXRvciB1aW50NCh1aW50MyBpMywgdWlu
dCB3KQoreworICAgIHVpbnQ0IHJlc3VsdDsKKyAgICByZXN1bHQueCA9IGkzLng7CisgICAgcmVz
dWx0LnkgPSBpMy55OworICAgIHJlc3VsdC56ID0gaTMuejsKKyAgICByZXN1bHQudyA9IHc7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworb3BlcmF0b3IgdWludDQodWludCB4LCB1aW50MyBpMykK
K3sKKyAgICB1aW50NCByZXN1bHQ7CisgICAgcmVzdWx0LnggPSB4OworICAgIHJlc3VsdC55ID0g
aTMueDsKKyAgICByZXN1bHQueiA9IGkzLnk7CisgICAgcmVzdWx0LncgPSBpMy56OworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK2Jvb2wgb3BlcmF0b3I9PSh1aW50NCBhLCB1aW50NCBiKQorewor
ICAgIHJldHVybiBhLnggPT0gYi54ICYmIGEueSA9PSBiLnkgJiYgYS56ID09IGIueiAmJiBhLncg
PT0gYi53OworfQorCit0aHJlYWQgdWludF4gb3BlcmF0b3ImW10odGhyZWFkIHVpbnQ0XiBmb28s
IHVpbnQgaW5kZXgpCit7CisgICAgaWYgKGluZGV4ID09IDApCisgICAgICAgIHJldHVybiAmZm9v
LT54OworICAgIGlmIChpbmRleCA9PSAxKQorICAgICAgICByZXR1cm4gJmZvby0+eTsKKyAgICBp
ZiAoaW5kZXggPT0gMikKKyAgICAgICAgcmV0dXJuICZmb28tPno7CisgICAgaWYgKGluZGV4ID09
IDMpCisgICAgICAgIHJldHVybiAmZm9vLT53OworICAgIHJldHVybiBudWxsOworfQorCitzdHJ1
Y3QgZmxvYXQyIHsKKyAgICBmbG9hdCB4OworICAgIGZsb2F0IHk7Cit9CisKK29wZXJhdG9yIGZs
b2F0MihmbG9hdCB4LCBmbG9hdCB5KQoreworICAgIGZsb2F0MiByZXN1bHQ7CisgICAgcmVzdWx0
LnggPSB4OworICAgIHJlc3VsdC55ID0geTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitib29s
IG9wZXJhdG9yPT0oZmxvYXQyIGEsIGZsb2F0MiBiKQoreworICAgIHJldHVybiBhLnggPT0gYi54
ICYmIGEueSA9PSBiLnk7Cit9CisKK3RocmVhZCBmbG9hdF4gb3BlcmF0b3ImW10odGhyZWFkIGZs
b2F0Ml4gZm9vLCB1aW50IGluZGV4KQoreworICAgIGlmIChpbmRleCA9PSAwKQorICAgICAgICBy
ZXR1cm4gJmZvby0+eDsKKyAgICBpZiAoaW5kZXggPT0gMSkKKyAgICAgICAgcmV0dXJuICZmb28t
Pnk7CisgICAgcmV0dXJuIG51bGw7Cit9CisKK3N0cnVjdCBmbG9hdDMgeworICAgIGZsb2F0IHg7
CisgICAgZmxvYXQgeTsKKyAgICBmbG9hdCB6OworfQorCitvcGVyYXRvciBmbG9hdDMoZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgeikKK3sKKyAgICBmbG9hdDMgcmVzdWx0OworICAgIHJlc3VsdC54
ID0geDsKKyAgICByZXN1bHQueSA9IHk7CisgICAgcmVzdWx0LnogPSB6OworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK29wZXJhdG9yIGZsb2F0MyhmbG9hdDIgaTIsIGZsb2F0IHopCit7CisgICAg
ZmxvYXQzIHJlc3VsdDsKKyAgICByZXN1bHQueCA9IGkyLng7CisgICAgcmVzdWx0LnkgPSBpMi55
OworICAgIHJlc3VsdC56ID0gejsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitvcGVyYXRvciBm
bG9hdDMoZmxvYXQgeCwgZmxvYXQyIGkyKQoreworICAgIGZsb2F0MyByZXN1bHQ7CisgICAgcmVz
dWx0LnggPSB4OworICAgIHJlc3VsdC55ID0gaTIueDsKKyAgICByZXN1bHQueiA9IGkyLnk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworYm9vbCBvcGVyYXRvcj09KGZsb2F0MyBhLCBmbG9hdDMg
YikKK3sKKyAgICByZXR1cm4gYS54ID09IGIueCAmJiBhLnkgPT0gYi55ICYmIGEueiA9PSBiLno7
Cit9CisKK3RocmVhZCBmbG9hdF4gb3BlcmF0b3ImW10odGhyZWFkIGZsb2F0M14gZm9vLCB1aW50
IGluZGV4KQoreworICAgIGlmIChpbmRleCA9PSAwKQorICAgICAgICByZXR1cm4gJmZvby0+eDsK
KyAgICBpZiAoaW5kZXggPT0gMSkKKyAgICAgICAgcmV0dXJuICZmb28tPnk7CisgICAgaWYgKGlu
ZGV4ID09IDIpCisgICAgICAgIHJldHVybiAmZm9vLT56OworICAgIHJldHVybiBudWxsOworfQor
CitzdHJ1Y3QgZmxvYXQ0IHsKKyAgICBmbG9hdCB4OworICAgIGZsb2F0IHk7CisgICAgZmxvYXQg
ejsKKyAgICBmbG9hdCB3OworfQorCitvcGVyYXRvciBmbG9hdDQoZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgeiwgZmxvYXQgdykKK3sKKyAgICBmbG9hdDQgcmVzdWx0OworICAgIHJlc3VsdC54ID0g
eDsKKyAgICByZXN1bHQueSA9IHk7CisgICAgcmVzdWx0LnogPSB6OworICAgIHJlc3VsdC53ID0g
dzsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitvcGVyYXRvciBmbG9hdDQoZmxvYXQyIGkyLCBm
bG9hdCB6LCBmbG9hdCB3KQoreworICAgIGZsb2F0NCByZXN1bHQ7CisgICAgcmVzdWx0LnggPSBp
Mi54OworICAgIHJlc3VsdC55ID0gaTIueTsKKyAgICByZXN1bHQueiA9IHo7CisgICAgcmVzdWx0
LncgPSB3OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK29wZXJhdG9yIGZsb2F0NChmbG9hdCB4
LCBmbG9hdDIgaTIsIGZsb2F0IHcpCit7CisgICAgZmxvYXQ0IHJlc3VsdDsKKyAgICByZXN1bHQu
eCA9IHg7CisgICAgcmVzdWx0LnkgPSBpMi54OworICAgIHJlc3VsdC56ID0gaTIueTsKKyAgICBy
ZXN1bHQudyA9IHc7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworb3BlcmF0b3IgZmxvYXQ0KGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0MiBpMikKK3sKKyAgICBmbG9hdDQgcmVzdWx0OworICAgIHJl
c3VsdC54ID0geDsKKyAgICByZXN1bHQueSA9IHk7CisgICAgcmVzdWx0LnogPSBpMi54OworICAg
IHJlc3VsdC53ID0gaTIueTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitvcGVyYXRvciBmbG9h
dDQoZmxvYXQyIGkyYSwgZmxvYXQyIGkyYikKK3sKKyAgICBmbG9hdDQgcmVzdWx0OworICAgIHJl
c3VsdC54ID0gaTJhLng7CisgICAgcmVzdWx0LnkgPSBpMmEueTsKKyAgICByZXN1bHQueiA9IGky
Yi54OworICAgIHJlc3VsdC53ID0gaTJiLnk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworb3Bl
cmF0b3IgZmxvYXQ0KGZsb2F0MyBpMywgZmxvYXQgdykKK3sKKyAgICBmbG9hdDQgcmVzdWx0Owor
ICAgIHJlc3VsdC54ID0gaTMueDsKKyAgICByZXN1bHQueSA9IGkzLnk7CisgICAgcmVzdWx0Lnog
PSBpMy56OworICAgIHJlc3VsdC53ID0gdzsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitvcGVy
YXRvciBmbG9hdDQoZmxvYXQgeCwgZmxvYXQzIGkzKQoreworICAgIGZsb2F0NCByZXN1bHQ7Cisg
ICAgcmVzdWx0LnggPSB4OworICAgIHJlc3VsdC55ID0gaTMueDsKKyAgICByZXN1bHQueiA9IGkz
Lnk7CisgICAgcmVzdWx0LncgPSBpMy56OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jvb2wg
b3BlcmF0b3I9PShmbG9hdDQgYSwgZmxvYXQ0IGIpCit7CisgICAgcmV0dXJuIGEueCA9PSBiLngg
JiYgYS55ID09IGIueSAmJiBhLnogPT0gYi56ICYmIGEudyA9PSBiLnc7Cit9CisKK3RocmVhZCBm
bG9hdF4gb3BlcmF0b3ImW10odGhyZWFkIGZsb2F0NF4gZm9vLCB1aW50IGluZGV4KQoreworICAg
IGlmIChpbmRleCA9PSAwKQorICAgICAgICByZXR1cm4gJmZvby0+eDsKKyAgICBpZiAoaW5kZXgg
PT0gMSkKKyAgICAgICAgcmV0dXJuICZmb28tPnk7CisgICAgaWYgKGluZGV4ID09IDIpCisgICAg
ICAgIHJldHVybiAmZm9vLT56OworICAgIGlmIChpbmRleCA9PSAzKQorICAgICAgICByZXR1cm4g
JmZvby0+dzsKKyAgICByZXR1cm4gbnVsbDsKK30KKworc3RydWN0IGRvdWJsZTIgeworICAgIGRv
dWJsZSB4OworICAgIGRvdWJsZSB5OworfQorCitvcGVyYXRvciBkb3VibGUyKGRvdWJsZSB4LCBk
b3VibGUgeSkKK3sKKyAgICBkb3VibGUyIHJlc3VsdDsKKyAgICByZXN1bHQueCA9IHg7CisgICAg
cmVzdWx0LnkgPSB5OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jvb2wgb3BlcmF0b3I9PShk
b3VibGUyIGEsIGRvdWJsZTIgYikKK3sKKyAgICByZXR1cm4gYS54ID09IGIueCAmJiBhLnkgPT0g
Yi55OworfQorCit0aHJlYWQgZG91YmxlXiBvcGVyYXRvciZbXSh0aHJlYWQgZG91YmxlMl4gZm9v
LCB1aW50IGluZGV4KQoreworICAgIGlmIChpbmRleCA9PSAwKQorICAgICAgICByZXR1cm4gJmZv
by0+eDsKKyAgICBpZiAoaW5kZXggPT0gMSkKKyAgICAgICAgcmV0dXJuICZmb28tPnk7CisgICAg
cmV0dXJuIG51bGw7Cit9CisKK3N0cnVjdCBkb3VibGUzIHsKKyAgICBkb3VibGUgeDsKKyAgICBk
b3VibGUgeTsKKyAgICBkb3VibGUgejsKK30KKworb3BlcmF0b3IgZG91YmxlMyhkb3VibGUgeCwg
ZG91YmxlIHksIGRvdWJsZSB6KQoreworICAgIGRvdWJsZTMgcmVzdWx0OworICAgIHJlc3VsdC54
ID0geDsKKyAgICByZXN1bHQueSA9IHk7CisgICAgcmVzdWx0LnogPSB6OworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK29wZXJhdG9yIGRvdWJsZTMoZG91YmxlMiBpMiwgZG91YmxlIHopCit7Cisg
ICAgZG91YmxlMyByZXN1bHQ7CisgICAgcmVzdWx0LnggPSBpMi54OworICAgIHJlc3VsdC55ID0g
aTIueTsKKyAgICByZXN1bHQueiA9IHo7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworb3BlcmF0
b3IgZG91YmxlMyhkb3VibGUgeCwgZG91YmxlMiBpMikKK3sKKyAgICBkb3VibGUzIHJlc3VsdDsK
KyAgICByZXN1bHQueCA9IHg7CisgICAgcmVzdWx0LnkgPSBpMi54OworICAgIHJlc3VsdC56ID0g
aTIueTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitib29sIG9wZXJhdG9yPT0oZG91YmxlMyBh
LCBkb3VibGUzIGIpCit7CisgICAgcmV0dXJuIGEueCA9PSBiLnggJiYgYS55ID09IGIueSAmJiBh
LnogPT0gYi56OworfQorCit0aHJlYWQgZG91YmxlXiBvcGVyYXRvciZbXSh0aHJlYWQgZG91Ymxl
M14gZm9vLCB1aW50IGluZGV4KQoreworICAgIGlmIChpbmRleCA9PSAwKQorICAgICAgICByZXR1
cm4gJmZvby0+eDsKKyAgICBpZiAoaW5kZXggPT0gMSkKKyAgICAgICAgcmV0dXJuICZmb28tPnk7
CisgICAgaWYgKGluZGV4ID09IDIpCisgICAgICAgIHJldHVybiAmZm9vLT56OworICAgIHJldHVy
biBudWxsOworfQorCitzdHJ1Y3QgZG91YmxlNCB7CisgICAgZG91YmxlIHg7CisgICAgZG91Ymxl
IHk7CisgICAgZG91YmxlIHo7CisgICAgZG91YmxlIHc7Cit9CisKK29wZXJhdG9yIGRvdWJsZTQo
ZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeiwgZG91YmxlIHcpCit7CisgICAgZG91YmxlNCBy
ZXN1bHQ7CisgICAgcmVzdWx0LnggPSB4OworICAgIHJlc3VsdC55ID0geTsKKyAgICByZXN1bHQu
eiA9IHo7CisgICAgcmVzdWx0LncgPSB3OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK29wZXJh
dG9yIGRvdWJsZTQoZG91YmxlMiBpMiwgZG91YmxlIHosIGRvdWJsZSB3KQoreworICAgIGRvdWJs
ZTQgcmVzdWx0OworICAgIHJlc3VsdC54ID0gaTIueDsKKyAgICByZXN1bHQueSA9IGkyLnk7Cisg
ICAgcmVzdWx0LnogPSB6OworICAgIHJlc3VsdC53ID0gdzsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitvcGVyYXRvciBkb3VibGU0KGRvdWJsZSB4LCBkb3VibGUyIGkyLCBkb3VibGUgdykKK3sK
KyAgICBkb3VibGU0IHJlc3VsdDsKKyAgICByZXN1bHQueCA9IHg7CisgICAgcmVzdWx0LnkgPSBp
Mi54OworICAgIHJlc3VsdC56ID0gaTIueTsKKyAgICByZXN1bHQudyA9IHc7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworb3BlcmF0b3IgZG91YmxlNChkb3VibGUgeCwgZG91YmxlIHksIGRvdWJs
ZTIgaTIpCit7CisgICAgZG91YmxlNCByZXN1bHQ7CisgICAgcmVzdWx0LnggPSB4OworICAgIHJl
c3VsdC55ID0geTsKKyAgICByZXN1bHQueiA9IGkyLng7CisgICAgcmVzdWx0LncgPSBpMi55Owor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK29wZXJhdG9yIGRvdWJsZTQoZG91YmxlMiBpMmEsIGRv
dWJsZTIgaTJiKQoreworICAgIGRvdWJsZTQgcmVzdWx0OworICAgIHJlc3VsdC54ID0gaTJhLng7
CisgICAgcmVzdWx0LnkgPSBpMmEueTsKKyAgICByZXN1bHQueiA9IGkyYi54OworICAgIHJlc3Vs
dC53ID0gaTJiLnk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworb3BlcmF0b3IgZG91YmxlNChk
b3VibGUzIGkzLCBkb3VibGUgdykKK3sKKyAgICBkb3VibGU0IHJlc3VsdDsKKyAgICByZXN1bHQu
eCA9IGkzLng7CisgICAgcmVzdWx0LnkgPSBpMy55OworICAgIHJlc3VsdC56ID0gaTMuejsKKyAg
ICByZXN1bHQudyA9IHc7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworb3BlcmF0b3IgZG91Ymxl
NChkb3VibGUgeCwgZG91YmxlMyBpMykKK3sKKyAgICBkb3VibGU0IHJlc3VsdDsKKyAgICByZXN1
bHQueCA9IHg7CisgICAgcmVzdWx0LnkgPSBpMy54OworICAgIHJlc3VsdC56ID0gaTMueTsKKyAg
ICByZXN1bHQudyA9IGkzLno7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworYm9vbCBvcGVyYXRv
cj09KGRvdWJsZTQgYSwgZG91YmxlNCBiKQoreworICAgIHJldHVybiBhLnggPT0gYi54ICYmIGEu
eSA9PSBiLnkgJiYgYS56ID09IGIueiAmJiBhLncgPT0gYi53OworfQorCit0aHJlYWQgZG91Ymxl
XiBvcGVyYXRvciZbXSh0aHJlYWQgZG91YmxlNF4gZm9vLCB1aW50IGluZGV4KQoreworICAgIGlm
IChpbmRleCA9PSAwKQorICAgICAgICByZXR1cm4gJmZvby0+eDsKKyAgICBpZiAoaW5kZXggPT0g
MSkKKyAgICAgICAgcmV0dXJuICZmb28tPnk7CisgICAgaWYgKGluZGV4ID09IDIpCisgICAgICAg
IHJldHVybiAmZm9vLT56OworICAgIGlmIChpbmRleCA9PSAzKQorICAgICAgICByZXR1cm4gJmZv
by0+dzsKKyAgICByZXR1cm4gbnVsbDsKK30KKwogbmF0aXZlIHRocmVhZCBUXiBvcGVyYXRvciZb
XTxUPih0aHJlYWQgVFtdLCB1aW50KTsKIG5hdGl2ZSB0aHJlYWRncm91cCBUXiBvcGVyYXRvciZb
XTxUOnByaW1pdGl2ZT4odGhyZWFkZ3JvdXAgVFtdLCB1aW50KTsKIG5hdGl2ZSBkZXZpY2UgVF4g
b3BlcmF0b3ImW108VDpwcmltaXRpdmU+KGRldmljZSBUW10sIHVpbnQpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1Rlc3QuanMKaW5kZXggZTExYzA0YjI0NjZhNDIwZTIzNWYxZjJiOThhNDI2
N2EyZDFmNzZiNy4uN2NmYzI3ZTQxOTBiNGZhMThiNGI1YmQ1MmZhYjhiODMwYmVkNjUxYyAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcworKysgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCkBAIC0yNzkwLDYgKzI3OTAsMTg4IEBA
IGZ1bmN0aW9uIFRFU1RfZmxvYXRNYXRoKCkKICAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBX
VHlwZUVycm9yKTsKIH0KIAorZnVuY3Rpb24gVEVTVF9idWlsdGluVmVjdG9ycygpCit7CisgICAg
bGV0IHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAgICBpbnQgZm9vKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaW50MiBhID0gaW50MigzLCA0KTsKKyAgICAgICAgICAgIHJldHVybiBhWzBdOwor
ICAgICAgICB9CisgICAgICAgIGludCBmb28yKCkKKyAgICAgICAgeworICAgICAgICAgICAgaW50
MiBhID0gaW50MigzLCA0KTsKKyAgICAgICAgICAgIGludDMgYiA9IGludDMoYSwgNSk7CisgICAg
ICAgICAgICByZXR1cm4gYlsxXTsKKyAgICAgICAgfQorICAgICAgICBpbnQgZm9vMygpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGludDMgYSA9IGludDMoMywgNCwgNSk7CisgICAgICAgICAgICBp
bnQ0IGIgPSBpbnQ0KDYsIGEpOworICAgICAgICAgICAgcmV0dXJuIGJbMV07CisgICAgICAgIH0K
KyAgICAgICAgaW50IGZvbzQoKQorICAgICAgICB7CisgICAgICAgICAgICBpbnQyIGEgPSBpbnQy
KDMsIDQpOworICAgICAgICAgICAgaW50MiBiID0gaW50Mig1LCA2KTsKKyAgICAgICAgICAgIGlu
dDQgYyA9IGludDQoYSwgYik7CisgICAgICAgICAgICByZXR1cm4gY1syXTsKKyAgICAgICAgfQor
ICAgICAgICBib29sIGZvbzUoKQorICAgICAgICB7CisgICAgICAgICAgICBpbnQ0IGEgPSBpbnQ0
KDMsIDQsIDUsIDYpOworICAgICAgICAgICAgaW50MiBiID0gaW50Mig0LCA1KTsKKyAgICAgICAg
ICAgIGludDQgYyA9IGludDQoMywgYiwgNik7CisgICAgICAgICAgICByZXR1cm4gYSA9PSBjOwor
ICAgICAgICB9CisgICAgICAgIGJvb2wgZm9vNigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlu
dDIgYSA9IGludDIoNCwgNSk7CisgICAgICAgICAgICBpbnQzIGIgPSBpbnQzKDMsIGEpOworICAg
ICAgICAgICAgaW50MyBjID0gaW50MygzLCA0LCA2KTsKKyAgICAgICAgICAgIHJldHVybiBiID09
IGM7CisgICAgICAgIH0KKyAgICAgICAgdWludCBmb291KCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdWludDIgYSA9IHVpbnQyKDMsIDQpOworICAgICAgICAgICAgcmV0dXJuIGFbMF07CisgICAg
ICAgIH0KKyAgICAgICAgdWludCBmb291MigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHVpbnQy
IGEgPSB1aW50MigzLCA0KTsKKyAgICAgICAgICAgIHVpbnQzIGIgPSB1aW50MyhhLCA1KTsKKyAg
ICAgICAgICAgIHJldHVybiBiWzFdOworICAgICAgICB9CisgICAgICAgIHVpbnQgZm9vdTMoKQor
ICAgICAgICB7CisgICAgICAgICAgICB1aW50MyBhID0gdWludDMoMywgNCwgNSk7CisgICAgICAg
ICAgICB1aW50NCBiID0gdWludDQoNiwgYSk7CisgICAgICAgICAgICByZXR1cm4gYlsxXTsKKyAg
ICAgICAgfQorICAgICAgICB1aW50IGZvb3U0KCkKKyAgICAgICAgeworICAgICAgICAgICAgdWlu
dDIgYSA9IHVpbnQyKDMsIDQpOworICAgICAgICAgICAgdWludDIgYiA9IHVpbnQyKDUsIDYpOwor
ICAgICAgICAgICAgdWludDQgYyA9IHVpbnQ0KGEsIGIpOworICAgICAgICAgICAgcmV0dXJuIGNb
Ml07CisgICAgICAgIH0KKyAgICAgICAgYm9vbCBmb291NSgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHVpbnQ0IGEgPSB1aW50NCgzLCA0LCA1LCA2KTsKKyAgICAgICAgICAgIHVpbnQyIGIgPSB1
aW50Mig0LCA1KTsKKyAgICAgICAgICAgIHVpbnQ0IGMgPSB1aW50NCgzLCBiLCA2KTsKKyAgICAg
ICAgICAgIHJldHVybiBhID09IGM7CisgICAgICAgIH0KKyAgICAgICAgYm9vbCBmb291NigpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHVpbnQyIGEgPSB1aW50Mig0LCA1KTsKKyAgICAgICAgICAg
IHVpbnQzIGIgPSB1aW50MygzLCBhKTsKKyAgICAgICAgICAgIHVpbnQzIGMgPSB1aW50MygzLCA0
LCA2KTsKKyAgICAgICAgICAgIHJldHVybiBiID09IGM7CisgICAgICAgIH0KKyAgICAgICAgZmxv
YXQgZm9vZigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZsb2F0MiBhID0gZmxvYXQyKDMuLCA0
Lik7CisgICAgICAgICAgICByZXR1cm4gYVswXTsKKyAgICAgICAgfQorICAgICAgICBmbG9hdCBm
b29mMigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZsb2F0MiBhID0gZmxvYXQyKDMuLCA0Lik7
CisgICAgICAgICAgICBmbG9hdDMgYiA9IGZsb2F0MyhhLCA1Lik7CisgICAgICAgICAgICByZXR1
cm4gYlsxXTsKKyAgICAgICAgfQorICAgICAgICBmbG9hdCBmb29mMygpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGZsb2F0MyBhID0gZmxvYXQzKDMuLCA0LiwgNS4pOworICAgICAgICAgICAgZmxv
YXQ0IGIgPSBmbG9hdDQoNi4sIGEpOworICAgICAgICAgICAgcmV0dXJuIGJbMV07CisgICAgICAg
IH0KKyAgICAgICAgZmxvYXQgZm9vZjQoKQorICAgICAgICB7CisgICAgICAgICAgICBmbG9hdDIg
YSA9IGZsb2F0MigzLiwgNC4pOworICAgICAgICAgICAgZmxvYXQyIGIgPSBmbG9hdDIoNS4sIDYu
KTsKKyAgICAgICAgICAgIGZsb2F0NCBjID0gZmxvYXQ0KGEsIGIpOworICAgICAgICAgICAgcmV0
dXJuIGNbMl07CisgICAgICAgIH0KKyAgICAgICAgYm9vbCBmb29mNSgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGZsb2F0NCBhID0gZmxvYXQ0KDMuLCA0LiwgNS4sIDYuKTsKKyAgICAgICAgICAg
IGZsb2F0MiBiID0gZmxvYXQyKDQuLCA1Lik7CisgICAgICAgICAgICBmbG9hdDQgYyA9IGZsb2F0
NCgzLiwgYiwgNi4pOworICAgICAgICAgICAgcmV0dXJuIGEgPT0gYzsKKyAgICAgICAgfQorICAg
ICAgICBib29sIGZvb2Y2KCkKKyAgICAgICAgeworICAgICAgICAgICAgZmxvYXQyIGEgPSBmbG9h
dDIoNC4sIDUuKTsKKyAgICAgICAgICAgIGZsb2F0MyBiID0gZmxvYXQzKDMuLCBhKTsKKyAgICAg
ICAgICAgIGZsb2F0MyBjID0gZmxvYXQzKDMuLCA0LiwgNi4pOworICAgICAgICAgICAgcmV0dXJu
IGIgPT0gYzsKKyAgICAgICAgfQorICAgICAgICBkb3VibGUgZm9vZCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRvdWJsZTIgYSA9IGRvdWJsZTIoMy4sIDQuKTsKKyAgICAgICAgICAgIHJldHVy
biBhWzBdOworICAgICAgICB9CisgICAgICAgIGRvdWJsZSBmb29kMigpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRvdWJsZTIgYSA9IGRvdWJsZTIoMy4sIDQuKTsKKyAgICAgICAgICAgIGRvdWJs
ZTMgYiA9IGRvdWJsZTMoYSwgNS4pOworICAgICAgICAgICAgcmV0dXJuIGJbMV07CisgICAgICAg
IH0KKyAgICAgICAgZG91YmxlIGZvb2QzKCkKKyAgICAgICAgeworICAgICAgICAgICAgZG91Ymxl
MyBhID0gZG91YmxlMygzLiwgNC4sIDUuKTsKKyAgICAgICAgICAgIGRvdWJsZTQgYiA9IGRvdWJs
ZTQoNi4sIGEpOworICAgICAgICAgICAgcmV0dXJuIGJbMV07CisgICAgICAgIH0KKyAgICAgICAg
ZG91YmxlIGZvb2Q0KCkKKyAgICAgICAgeworICAgICAgICAgICAgZG91YmxlMiBhID0gZG91Ymxl
MigzLiwgNC4pOworICAgICAgICAgICAgZG91YmxlMiBiID0gZG91YmxlMig1LiwgNi4pOworICAg
ICAgICAgICAgZG91YmxlNCBjID0gZG91YmxlNChhLCBiKTsKKyAgICAgICAgICAgIHJldHVybiBj
WzJdOworICAgICAgICB9CisgICAgICAgIGJvb2wgZm9vZDUoKQorICAgICAgICB7CisgICAgICAg
ICAgICBkb3VibGU0IGEgPSBkb3VibGU0KDMuLCA0LiwgNS4sIDYuKTsKKyAgICAgICAgICAgIGRv
dWJsZTIgYiA9IGRvdWJsZTIoNC4sIDUuKTsKKyAgICAgICAgICAgIGRvdWJsZTQgYyA9IGRvdWJs
ZTQoMy4sIGIsIDYuKTsKKyAgICAgICAgICAgIHJldHVybiBhID09IGM7CisgICAgICAgIH0KKyAg
ICAgICAgYm9vbCBmb29kNigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRvdWJsZTIgYSA9IGRv
dWJsZTIoNC4sIDUuKTsKKyAgICAgICAgICAgIGRvdWJsZTMgYiA9IGRvdWJsZTMoMy4sIGEpOwor
ICAgICAgICAgICAgZG91YmxlMyBjID0gZG91YmxlMygzLiwgNC4sIDYuKTsKKyAgICAgICAgICAg
IHJldHVybiBiID09IGM7CisgICAgICAgIH0KKyAgICBgKTsKKyAgICBjaGVja0ludChwcm9ncmFt
LCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbXSksIDMpOworICAgIGNoZWNrSW50
KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vMiIsIFtdLCBbXSksIDQpOworICAg
IGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vMyIsIFtdLCBbXSks
IDMpOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vNCIs
IFtdLCBbXSksIDUpOworICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbzUiLCBbXSwgW10pLCB0cnVlKTsKKyAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1
bmN0aW9uKHByb2dyYW0sICJmb282IiwgW10sIFtdKSwgZmFsc2UpOworICAgIGNoZWNrVWludChw
cm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvb3UiLCBbXSwgW10pLCAzKTsKKyAgICBj
aGVja1VpbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb291MiIsIFtdLCBbXSks
IDQpOworICAgIGNoZWNrVWludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvb3Uz
IiwgW10sIFtdKSwgMyk7CisgICAgY2hlY2tVaW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9n
cmFtLCAiZm9vdTQiLCBbXSwgW10pLCA1KTsKKyAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1
bmN0aW9uKHByb2dyYW0sICJmb291NSIsIFtdLCBbXSksIHRydWUpOworICAgIGNoZWNrQm9vbChw
cm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvb3U2IiwgW10sIFtdKSwgZmFsc2UpOwor
ICAgIGNoZWNrRmxvYXQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb29mIiwgW10s
IFtdKSwgMyk7CisgICAgY2hlY2tGbG9hdChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwg
ImZvb2YyIiwgW10sIFtdKSwgNCk7CisgICAgY2hlY2tGbG9hdChwcm9ncmFtLCBjYWxsRnVuY3Rp
b24ocHJvZ3JhbSwgImZvb2YzIiwgW10sIFtdKSwgMyk7CisgICAgY2hlY2tGbG9hdChwcm9ncmFt
LCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvb2Y0IiwgW10sIFtdKSwgNSk7CisgICAgY2hlY2tC
b29sKHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vZjUiLCBbXSwgW10pLCB0cnVl
KTsKKyAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb29mNiIs
IFtdLCBbXSksIGZhbHNlKTsKKyAgICBjaGVja0RvdWJsZShwcm9ncmFtLCBjYWxsRnVuY3Rpb24o
cHJvZ3JhbSwgImZvb2QiLCBbXSwgW10pLCAzKTsKKyAgICBjaGVja0RvdWJsZShwcm9ncmFtLCBj
YWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvb2QyIiwgW10sIFtdKSwgNCk7CisgICAgY2hlY2tEb3Vi
bGUocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb29kMyIsIFtdLCBbXSksIDMpOwor
ICAgIGNoZWNrRG91YmxlKHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vZDQiLCBb
XSwgW10pLCA1KTsKKyAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0s
ICJmb29kNSIsIFtdLCBbXSksIHRydWUpOworICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVu
Y3Rpb24ocHJvZ3JhbSwgImZvb2Q2IiwgW10sIFtdKSwgZmFsc2UpOworfQorCiBsZXQgZmlsdGVy
ID0gLy4qLzsgLy8gcnVuIGV2ZXJ5dGhpbmcgYnkgZGVmYXVsdAogaWYgKHRoaXNbImFyZ3VtZW50
cyJdKSB7CiAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321065</attachid>
            <date>2017-09-17 19:08:04 -0700</date>
            <delta_ts>2017-09-17 21:54:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177063-20170917190803.patch</filename>
            <type>text/plain</type>
            <size>19758</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMTM4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTJjYWRjNDc2ZjYxMDhhNDE3NGFlMDFiZjAwZGQ0MzIz
ZGFjNDZhOC4uYmViOTJmNTlhMWZiYTcyOTExYWYzMWE3NDhlZmM3NGM2MmE4YWQzOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM3
IEBACiAyMDE3LTA5LTE3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CiAKKyAgICAgICAgRmlsbCBvdXQgdmVjdG9yIHR5cGVzIGluIFdTTCdzIHN0YW5kYXJkIGxpYnJh
cnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzA2
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdyB0
aGF0IHdlIGhhdmUgc3RydWN0IHR5cGVzLCBvcGVyYXRvciZbXSwgYW5kIG9wZXJhdG9yPT0sIGZp
bGwgb3V0IGEgZmV3IG9mIHRoZSBidWlsdGluIHZlY3RvciB0eXBlcyBpbiB0aGUKKyAgICAgICAg
c3RhbmRhcmQgbGlicmFyeS4KKworICAgICAgICBUaGlzIHBhdGNoIGRvZXMgbm90IGluY2x1ZGUg
dGhlIHN3aXp6bGluZyBvcGVyYXRvcnMsIHNvIHlvdSBjYW4ndCBzYXkgZmxvYXQ0Lnl6dy4KKwor
ICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qczoKKyAg
ICAgICAgKG9wZXJhdG9yLmludDIpOgorICAgICAgICAoYm9vbC5vcGVyYXRvcik6CisgICAgICAg
ICh0aHJlYWQuaW50Lm9wZXJhdG9yKToKKyAgICAgICAgKG9wZXJhdG9yLmludDMpOgorICAgICAg
ICAob3BlcmF0b3IuaW50NCk6CisgICAgICAgIChvcGVyYXRvci51aW50Mik6CisgICAgICAgICh0
aHJlYWQudWludC5vcGVyYXRvcik6CisgICAgICAgIChvcGVyYXRvci51aW50Myk6CisgICAgICAg
IChvcGVyYXRvci51aW50NCk6CisgICAgICAgIChvcGVyYXRvci5mbG9hdDIpOgorICAgICAgICAo
dGhyZWFkLmZsb2F0Lm9wZXJhdG9yKToKKyAgICAgICAgKG9wZXJhdG9yLmZsb2F0Myk6CisgICAg
ICAgIChvcGVyYXRvci5mbG9hdDQpOgorICAgICAgICAob3BlcmF0b3IuZG91YmxlMik6CisgICAg
ICAgICh0aHJlYWQuZG91YmxlLm9wZXJhdG9yKToKKyAgICAgICAgKG9wZXJhdG9yLmRvdWJsZTMp
OgorICAgICAgICAob3BlcmF0b3IuZG91YmxlNCk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvVGVzdC5qczoKKworMjAxNy0wOS0xNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgorCiAgICAgICAgIFdTTCBuZWVkcyBmbG9hdCBhbmQgZG91YmxlIHN1
cHBvcnQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NzA1OAogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFy
ZExpYnJhcnkuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJh
cnkuanMKaW5kZXggMDNlOTRjY2FmNDJhNzkzZWYxZTkwNzgwY2U3YWM1MzU0MGZhMWRlOS4uZmMz
ZjM2MGJlNGNmY2IwZjljZGIzMzcwNmZiMWUwNzIzOTRkYmQ3MyAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzCisrKyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qcwpAQCAtMTA5LDYgKzEwOSw2
OTAgQEAgb3BlcmF0b3I8VDpFcXVhdGFibGU+IGJvb2woVCB4KQogICAgIHJldHVybiB4ICE9IFQo
KTsKIH0KIAorc3RydWN0IGludDIgeworICAgIGludCB4OworICAgIGludCB5OworfQorCitvcGVy
YXRvciBpbnQyKGludCB4LCBpbnQgeSkKK3sKKyAgICBpbnQyIHJlc3VsdDsKKyAgICByZXN1bHQu
eCA9IHg7CisgICAgcmVzdWx0LnkgPSB5OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jvb2wg
b3BlcmF0b3I9PShpbnQyIGEsIGludDIgYikKK3sKKyAgICByZXR1cm4gYS54ID09IGIueCAmJiBh
LnkgPT0gYi55OworfQorCit0aHJlYWQgaW50XiBvcGVyYXRvciZbXSh0aHJlYWQgaW50Ml4gZm9v
LCB1aW50IGluZGV4KQoreworICAgIGlmIChpbmRleCA9PSAwKQorICAgICAgICByZXR1cm4gJmZv
by0+eDsKKyAgICBpZiAoaW5kZXggPT0gMSkKKyAgICAgICAgcmV0dXJuICZmb28tPnk7CisgICAg
cmV0dXJuIG51bGw7Cit9CisKK3N0cnVjdCBpbnQzIHsKKyAgICBpbnQgeDsKKyAgICBpbnQgeTsK
KyAgICBpbnQgejsKK30KKworb3BlcmF0b3IgaW50MyhpbnQgeCwgaW50IHksIGludCB6KQorewor
ICAgIGludDMgcmVzdWx0OworICAgIHJlc3VsdC54ID0geDsKKyAgICByZXN1bHQueSA9IHk7Cisg
ICAgcmVzdWx0LnogPSB6OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK29wZXJhdG9yIGludDMo
aW50MiBpMiwgaW50IHopCit7CisgICAgaW50MyByZXN1bHQ7CisgICAgcmVzdWx0LnggPSBpMi54
OworICAgIHJlc3VsdC55ID0gaTIueTsKKyAgICByZXN1bHQueiA9IHo7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworb3BlcmF0b3IgaW50MyhpbnQgeCwgaW50MiBpMikKK3sKKyAgICBpbnQzIHJl
c3VsdDsKKyAgICByZXN1bHQueCA9IHg7CisgICAgcmVzdWx0LnkgPSBpMi54OworICAgIHJlc3Vs
dC56ID0gaTIueTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitib29sIG9wZXJhdG9yPT0oaW50
MyBhLCBpbnQzIGIpCit7CisgICAgcmV0dXJuIGEueCA9PSBiLnggJiYgYS55ID09IGIueSAmJiBh
LnogPT0gYi56OworfQorCit0aHJlYWQgaW50XiBvcGVyYXRvciZbXSh0aHJlYWQgaW50M14gZm9v
LCB1aW50IGluZGV4KQoreworICAgIGlmIChpbmRleCA9PSAwKQorICAgICAgICByZXR1cm4gJmZv
by0+eDsKKyAgICBpZiAoaW5kZXggPT0gMSkKKyAgICAgICAgcmV0dXJuICZmb28tPnk7CisgICAg
aWYgKGluZGV4ID09IDIpCisgICAgICAgIHJldHVybiAmZm9vLT56OworICAgIHJldHVybiBudWxs
OworfQorCitzdHJ1Y3QgaW50NCB7CisgICAgaW50IHg7CisgICAgaW50IHk7CisgICAgaW50IHo7
CisgICAgaW50IHc7Cit9CisKK29wZXJhdG9yIGludDQoaW50IHgsIGludCB5LCBpbnQgeiwgaW50
IHcpCit7CisgICAgaW50NCByZXN1bHQ7CisgICAgcmVzdWx0LnggPSB4OworICAgIHJlc3VsdC55
ID0geTsKKyAgICByZXN1bHQueiA9IHo7CisgICAgcmVzdWx0LncgPSB3OworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK29wZXJhdG9yIGludDQoaW50MiBpMiwgaW50IHosIGludCB3KQoreworICAg
IGludDQgcmVzdWx0OworICAgIHJlc3VsdC54ID0gaTIueDsKKyAgICByZXN1bHQueSA9IGkyLnk7
CisgICAgcmVzdWx0LnogPSB6OworICAgIHJlc3VsdC53ID0gdzsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitvcGVyYXRvciBpbnQ0KGludCB4LCBpbnQyIGkyLCBpbnQgdykKK3sKKyAgICBpbnQ0
IHJlc3VsdDsKKyAgICByZXN1bHQueCA9IHg7CisgICAgcmVzdWx0LnkgPSBpMi54OworICAgIHJl
c3VsdC56ID0gaTIueTsKKyAgICByZXN1bHQudyA9IHc7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kworb3BlcmF0b3IgaW50NChpbnQgeCwgaW50IHksIGludDIgaTIpCit7CisgICAgaW50NCByZXN1
bHQ7CisgICAgcmVzdWx0LnggPSB4OworICAgIHJlc3VsdC55ID0geTsKKyAgICByZXN1bHQueiA9
IGkyLng7CisgICAgcmVzdWx0LncgPSBpMi55OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK29w
ZXJhdG9yIGludDQoaW50MiBpMmEsIGludDIgaTJiKQoreworICAgIGludDQgcmVzdWx0OworICAg
IHJlc3VsdC54ID0gaTJhLng7CisgICAgcmVzdWx0LnkgPSBpMmEueTsKKyAgICByZXN1bHQueiA9
IGkyYi54OworICAgIHJlc3VsdC53ID0gaTJiLnk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
b3BlcmF0b3IgaW50NChpbnQzIGkzLCBpbnQgdykKK3sKKyAgICBpbnQ0IHJlc3VsdDsKKyAgICBy
ZXN1bHQueCA9IGkzLng7CisgICAgcmVzdWx0LnkgPSBpMy55OworICAgIHJlc3VsdC56ID0gaTMu
ejsKKyAgICByZXN1bHQudyA9IHc7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworb3BlcmF0b3Ig
aW50NChpbnQgeCwgaW50MyBpMykKK3sKKyAgICBpbnQ0IHJlc3VsdDsKKyAgICByZXN1bHQueCA9
IHg7CisgICAgcmVzdWx0LnkgPSBpMy54OworICAgIHJlc3VsdC56ID0gaTMueTsKKyAgICByZXN1
bHQudyA9IGkzLno7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworYm9vbCBvcGVyYXRvcj09KGlu
dDQgYSwgaW50NCBiKQoreworICAgIHJldHVybiBhLnggPT0gYi54ICYmIGEueSA9PSBiLnkgJiYg
YS56ID09IGIueiAmJiBhLncgPT0gYi53OworfQorCit0aHJlYWQgaW50XiBvcGVyYXRvciZbXSh0
aHJlYWQgaW50NF4gZm9vLCB1aW50IGluZGV4KQoreworICAgIGlmIChpbmRleCA9PSAwKQorICAg
ICAgICByZXR1cm4gJmZvby0+eDsKKyAgICBpZiAoaW5kZXggPT0gMSkKKyAgICAgICAgcmV0dXJu
ICZmb28tPnk7CisgICAgaWYgKGluZGV4ID09IDIpCisgICAgICAgIHJldHVybiAmZm9vLT56Owor
ICAgIGlmIChpbmRleCA9PSAzKQorICAgICAgICByZXR1cm4gJmZvby0+dzsKKyAgICByZXR1cm4g
bnVsbDsKK30KKworc3RydWN0IHVpbnQyIHsKKyAgICB1aW50IHg7CisgICAgdWludCB5OworfQor
CitvcGVyYXRvciB1aW50Mih1aW50IHgsIHVpbnQgeSkKK3sKKyAgICB1aW50MiByZXN1bHQ7Cisg
ICAgcmVzdWx0LnggPSB4OworICAgIHJlc3VsdC55ID0geTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitib29sIG9wZXJhdG9yPT0odWludDIgYSwgdWludDIgYikKK3sKKyAgICByZXR1cm4gYS54
ID09IGIueCAmJiBhLnkgPT0gYi55OworfQorCit0aHJlYWQgdWludF4gb3BlcmF0b3ImW10odGhy
ZWFkIHVpbnQyXiBmb28sIHVpbnQgaW5kZXgpCit7CisgICAgaWYgKGluZGV4ID09IDApCisgICAg
ICAgIHJldHVybiAmZm9vLT54OworICAgIGlmIChpbmRleCA9PSAxKQorICAgICAgICByZXR1cm4g
JmZvby0+eTsKKyAgICByZXR1cm4gbnVsbDsKK30KKworc3RydWN0IHVpbnQzIHsKKyAgICB1aW50
IHg7CisgICAgdWludCB5OworICAgIHVpbnQgejsKK30KKworb3BlcmF0b3IgdWludDModWludCB4
LCB1aW50IHksIHVpbnQgeikKK3sKKyAgICB1aW50MyByZXN1bHQ7CisgICAgcmVzdWx0LnggPSB4
OworICAgIHJlc3VsdC55ID0geTsKKyAgICByZXN1bHQueiA9IHo7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworb3BlcmF0b3IgdWludDModWludDIgaTIsIHVpbnQgeikKK3sKKyAgICB1aW50MyBy
ZXN1bHQ7CisgICAgcmVzdWx0LnggPSBpMi54OworICAgIHJlc3VsdC55ID0gaTIueTsKKyAgICBy
ZXN1bHQueiA9IHo7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworb3BlcmF0b3IgdWludDModWlu
dCB4LCB1aW50MiBpMikKK3sKKyAgICB1aW50MyByZXN1bHQ7CisgICAgcmVzdWx0LnggPSB4Owor
ICAgIHJlc3VsdC55ID0gaTIueDsKKyAgICByZXN1bHQueiA9IGkyLnk7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworYm9vbCBvcGVyYXRvcj09KHVpbnQzIGEsIHVpbnQzIGIpCit7CisgICAgcmV0
dXJuIGEueCA9PSBiLnggJiYgYS55ID09IGIueSAmJiBhLnogPT0gYi56OworfQorCit0aHJlYWQg
dWludF4gb3BlcmF0b3ImW10odGhyZWFkIHVpbnQzXiBmb28sIHVpbnQgaW5kZXgpCit7CisgICAg
aWYgKGluZGV4ID09IDApCisgICAgICAgIHJldHVybiAmZm9vLT54OworICAgIGlmIChpbmRleCA9
PSAxKQorICAgICAgICByZXR1cm4gJmZvby0+eTsKKyAgICBpZiAoaW5kZXggPT0gMikKKyAgICAg
ICAgcmV0dXJuICZmb28tPno7CisgICAgcmV0dXJuIG51bGw7Cit9CisKK3N0cnVjdCB1aW50NCB7
CisgICAgdWludCB4OworICAgIHVpbnQgeTsKKyAgICB1aW50IHo7CisgICAgdWludCB3OworfQor
CitvcGVyYXRvciB1aW50NCh1aW50IHgsIHVpbnQgeSwgdWludCB6LCB1aW50IHcpCit7CisgICAg
dWludDQgcmVzdWx0OworICAgIHJlc3VsdC54ID0geDsKKyAgICByZXN1bHQueSA9IHk7CisgICAg
cmVzdWx0LnogPSB6OworICAgIHJlc3VsdC53ID0gdzsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitvcGVyYXRvciB1aW50NCh1aW50MiBpMiwgdWludCB6LCB1aW50IHcpCit7CisgICAgdWludDQg
cmVzdWx0OworICAgIHJlc3VsdC54ID0gaTIueDsKKyAgICByZXN1bHQueSA9IGkyLnk7CisgICAg
cmVzdWx0LnogPSB6OworICAgIHJlc3VsdC53ID0gdzsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitvcGVyYXRvciB1aW50NCh1aW50IHgsIHVpbnQyIGkyLCB1aW50IHcpCit7CisgICAgdWludDQg
cmVzdWx0OworICAgIHJlc3VsdC54ID0geDsKKyAgICByZXN1bHQueSA9IGkyLng7CisgICAgcmVz
dWx0LnogPSBpMi55OworICAgIHJlc3VsdC53ID0gdzsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitvcGVyYXRvciB1aW50NCh1aW50IHgsIHVpbnQgeSwgdWludDIgaTIpCit7CisgICAgdWludDQg
cmVzdWx0OworICAgIHJlc3VsdC54ID0geDsKKyAgICByZXN1bHQueSA9IHk7CisgICAgcmVzdWx0
LnogPSBpMi54OworICAgIHJlc3VsdC53ID0gaTIueTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitvcGVyYXRvciB1aW50NCh1aW50MiBpMmEsIHVpbnQyIGkyYikKK3sKKyAgICB1aW50NCByZXN1
bHQ7CisgICAgcmVzdWx0LnggPSBpMmEueDsKKyAgICByZXN1bHQueSA9IGkyYS55OworICAgIHJl
c3VsdC56ID0gaTJiLng7CisgICAgcmVzdWx0LncgPSBpMmIueTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitvcGVyYXRvciB1aW50NCh1aW50MyBpMywgdWludCB3KQoreworICAgIHVpbnQ0IHJl
c3VsdDsKKyAgICByZXN1bHQueCA9IGkzLng7CisgICAgcmVzdWx0LnkgPSBpMy55OworICAgIHJl
c3VsdC56ID0gaTMuejsKKyAgICByZXN1bHQudyA9IHc7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kworb3BlcmF0b3IgdWludDQodWludCB4LCB1aW50MyBpMykKK3sKKyAgICB1aW50NCByZXN1bHQ7
CisgICAgcmVzdWx0LnggPSB4OworICAgIHJlc3VsdC55ID0gaTMueDsKKyAgICByZXN1bHQueiA9
IGkzLnk7CisgICAgcmVzdWx0LncgPSBpMy56OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jv
b2wgb3BlcmF0b3I9PSh1aW50NCBhLCB1aW50NCBiKQoreworICAgIHJldHVybiBhLnggPT0gYi54
ICYmIGEueSA9PSBiLnkgJiYgYS56ID09IGIueiAmJiBhLncgPT0gYi53OworfQorCit0aHJlYWQg
dWludF4gb3BlcmF0b3ImW10odGhyZWFkIHVpbnQ0XiBmb28sIHVpbnQgaW5kZXgpCit7CisgICAg
aWYgKGluZGV4ID09IDApCisgICAgICAgIHJldHVybiAmZm9vLT54OworICAgIGlmIChpbmRleCA9
PSAxKQorICAgICAgICByZXR1cm4gJmZvby0+eTsKKyAgICBpZiAoaW5kZXggPT0gMikKKyAgICAg
ICAgcmV0dXJuICZmb28tPno7CisgICAgaWYgKGluZGV4ID09IDMpCisgICAgICAgIHJldHVybiAm
Zm9vLT53OworICAgIHJldHVybiBudWxsOworfQorCitzdHJ1Y3QgZmxvYXQyIHsKKyAgICBmbG9h
dCB4OworICAgIGZsb2F0IHk7Cit9CisKK29wZXJhdG9yIGZsb2F0MihmbG9hdCB4LCBmbG9hdCB5
KQoreworICAgIGZsb2F0MiByZXN1bHQ7CisgICAgcmVzdWx0LnggPSB4OworICAgIHJlc3VsdC55
ID0geTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitib29sIG9wZXJhdG9yPT0oZmxvYXQyIGEs
IGZsb2F0MiBiKQoreworICAgIHJldHVybiBhLnggPT0gYi54ICYmIGEueSA9PSBiLnk7Cit9CisK
K3RocmVhZCBmbG9hdF4gb3BlcmF0b3ImW10odGhyZWFkIGZsb2F0Ml4gZm9vLCB1aW50IGluZGV4
KQoreworICAgIGlmIChpbmRleCA9PSAwKQorICAgICAgICByZXR1cm4gJmZvby0+eDsKKyAgICBp
ZiAoaW5kZXggPT0gMSkKKyAgICAgICAgcmV0dXJuICZmb28tPnk7CisgICAgcmV0dXJuIG51bGw7
Cit9CisKK3N0cnVjdCBmbG9hdDMgeworICAgIGZsb2F0IHg7CisgICAgZmxvYXQgeTsKKyAgICBm
bG9hdCB6OworfQorCitvcGVyYXRvciBmbG9hdDMoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikK
K3sKKyAgICBmbG9hdDMgcmVzdWx0OworICAgIHJlc3VsdC54ID0geDsKKyAgICByZXN1bHQueSA9
IHk7CisgICAgcmVzdWx0LnogPSB6OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK29wZXJhdG9y
IGZsb2F0MyhmbG9hdDIgaTIsIGZsb2F0IHopCit7CisgICAgZmxvYXQzIHJlc3VsdDsKKyAgICBy
ZXN1bHQueCA9IGkyLng7CisgICAgcmVzdWx0LnkgPSBpMi55OworICAgIHJlc3VsdC56ID0gejsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitvcGVyYXRvciBmbG9hdDMoZmxvYXQgeCwgZmxvYXQy
IGkyKQoreworICAgIGZsb2F0MyByZXN1bHQ7CisgICAgcmVzdWx0LnggPSB4OworICAgIHJlc3Vs
dC55ID0gaTIueDsKKyAgICByZXN1bHQueiA9IGkyLnk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworYm9vbCBvcGVyYXRvcj09KGZsb2F0MyBhLCBmbG9hdDMgYikKK3sKKyAgICByZXR1cm4gYS54
ID09IGIueCAmJiBhLnkgPT0gYi55ICYmIGEueiA9PSBiLno7Cit9CisKK3RocmVhZCBmbG9hdF4g
b3BlcmF0b3ImW10odGhyZWFkIGZsb2F0M14gZm9vLCB1aW50IGluZGV4KQoreworICAgIGlmIChp
bmRleCA9PSAwKQorICAgICAgICByZXR1cm4gJmZvby0+eDsKKyAgICBpZiAoaW5kZXggPT0gMSkK
KyAgICAgICAgcmV0dXJuICZmb28tPnk7CisgICAgaWYgKGluZGV4ID09IDIpCisgICAgICAgIHJl
dHVybiAmZm9vLT56OworICAgIHJldHVybiBudWxsOworfQorCitzdHJ1Y3QgZmxvYXQ0IHsKKyAg
ICBmbG9hdCB4OworICAgIGZsb2F0IHk7CisgICAgZmxvYXQgejsKKyAgICBmbG9hdCB3OworfQor
CitvcGVyYXRvciBmbG9hdDQoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgdykKK3sK
KyAgICBmbG9hdDQgcmVzdWx0OworICAgIHJlc3VsdC54ID0geDsKKyAgICByZXN1bHQueSA9IHk7
CisgICAgcmVzdWx0LnogPSB6OworICAgIHJlc3VsdC53ID0gdzsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitvcGVyYXRvciBmbG9hdDQoZmxvYXQyIGkyLCBmbG9hdCB6LCBmbG9hdCB3KQorewor
ICAgIGZsb2F0NCByZXN1bHQ7CisgICAgcmVzdWx0LnggPSBpMi54OworICAgIHJlc3VsdC55ID0g
aTIueTsKKyAgICByZXN1bHQueiA9IHo7CisgICAgcmVzdWx0LncgPSB3OworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK29wZXJhdG9yIGZsb2F0NChmbG9hdCB4LCBmbG9hdDIgaTIsIGZsb2F0IHcp
Cit7CisgICAgZmxvYXQ0IHJlc3VsdDsKKyAgICByZXN1bHQueCA9IHg7CisgICAgcmVzdWx0Lnkg
PSBpMi54OworICAgIHJlc3VsdC56ID0gaTIueTsKKyAgICByZXN1bHQudyA9IHc7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworb3BlcmF0b3IgZmxvYXQ0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0
MiBpMikKK3sKKyAgICBmbG9hdDQgcmVzdWx0OworICAgIHJlc3VsdC54ID0geDsKKyAgICByZXN1
bHQueSA9IHk7CisgICAgcmVzdWx0LnogPSBpMi54OworICAgIHJlc3VsdC53ID0gaTIueTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitvcGVyYXRvciBmbG9hdDQoZmxvYXQyIGkyYSwgZmxvYXQy
IGkyYikKK3sKKyAgICBmbG9hdDQgcmVzdWx0OworICAgIHJlc3VsdC54ID0gaTJhLng7CisgICAg
cmVzdWx0LnkgPSBpMmEueTsKKyAgICByZXN1bHQueiA9IGkyYi54OworICAgIHJlc3VsdC53ID0g
aTJiLnk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworb3BlcmF0b3IgZmxvYXQ0KGZsb2F0MyBp
MywgZmxvYXQgdykKK3sKKyAgICBmbG9hdDQgcmVzdWx0OworICAgIHJlc3VsdC54ID0gaTMueDsK
KyAgICByZXN1bHQueSA9IGkzLnk7CisgICAgcmVzdWx0LnogPSBpMy56OworICAgIHJlc3VsdC53
ID0gdzsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitvcGVyYXRvciBmbG9hdDQoZmxvYXQgeCwg
ZmxvYXQzIGkzKQoreworICAgIGZsb2F0NCByZXN1bHQ7CisgICAgcmVzdWx0LnggPSB4OworICAg
IHJlc3VsdC55ID0gaTMueDsKKyAgICByZXN1bHQueiA9IGkzLnk7CisgICAgcmVzdWx0LncgPSBp
My56OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jvb2wgb3BlcmF0b3I9PShmbG9hdDQgYSwg
ZmxvYXQ0IGIpCit7CisgICAgcmV0dXJuIGEueCA9PSBiLnggJiYgYS55ID09IGIueSAmJiBhLnog
PT0gYi56ICYmIGEudyA9PSBiLnc7Cit9CisKK3RocmVhZCBmbG9hdF4gb3BlcmF0b3ImW10odGhy
ZWFkIGZsb2F0NF4gZm9vLCB1aW50IGluZGV4KQoreworICAgIGlmIChpbmRleCA9PSAwKQorICAg
ICAgICByZXR1cm4gJmZvby0+eDsKKyAgICBpZiAoaW5kZXggPT0gMSkKKyAgICAgICAgcmV0dXJu
ICZmb28tPnk7CisgICAgaWYgKGluZGV4ID09IDIpCisgICAgICAgIHJldHVybiAmZm9vLT56Owor
ICAgIGlmIChpbmRleCA9PSAzKQorICAgICAgICByZXR1cm4gJmZvby0+dzsKKyAgICByZXR1cm4g
bnVsbDsKK30KKworc3RydWN0IGRvdWJsZTIgeworICAgIGRvdWJsZSB4OworICAgIGRvdWJsZSB5
OworfQorCitvcGVyYXRvciBkb3VibGUyKGRvdWJsZSB4LCBkb3VibGUgeSkKK3sKKyAgICBkb3Vi
bGUyIHJlc3VsdDsKKyAgICByZXN1bHQueCA9IHg7CisgICAgcmVzdWx0LnkgPSB5OworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK2Jvb2wgb3BlcmF0b3I9PShkb3VibGUyIGEsIGRvdWJsZTIgYikK
K3sKKyAgICByZXR1cm4gYS54ID09IGIueCAmJiBhLnkgPT0gYi55OworfQorCit0aHJlYWQgZG91
YmxlXiBvcGVyYXRvciZbXSh0aHJlYWQgZG91YmxlMl4gZm9vLCB1aW50IGluZGV4KQoreworICAg
IGlmIChpbmRleCA9PSAwKQorICAgICAgICByZXR1cm4gJmZvby0+eDsKKyAgICBpZiAoaW5kZXgg
PT0gMSkKKyAgICAgICAgcmV0dXJuICZmb28tPnk7CisgICAgcmV0dXJuIG51bGw7Cit9CisKK3N0
cnVjdCBkb3VibGUzIHsKKyAgICBkb3VibGUgeDsKKyAgICBkb3VibGUgeTsKKyAgICBkb3VibGUg
ejsKK30KKworb3BlcmF0b3IgZG91YmxlMyhkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6KQor
eworICAgIGRvdWJsZTMgcmVzdWx0OworICAgIHJlc3VsdC54ID0geDsKKyAgICByZXN1bHQueSA9
IHk7CisgICAgcmVzdWx0LnogPSB6OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK29wZXJhdG9y
IGRvdWJsZTMoZG91YmxlMiBpMiwgZG91YmxlIHopCit7CisgICAgZG91YmxlMyByZXN1bHQ7Cisg
ICAgcmVzdWx0LnggPSBpMi54OworICAgIHJlc3VsdC55ID0gaTIueTsKKyAgICByZXN1bHQueiA9
IHo7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworb3BlcmF0b3IgZG91YmxlMyhkb3VibGUgeCwg
ZG91YmxlMiBpMikKK3sKKyAgICBkb3VibGUzIHJlc3VsdDsKKyAgICByZXN1bHQueCA9IHg7Cisg
ICAgcmVzdWx0LnkgPSBpMi54OworICAgIHJlc3VsdC56ID0gaTIueTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitib29sIG9wZXJhdG9yPT0oZG91YmxlMyBhLCBkb3VibGUzIGIpCit7CisgICAg
cmV0dXJuIGEueCA9PSBiLnggJiYgYS55ID09IGIueSAmJiBhLnogPT0gYi56OworfQorCit0aHJl
YWQgZG91YmxlXiBvcGVyYXRvciZbXSh0aHJlYWQgZG91YmxlM14gZm9vLCB1aW50IGluZGV4KQor
eworICAgIGlmIChpbmRleCA9PSAwKQorICAgICAgICByZXR1cm4gJmZvby0+eDsKKyAgICBpZiAo
aW5kZXggPT0gMSkKKyAgICAgICAgcmV0dXJuICZmb28tPnk7CisgICAgaWYgKGluZGV4ID09IDIp
CisgICAgICAgIHJldHVybiAmZm9vLT56OworICAgIHJldHVybiBudWxsOworfQorCitzdHJ1Y3Qg
ZG91YmxlNCB7CisgICAgZG91YmxlIHg7CisgICAgZG91YmxlIHk7CisgICAgZG91YmxlIHo7Cisg
ICAgZG91YmxlIHc7Cit9CisKK29wZXJhdG9yIGRvdWJsZTQoZG91YmxlIHgsIGRvdWJsZSB5LCBk
b3VibGUgeiwgZG91YmxlIHcpCit7CisgICAgZG91YmxlNCByZXN1bHQ7CisgICAgcmVzdWx0Lngg
PSB4OworICAgIHJlc3VsdC55ID0geTsKKyAgICByZXN1bHQueiA9IHo7CisgICAgcmVzdWx0Lncg
PSB3OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK29wZXJhdG9yIGRvdWJsZTQoZG91YmxlMiBp
MiwgZG91YmxlIHosIGRvdWJsZSB3KQoreworICAgIGRvdWJsZTQgcmVzdWx0OworICAgIHJlc3Vs
dC54ID0gaTIueDsKKyAgICByZXN1bHQueSA9IGkyLnk7CisgICAgcmVzdWx0LnogPSB6OworICAg
IHJlc3VsdC53ID0gdzsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitvcGVyYXRvciBkb3VibGU0
KGRvdWJsZSB4LCBkb3VibGUyIGkyLCBkb3VibGUgdykKK3sKKyAgICBkb3VibGU0IHJlc3VsdDsK
KyAgICByZXN1bHQueCA9IHg7CisgICAgcmVzdWx0LnkgPSBpMi54OworICAgIHJlc3VsdC56ID0g
aTIueTsKKyAgICByZXN1bHQudyA9IHc7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworb3BlcmF0
b3IgZG91YmxlNChkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZTIgaTIpCit7CisgICAgZG91Ymxl
NCByZXN1bHQ7CisgICAgcmVzdWx0LnggPSB4OworICAgIHJlc3VsdC55ID0geTsKKyAgICByZXN1
bHQueiA9IGkyLng7CisgICAgcmVzdWx0LncgPSBpMi55OworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK29wZXJhdG9yIGRvdWJsZTQoZG91YmxlMiBpMmEsIGRvdWJsZTIgaTJiKQoreworICAgIGRv
dWJsZTQgcmVzdWx0OworICAgIHJlc3VsdC54ID0gaTJhLng7CisgICAgcmVzdWx0LnkgPSBpMmEu
eTsKKyAgICByZXN1bHQueiA9IGkyYi54OworICAgIHJlc3VsdC53ID0gaTJiLnk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworb3BlcmF0b3IgZG91YmxlNChkb3VibGUzIGkzLCBkb3VibGUgdykK
K3sKKyAgICBkb3VibGU0IHJlc3VsdDsKKyAgICByZXN1bHQueCA9IGkzLng7CisgICAgcmVzdWx0
LnkgPSBpMy55OworICAgIHJlc3VsdC56ID0gaTMuejsKKyAgICByZXN1bHQudyA9IHc7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworb3BlcmF0b3IgZG91YmxlNChkb3VibGUgeCwgZG91YmxlMyBp
MykKK3sKKyAgICBkb3VibGU0IHJlc3VsdDsKKyAgICByZXN1bHQueCA9IHg7CisgICAgcmVzdWx0
LnkgPSBpMy54OworICAgIHJlc3VsdC56ID0gaTMueTsKKyAgICByZXN1bHQudyA9IGkzLno7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworYm9vbCBvcGVyYXRvcj09KGRvdWJsZTQgYSwgZG91Ymxl
NCBiKQoreworICAgIHJldHVybiBhLnggPT0gYi54ICYmIGEueSA9PSBiLnkgJiYgYS56ID09IGIu
eiAmJiBhLncgPT0gYi53OworfQorCit0aHJlYWQgZG91YmxlXiBvcGVyYXRvciZbXSh0aHJlYWQg
ZG91YmxlNF4gZm9vLCB1aW50IGluZGV4KQoreworICAgIGlmIChpbmRleCA9PSAwKQorICAgICAg
ICByZXR1cm4gJmZvby0+eDsKKyAgICBpZiAoaW5kZXggPT0gMSkKKyAgICAgICAgcmV0dXJuICZm
b28tPnk7CisgICAgaWYgKGluZGV4ID09IDIpCisgICAgICAgIHJldHVybiAmZm9vLT56OworICAg
IGlmIChpbmRleCA9PSAzKQorICAgICAgICByZXR1cm4gJmZvby0+dzsKKyAgICByZXR1cm4gbnVs
bDsKK30KKwogbmF0aXZlIHRocmVhZCBUXiBvcGVyYXRvciZbXTxUPih0aHJlYWQgVFtdLCB1aW50
KTsKIG5hdGl2ZSB0aHJlYWRncm91cCBUXiBvcGVyYXRvciZbXTxUOnByaW1pdGl2ZT4odGhyZWFk
Z3JvdXAgVFtdLCB1aW50KTsKIG5hdGl2ZSBkZXZpY2UgVF4gb3BlcmF0b3ImW108VDpwcmltaXRp
dmU+KGRldmljZSBUW10sIHVpbnQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvVGVzdC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMK
aW5kZXggZTExYzA0YjI0NjZhNDIwZTIzNWYxZjJiOThhNDI2N2EyZDFmNzZiNy4uN2NmYzI3ZTQx
OTBiNGZhMThiNGI1YmQ1MmZhYjhiODMwYmVkNjUxYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9UZXN0LmpzCkBAIC0yNzkwLDYgKzI3OTAsMTg4IEBAIGZ1bmN0aW9uIFRFU1RfZmxvYXRN
YXRoKCkKICAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKIH0KIAorZnVu
Y3Rpb24gVEVTVF9idWlsdGluVmVjdG9ycygpCit7CisgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAo
YAorICAgICAgICBpbnQgZm9vKCkKKyAgICAgICAgeworICAgICAgICAgICAgaW50MiBhID0gaW50
MigzLCA0KTsKKyAgICAgICAgICAgIHJldHVybiBhWzBdOworICAgICAgICB9CisgICAgICAgIGlu
dCBmb28yKCkKKyAgICAgICAgeworICAgICAgICAgICAgaW50MiBhID0gaW50MigzLCA0KTsKKyAg
ICAgICAgICAgIGludDMgYiA9IGludDMoYSwgNSk7CisgICAgICAgICAgICByZXR1cm4gYlsxXTsK
KyAgICAgICAgfQorICAgICAgICBpbnQgZm9vMygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlu
dDMgYSA9IGludDMoMywgNCwgNSk7CisgICAgICAgICAgICBpbnQ0IGIgPSBpbnQ0KDYsIGEpOwor
ICAgICAgICAgICAgcmV0dXJuIGJbMV07CisgICAgICAgIH0KKyAgICAgICAgaW50IGZvbzQoKQor
ICAgICAgICB7CisgICAgICAgICAgICBpbnQyIGEgPSBpbnQyKDMsIDQpOworICAgICAgICAgICAg
aW50MiBiID0gaW50Mig1LCA2KTsKKyAgICAgICAgICAgIGludDQgYyA9IGludDQoYSwgYik7Cisg
ICAgICAgICAgICByZXR1cm4gY1syXTsKKyAgICAgICAgfQorICAgICAgICBib29sIGZvbzUoKQor
ICAgICAgICB7CisgICAgICAgICAgICBpbnQ0IGEgPSBpbnQ0KDMsIDQsIDUsIDYpOworICAgICAg
ICAgICAgaW50MiBiID0gaW50Mig0LCA1KTsKKyAgICAgICAgICAgIGludDQgYyA9IGludDQoMywg
YiwgNik7CisgICAgICAgICAgICByZXR1cm4gYSA9PSBjOworICAgICAgICB9CisgICAgICAgIGJv
b2wgZm9vNigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGludDIgYSA9IGludDIoNCwgNSk7Cisg
ICAgICAgICAgICBpbnQzIGIgPSBpbnQzKDMsIGEpOworICAgICAgICAgICAgaW50MyBjID0gaW50
MygzLCA0LCA2KTsKKyAgICAgICAgICAgIHJldHVybiBiID09IGM7CisgICAgICAgIH0KKyAgICAg
ICAgdWludCBmb291KCkKKyAgICAgICAgeworICAgICAgICAgICAgdWludDIgYSA9IHVpbnQyKDMs
IDQpOworICAgICAgICAgICAgcmV0dXJuIGFbMF07CisgICAgICAgIH0KKyAgICAgICAgdWludCBm
b291MigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHVpbnQyIGEgPSB1aW50MigzLCA0KTsKKyAg
ICAgICAgICAgIHVpbnQzIGIgPSB1aW50MyhhLCA1KTsKKyAgICAgICAgICAgIHJldHVybiBiWzFd
OworICAgICAgICB9CisgICAgICAgIHVpbnQgZm9vdTMoKQorICAgICAgICB7CisgICAgICAgICAg
ICB1aW50MyBhID0gdWludDMoMywgNCwgNSk7CisgICAgICAgICAgICB1aW50NCBiID0gdWludDQo
NiwgYSk7CisgICAgICAgICAgICByZXR1cm4gYlsxXTsKKyAgICAgICAgfQorICAgICAgICB1aW50
IGZvb3U0KCkKKyAgICAgICAgeworICAgICAgICAgICAgdWludDIgYSA9IHVpbnQyKDMsIDQpOwor
ICAgICAgICAgICAgdWludDIgYiA9IHVpbnQyKDUsIDYpOworICAgICAgICAgICAgdWludDQgYyA9
IHVpbnQ0KGEsIGIpOworICAgICAgICAgICAgcmV0dXJuIGNbMl07CisgICAgICAgIH0KKyAgICAg
ICAgYm9vbCBmb291NSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHVpbnQ0IGEgPSB1aW50NCgz
LCA0LCA1LCA2KTsKKyAgICAgICAgICAgIHVpbnQyIGIgPSB1aW50Mig0LCA1KTsKKyAgICAgICAg
ICAgIHVpbnQ0IGMgPSB1aW50NCgzLCBiLCA2KTsKKyAgICAgICAgICAgIHJldHVybiBhID09IGM7
CisgICAgICAgIH0KKyAgICAgICAgYm9vbCBmb291NigpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHVpbnQyIGEgPSB1aW50Mig0LCA1KTsKKyAgICAgICAgICAgIHVpbnQzIGIgPSB1aW50MygzLCBh
KTsKKyAgICAgICAgICAgIHVpbnQzIGMgPSB1aW50MygzLCA0LCA2KTsKKyAgICAgICAgICAgIHJl
dHVybiBiID09IGM7CisgICAgICAgIH0KKyAgICAgICAgZmxvYXQgZm9vZigpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGZsb2F0MiBhID0gZmxvYXQyKDMuLCA0Lik7CisgICAgICAgICAgICByZXR1
cm4gYVswXTsKKyAgICAgICAgfQorICAgICAgICBmbG9hdCBmb29mMigpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGZsb2F0MiBhID0gZmxvYXQyKDMuLCA0Lik7CisgICAgICAgICAgICBmbG9hdDMg
YiA9IGZsb2F0MyhhLCA1Lik7CisgICAgICAgICAgICByZXR1cm4gYlsxXTsKKyAgICAgICAgfQor
ICAgICAgICBmbG9hdCBmb29mMygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZsb2F0MyBhID0g
ZmxvYXQzKDMuLCA0LiwgNS4pOworICAgICAgICAgICAgZmxvYXQ0IGIgPSBmbG9hdDQoNi4sIGEp
OworICAgICAgICAgICAgcmV0dXJuIGJbMV07CisgICAgICAgIH0KKyAgICAgICAgZmxvYXQgZm9v
ZjQoKQorICAgICAgICB7CisgICAgICAgICAgICBmbG9hdDIgYSA9IGZsb2F0MigzLiwgNC4pOwor
ICAgICAgICAgICAgZmxvYXQyIGIgPSBmbG9hdDIoNS4sIDYuKTsKKyAgICAgICAgICAgIGZsb2F0
NCBjID0gZmxvYXQ0KGEsIGIpOworICAgICAgICAgICAgcmV0dXJuIGNbMl07CisgICAgICAgIH0K
KyAgICAgICAgYm9vbCBmb29mNSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZsb2F0NCBhID0g
ZmxvYXQ0KDMuLCA0LiwgNS4sIDYuKTsKKyAgICAgICAgICAgIGZsb2F0MiBiID0gZmxvYXQyKDQu
LCA1Lik7CisgICAgICAgICAgICBmbG9hdDQgYyA9IGZsb2F0NCgzLiwgYiwgNi4pOworICAgICAg
ICAgICAgcmV0dXJuIGEgPT0gYzsKKyAgICAgICAgfQorICAgICAgICBib29sIGZvb2Y2KCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZmxvYXQyIGEgPSBmbG9hdDIoNC4sIDUuKTsKKyAgICAgICAg
ICAgIGZsb2F0MyBiID0gZmxvYXQzKDMuLCBhKTsKKyAgICAgICAgICAgIGZsb2F0MyBjID0gZmxv
YXQzKDMuLCA0LiwgNi4pOworICAgICAgICAgICAgcmV0dXJuIGIgPT0gYzsKKyAgICAgICAgfQor
ICAgICAgICBkb3VibGUgZm9vZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRvdWJsZTIgYSA9
IGRvdWJsZTIoMy4sIDQuKTsKKyAgICAgICAgICAgIHJldHVybiBhWzBdOworICAgICAgICB9Cisg
ICAgICAgIGRvdWJsZSBmb29kMigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRvdWJsZTIgYSA9
IGRvdWJsZTIoMy4sIDQuKTsKKyAgICAgICAgICAgIGRvdWJsZTMgYiA9IGRvdWJsZTMoYSwgNS4p
OworICAgICAgICAgICAgcmV0dXJuIGJbMV07CisgICAgICAgIH0KKyAgICAgICAgZG91YmxlIGZv
b2QzKCkKKyAgICAgICAgeworICAgICAgICAgICAgZG91YmxlMyBhID0gZG91YmxlMygzLiwgNC4s
IDUuKTsKKyAgICAgICAgICAgIGRvdWJsZTQgYiA9IGRvdWJsZTQoNi4sIGEpOworICAgICAgICAg
ICAgcmV0dXJuIGJbMV07CisgICAgICAgIH0KKyAgICAgICAgZG91YmxlIGZvb2Q0KCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZG91YmxlMiBhID0gZG91YmxlMigzLiwgNC4pOworICAgICAgICAg
ICAgZG91YmxlMiBiID0gZG91YmxlMig1LiwgNi4pOworICAgICAgICAgICAgZG91YmxlNCBjID0g
ZG91YmxlNChhLCBiKTsKKyAgICAgICAgICAgIHJldHVybiBjWzJdOworICAgICAgICB9CisgICAg
ICAgIGJvb2wgZm9vZDUoKQorICAgICAgICB7CisgICAgICAgICAgICBkb3VibGU0IGEgPSBkb3Vi
bGU0KDMuLCA0LiwgNS4sIDYuKTsKKyAgICAgICAgICAgIGRvdWJsZTIgYiA9IGRvdWJsZTIoNC4s
IDUuKTsKKyAgICAgICAgICAgIGRvdWJsZTQgYyA9IGRvdWJsZTQoMy4sIGIsIDYuKTsKKyAgICAg
ICAgICAgIHJldHVybiBhID09IGM7CisgICAgICAgIH0KKyAgICAgICAgYm9vbCBmb29kNigpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRvdWJsZTIgYSA9IGRvdWJsZTIoNC4sIDUuKTsKKyAgICAg
ICAgICAgIGRvdWJsZTMgYiA9IGRvdWJsZTMoMy4sIGEpOworICAgICAgICAgICAgZG91YmxlMyBj
ID0gZG91YmxlMygzLiwgNC4sIDYuKTsKKyAgICAgICAgICAgIHJldHVybiBiID09IGM7CisgICAg
ICAgIH0KKyAgICBgKTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFtdLCBbXSksIDMpOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlv
bihwcm9ncmFtLCAiZm9vMiIsIFtdLCBbXSksIDQpOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNh
bGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vMyIsIFtdLCBbXSksIDMpOworICAgIGNoZWNrSW50KHBy
b2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vNCIsIFtdLCBbXSksIDUpOworICAgIGNo
ZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzUiLCBbXSwgW10pLCB0
cnVlKTsKKyAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb282
IiwgW10sIFtdKSwgZmFsc2UpOworICAgIGNoZWNrVWludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24o
cHJvZ3JhbSwgImZvb3UiLCBbXSwgW10pLCAzKTsKKyAgICBjaGVja1VpbnQocHJvZ3JhbSwgY2Fs
bEZ1bmN0aW9uKHByb2dyYW0sICJmb291MiIsIFtdLCBbXSksIDQpOworICAgIGNoZWNrVWludChw
cm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvb3UzIiwgW10sIFtdKSwgMyk7CisgICAg
Y2hlY2tVaW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vdTQiLCBbXSwgW10p
LCA1KTsKKyAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb291
NSIsIFtdLCBbXSksIHRydWUpOworICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVuY3Rpb24o
cHJvZ3JhbSwgImZvb3U2IiwgW10sIFtdKSwgZmFsc2UpOworICAgIGNoZWNrRmxvYXQocHJvZ3Jh
bSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb29mIiwgW10sIFtdKSwgMyk7CisgICAgY2hlY2tG
bG9hdChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvb2YyIiwgW10sIFtdKSwgNCk7
CisgICAgY2hlY2tGbG9hdChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvb2YzIiwg
W10sIFtdKSwgMyk7CisgICAgY2hlY2tGbG9hdChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3Jh
bSwgImZvb2Y0IiwgW10sIFtdKSwgNSk7CisgICAgY2hlY2tCb29sKHByb2dyYW0sIGNhbGxGdW5j
dGlvbihwcm9ncmFtLCAiZm9vZjUiLCBbXSwgW10pLCB0cnVlKTsKKyAgICBjaGVja0Jvb2wocHJv
Z3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb29mNiIsIFtdLCBbXSksIGZhbHNlKTsKKyAg
ICBjaGVja0RvdWJsZShwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvb2QiLCBbXSwg
W10pLCAzKTsKKyAgICBjaGVja0RvdWJsZShwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwg
ImZvb2QyIiwgW10sIFtdKSwgNCk7CisgICAgY2hlY2tEb3VibGUocHJvZ3JhbSwgY2FsbEZ1bmN0
aW9uKHByb2dyYW0sICJmb29kMyIsIFtdLCBbXSksIDMpOworICAgIGNoZWNrRG91YmxlKHByb2dy
YW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vZDQiLCBbXSwgW10pLCA1KTsKKyAgICBjaGVj
a0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb29kNSIsIFtdLCBbXSksIHRy
dWUpOworICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvb2Q2
IiwgW10sIFtdKSwgZmFsc2UpOworfQorCiBsZXQgZmlsdGVyID0gLy4qLzsgLy8gcnVuIGV2ZXJ5
dGhpbmcgYnkgZGVmYXVsdAogaWYgKHRoaXNbImFyZ3VtZW50cyJdKSB7CiAgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321075</attachid>
            <date>2017-09-17 21:54:52 -0700</date>
            <delta_ts>2017-09-17 22:01:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177063-20170917215453.patch</filename>
            <type>text/plain</type>
            <size>11215</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyMjEzOSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI2IEBACisyMDE3LTA5LTE3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBs
ZS5jb20+CisKKyAgICAgICAgRmlsbCBvdXQgdmVjdG9yIHR5cGVzIGluIFdTTCdzIHN0YW5kYXJk
IGxpYnJhcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NzA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vdyB0aGF0IHdlIGhhdmUgc3RydWN0IHR5cGVzLCBvcGVyYXRvciZbXSwgYW5kIG9wZXJhdG9y
PT0sIGZpbGwgb3V0IGEgZmV3IG9mIHRoZSBidWlsdGluIHZlY3RvciB0eXBlcyBpbiB0aGUKKyAg
ICAgICAgc3RhbmRhcmQgbGlicmFyeS4gVGhpcyBwYXRjaCBjcmVhdGVzIHRocmVlIG5ldyB0eXBl
czogdmVjMiwgdmVjMywgYW5kIHZlYzQsIGVhY2ggb2Ygd2hpY2ggdGFrZXMgYSB0eXBlCisgICAg
ICAgIGFyZ3VtZW50LCBzbyB5b3UgY2FuIHNheSB2ZWM0PGZsb2F0Pi4gVGhpcyBwYXRjaCBhbHNv
IGFkZHMgdHlwZWRlZnMgb2YgaW50NCwgdWludDQsIGZsb2F0NCwgYW5kIGRvdWJsZTQgKGFsb25n
CisgICAgICAgIHdpdGggdGhlaXIgMi0gYW5kIDMtIGxlbmd0aCBzaWJsaW5ncykuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBzd2l6emxpbmcgb3BlcmF0b3JzLCBz
byB5b3UgY2FuJ3Qgc2F5IGZsb2F0NC55encuCisKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanM6CisgICAgICAgIChvcGVyYXRvci5ULnZlYzIuVCk6
CisgICAgICAgIChib29sLm9wZXJhdG9yLlQuRXF1YXRhYmxlKToKKyAgICAgICAgKHRocmVhZC5U
Lm9wZXJhdG9yLlQpOgorICAgICAgICAob3BlcmF0b3IuVC52ZWMzLlQpOgorICAgICAgICAob3Bl
cmF0b3IuVC52ZWM0LlQpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3Qu
anM6CisgICAgICAgIChURVNUX2J1aWx0aW5WZWN0b3JzKToKKwogMjAxNy0wOS0xNyAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFdTTCBuZWVkcyB0
byB1bmRlcnN0YW5kICYmIGFuZCB8fApJbmRleDogVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvU3RhbmRhcmRMaWJyYXJ5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qcwkocmV2aXNpb24gMjIyMTM5KQorKysgVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDksNiArMTA5LDE5MiBAQCBvcGVyYXRvcjxUOkVxdWF0YWJsZT4gYm9vbChUIHgpCiAg
ICAgcmV0dXJuIHggIT0gVCgpOwogfQogCitzdHJ1Y3QgdmVjMjxUPiB7CisgICAgVCB4OworICAg
IFQgeTsKK30KKwordHlwZWRlZiBpbnQyID0gdmVjMjxpbnQ+OwordHlwZWRlZiB1aW50MiA9IHZl
YzI8dWludD47Cit0eXBlZGVmIGZsb2F0MiA9IHZlYzI8ZmxvYXQ+OwordHlwZWRlZiBkb3VibGUy
ID0gdmVjMjxkb3VibGU+OworCitvcGVyYXRvcjxUPiB2ZWMyPFQ+KFQgeCwgVCB5KQoreworICAg
IHZlYzI8VD4gcmVzdWx0OworICAgIHJlc3VsdC54ID0geDsKKyAgICByZXN1bHQueSA9IHk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworYm9vbCBvcGVyYXRvcj09PFQ6RXF1YXRhYmxlPih2ZWMy
PFQ+IGEsIHZlYzI8VD4gYikKK3sKKyAgICByZXR1cm4gYS54ID09IGIueCAmJiBhLnkgPT0gYi55
OworfQorCit0aHJlYWQgVF4gb3BlcmF0b3ImW108VD4odGhyZWFkIHZlYzI8VD5eIGZvbywgdWlu
dCBpbmRleCkKK3sKKyAgICBpZiAoaW5kZXggPT0gMCkKKyAgICAgICAgcmV0dXJuICZmb28tPng7
CisgICAgaWYgKGluZGV4ID09IDEpCisgICAgICAgIHJldHVybiAmZm9vLT55OworICAgIHJldHVy
biBudWxsOworfQorCitzdHJ1Y3QgdmVjMzxUPiB7CisgICAgVCB4OworICAgIFQgeTsKKyAgICBU
IHo7Cit9CisKK3R5cGVkZWYgaW50MyA9IHZlYzM8aW50PjsKK3R5cGVkZWYgdWludDMgPSB2ZWMz
PHVpbnQ+OwordHlwZWRlZiBmbG9hdDMgPSB2ZWMzPGZsb2F0PjsKK3R5cGVkZWYgZG91YmxlMyA9
IHZlYzM8ZG91YmxlPjsKKworb3BlcmF0b3I8VD4gdmVjMzxUPihUIHgsIFQgeSwgVCB6KQorewor
ICAgIHZlYzM8VD4gcmVzdWx0OworICAgIHJlc3VsdC54ID0geDsKKyAgICByZXN1bHQueSA9IHk7
CisgICAgcmVzdWx0LnogPSB6OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK29wZXJhdG9yPFQ+
IHZlYzM8VD4odmVjMjxUPiB2MiwgVCB6KQoreworICAgIHZlYzM8VD4gcmVzdWx0OworICAgIHJl
c3VsdC54ID0gdjIueDsKKyAgICByZXN1bHQueSA9IHYyLnk7CisgICAgcmVzdWx0LnogPSB6Owor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK29wZXJhdG9yPFQ+IHZlYzM8VD4oVCB4LCB2ZWMyPFQ+
IHYyKQoreworICAgIHZlYzM8VD4gcmVzdWx0OworICAgIHJlc3VsdC54ID0geDsKKyAgICByZXN1
bHQueSA9IHYyLng7CisgICAgcmVzdWx0LnogPSB2Mi55OworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK2Jvb2wgb3BlcmF0b3I9PTxUOkVxdWF0YWJsZT4odmVjMzxUPiBhLCB2ZWMzPFQ+IGIpCit7
CisgICAgcmV0dXJuIGEueCA9PSBiLnggJiYgYS55ID09IGIueSAmJiBhLnogPT0gYi56OworfQor
Cit0aHJlYWQgVF4gb3BlcmF0b3ImW108VD4odGhyZWFkIHZlYzM8VD5eIGZvbywgdWludCBpbmRl
eCkKK3sKKyAgICBpZiAoaW5kZXggPT0gMCkKKyAgICAgICAgcmV0dXJuICZmb28tPng7CisgICAg
aWYgKGluZGV4ID09IDEpCisgICAgICAgIHJldHVybiAmZm9vLT55OworICAgIGlmIChpbmRleCA9
PSAyKQorICAgICAgICByZXR1cm4gJmZvby0+ejsKKyAgICByZXR1cm4gbnVsbDsKK30KKworc3Ry
dWN0IHZlYzQ8VD4geworICAgIFQgeDsKKyAgICBUIHk7CisgICAgVCB6OworICAgIFQgdzsKK30K
KwordHlwZWRlZiBpbnQ0ID0gdmVjNDxpbnQ+OwordHlwZWRlZiB1aW50NCA9IHZlYzQ8dWludD47
Cit0eXBlZGVmIGZsb2F0NCA9IHZlYzQ8ZmxvYXQ+OwordHlwZWRlZiBkb3VibGU0ID0gdmVjNDxk
b3VibGU+OworCitvcGVyYXRvcjxUPiB2ZWM0PFQ+KFQgeCwgVCB5LCBUIHosIFQgdykKK3sKKyAg
ICB2ZWM0PFQ+IHJlc3VsdDsKKyAgICByZXN1bHQueCA9IHg7CisgICAgcmVzdWx0LnkgPSB5Owor
ICAgIHJlc3VsdC56ID0gejsKKyAgICByZXN1bHQudyA9IHc7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworb3BlcmF0b3I8VD4gdmVjNDxUPih2ZWMyPFQ+IHYyLCBUIHosIFQgdykKK3sKKyAgICB2
ZWM0PFQ+IHJlc3VsdDsKKyAgICByZXN1bHQueCA9IHYyLng7CisgICAgcmVzdWx0LnkgPSB2Mi55
OworICAgIHJlc3VsdC56ID0gejsKKyAgICByZXN1bHQudyA9IHc7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworb3BlcmF0b3I8VD4gdmVjNDxUPihUIHgsIHZlYzI8VD4gdjIsIFQgdykKK3sKKyAg
ICB2ZWM0PFQ+IHJlc3VsdDsKKyAgICByZXN1bHQueCA9IHg7CisgICAgcmVzdWx0LnkgPSB2Mi54
OworICAgIHJlc3VsdC56ID0gdjIueTsKKyAgICByZXN1bHQudyA9IHc7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworb3BlcmF0b3I8VD4gdmVjNDxUPihUIHgsIFQgeSwgdmVjMjxUPiB2MikKK3sK
KyAgICB2ZWM0PFQ+IHJlc3VsdDsKKyAgICByZXN1bHQueCA9IHg7CisgICAgcmVzdWx0LnkgPSB5
OworICAgIHJlc3VsdC56ID0gdjIueDsKKyAgICByZXN1bHQudyA9IHYyLnk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworb3BlcmF0b3I8VD4gdmVjNDxUPih2ZWMyPFQ+IHYyYSwgdmVjMjxUPiB2
MmIpCit7CisgICAgdmVjNDxUPiByZXN1bHQ7CisgICAgcmVzdWx0LnggPSB2MmEueDsKKyAgICBy
ZXN1bHQueSA9IHYyYS55OworICAgIHJlc3VsdC56ID0gdjJiLng7CisgICAgcmVzdWx0LncgPSB2
MmIueTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitvcGVyYXRvcjxUPiB2ZWM0PFQ+KHZlYzM8
VD4gdjMsIFQgdykKK3sKKyAgICB2ZWM0PFQ+IHJlc3VsdDsKKyAgICByZXN1bHQueCA9IHYzLng7
CisgICAgcmVzdWx0LnkgPSB2My55OworICAgIHJlc3VsdC56ID0gdjMuejsKKyAgICByZXN1bHQu
dyA9IHc7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworb3BlcmF0b3I8VD4gdmVjNDxUPihUIHgs
IHZlYzM8VD4gdjMpCit7CisgICAgdmVjNDxUPiByZXN1bHQ7CisgICAgcmVzdWx0LnggPSB4Owor
ICAgIHJlc3VsdC55ID0gdjMueDsKKyAgICByZXN1bHQueiA9IHYzLnk7CisgICAgcmVzdWx0Lncg
PSB2My56OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jvb2wgb3BlcmF0b3I9PTxUOkVxdWF0
YWJsZT4odmVjNDxUPiBhLCB2ZWM0PFQ+IGIpCit7CisgICAgcmV0dXJuIGEueCA9PSBiLnggJiYg
YS55ID09IGIueSAmJiBhLnogPT0gYi56ICYmIGEudyA9PSBiLnc7Cit9CisKK3RocmVhZCBUXiBv
cGVyYXRvciZbXTxUPih0aHJlYWQgdmVjNDxUPl4gZm9vLCB1aW50IGluZGV4KQoreworICAgIGlm
IChpbmRleCA9PSAwKQorICAgICAgICByZXR1cm4gJmZvby0+eDsKKyAgICBpZiAoaW5kZXggPT0g
MSkKKyAgICAgICAgcmV0dXJuICZmb28tPnk7CisgICAgaWYgKGluZGV4ID09IDIpCisgICAgICAg
IHJldHVybiAmZm9vLT56OworICAgIGlmIChpbmRleCA9PSAzKQorICAgICAgICByZXR1cm4gJmZv
by0+dzsKKyAgICByZXR1cm4gbnVsbDsKK30KKwogbmF0aXZlIHRocmVhZCBUXiBvcGVyYXRvciZb
XTxUPih0aHJlYWQgVFtdLCB1aW50KTsKIG5hdGl2ZSB0aHJlYWRncm91cCBUXiBvcGVyYXRvciZb
XTxUOnByaW1pdGl2ZT4odGhyZWFkZ3JvdXAgVFtdLCB1aW50KTsKIG5hdGl2ZSBkZXZpY2UgVF4g
b3BlcmF0b3ImW108VDpwcmltaXRpdmU+KGRldmljZSBUW10sIHVpbnQpOwpJbmRleDogVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCShyZXZpc2lvbiAyMjIxMzkpCisrKyBUb29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yODM4LDYg
KzI4MzgsMTg4IEBAIGZ1bmN0aW9uIFRFU1RfYm9vbGVhbk1hdGgoKQogICAgIGNoZWNrQm9vbChw
cm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzgiLCBbXSwgW10pLCBmYWxzZSk7CiB9
CiAKK2Z1bmN0aW9uIFRFU1RfYnVpbHRpblZlY3RvcnMoKQoreworICAgIGxldCBwcm9ncmFtID0g
ZG9QcmVwKGAKKyAgICAgICAgaW50IGZvbygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGludDIg
YSA9IGludDIoMywgNCk7CisgICAgICAgICAgICByZXR1cm4gYVswXTsKKyAgICAgICAgfQorICAg
ICAgICBpbnQgZm9vMigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGludDIgYSA9IGludDIoMywg
NCk7CisgICAgICAgICAgICBpbnQzIGIgPSBpbnQzKGEsIDUpOworICAgICAgICAgICAgcmV0dXJu
IGJbMV07CisgICAgICAgIH0KKyAgICAgICAgaW50IGZvbzMoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpbnQzIGEgPSBpbnQzKDMsIDQsIDUpOworICAgICAgICAgICAgaW50NCBiID0gaW50NCg2
LCBhKTsKKyAgICAgICAgICAgIHJldHVybiBiWzFdOworICAgICAgICB9CisgICAgICAgIGludCBm
b280KCkKKyAgICAgICAgeworICAgICAgICAgICAgaW50MiBhID0gaW50MigzLCA0KTsKKyAgICAg
ICAgICAgIGludDIgYiA9IGludDIoNSwgNik7CisgICAgICAgICAgICBpbnQ0IGMgPSBpbnQ0KGEs
IGIpOworICAgICAgICAgICAgcmV0dXJuIGNbMl07CisgICAgICAgIH0KKyAgICAgICAgYm9vbCBm
b281KCkKKyAgICAgICAgeworICAgICAgICAgICAgaW50NCBhID0gaW50NCgzLCA0LCA1LCA2KTsK
KyAgICAgICAgICAgIGludDIgYiA9IGludDIoNCwgNSk7CisgICAgICAgICAgICBpbnQ0IGMgPSBp
bnQ0KDMsIGIsIDYpOworICAgICAgICAgICAgcmV0dXJuIGEgPT0gYzsKKyAgICAgICAgfQorICAg
ICAgICBib29sIGZvbzYoKQorICAgICAgICB7CisgICAgICAgICAgICBpbnQyIGEgPSBpbnQyKDQs
IDUpOworICAgICAgICAgICAgaW50MyBiID0gaW50MygzLCBhKTsKKyAgICAgICAgICAgIGludDMg
YyA9IGludDMoMywgNCwgNik7CisgICAgICAgICAgICByZXR1cm4gYiA9PSBjOworICAgICAgICB9
CisgICAgICAgIHVpbnQgZm9vdSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHVpbnQyIGEgPSB1
aW50MigzLCA0KTsKKyAgICAgICAgICAgIHJldHVybiBhWzBdOworICAgICAgICB9CisgICAgICAg
IHVpbnQgZm9vdTIoKQorICAgICAgICB7CisgICAgICAgICAgICB1aW50MiBhID0gdWludDIoMywg
NCk7CisgICAgICAgICAgICB1aW50MyBiID0gdWludDMoYSwgNSk7CisgICAgICAgICAgICByZXR1
cm4gYlsxXTsKKyAgICAgICAgfQorICAgICAgICB1aW50IGZvb3UzKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdWludDMgYSA9IHVpbnQzKDMsIDQsIDUpOworICAgICAgICAgICAgdWludDQgYiA9
IHVpbnQ0KDYsIGEpOworICAgICAgICAgICAgcmV0dXJuIGJbMV07CisgICAgICAgIH0KKyAgICAg
ICAgdWludCBmb291NCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHVpbnQyIGEgPSB1aW50Migz
LCA0KTsKKyAgICAgICAgICAgIHVpbnQyIGIgPSB1aW50Mig1LCA2KTsKKyAgICAgICAgICAgIHVp
bnQ0IGMgPSB1aW50NChhLCBiKTsKKyAgICAgICAgICAgIHJldHVybiBjWzJdOworICAgICAgICB9
CisgICAgICAgIGJvb2wgZm9vdTUoKQorICAgICAgICB7CisgICAgICAgICAgICB1aW50NCBhID0g
dWludDQoMywgNCwgNSwgNik7CisgICAgICAgICAgICB1aW50MiBiID0gdWludDIoNCwgNSk7Cisg
ICAgICAgICAgICB1aW50NCBjID0gdWludDQoMywgYiwgNik7CisgICAgICAgICAgICByZXR1cm4g
YSA9PSBjOworICAgICAgICB9CisgICAgICAgIGJvb2wgZm9vdTYoKQorICAgICAgICB7CisgICAg
ICAgICAgICB1aW50MiBhID0gdWludDIoNCwgNSk7CisgICAgICAgICAgICB1aW50MyBiID0gdWlu
dDMoMywgYSk7CisgICAgICAgICAgICB1aW50MyBjID0gdWludDMoMywgNCwgNik7CisgICAgICAg
ICAgICByZXR1cm4gYiA9PSBjOworICAgICAgICB9CisgICAgICAgIGZsb2F0IGZvb2YoKQorICAg
ICAgICB7CisgICAgICAgICAgICBmbG9hdDIgYSA9IGZsb2F0MigzLiwgNC4pOworICAgICAgICAg
ICAgcmV0dXJuIGFbMF07CisgICAgICAgIH0KKyAgICAgICAgZmxvYXQgZm9vZjIoKQorICAgICAg
ICB7CisgICAgICAgICAgICBmbG9hdDIgYSA9IGZsb2F0MigzLiwgNC4pOworICAgICAgICAgICAg
ZmxvYXQzIGIgPSBmbG9hdDMoYSwgNS4pOworICAgICAgICAgICAgcmV0dXJuIGJbMV07CisgICAg
ICAgIH0KKyAgICAgICAgZmxvYXQgZm9vZjMoKQorICAgICAgICB7CisgICAgICAgICAgICBmbG9h
dDMgYSA9IGZsb2F0MygzLiwgNC4sIDUuKTsKKyAgICAgICAgICAgIGZsb2F0NCBiID0gZmxvYXQ0
KDYuLCBhKTsKKyAgICAgICAgICAgIHJldHVybiBiWzFdOworICAgICAgICB9CisgICAgICAgIGZs
b2F0IGZvb2Y0KCkKKyAgICAgICAgeworICAgICAgICAgICAgZmxvYXQyIGEgPSBmbG9hdDIoMy4s
IDQuKTsKKyAgICAgICAgICAgIGZsb2F0MiBiID0gZmxvYXQyKDUuLCA2Lik7CisgICAgICAgICAg
ICBmbG9hdDQgYyA9IGZsb2F0NChhLCBiKTsKKyAgICAgICAgICAgIHJldHVybiBjWzJdOworICAg
ICAgICB9CisgICAgICAgIGJvb2wgZm9vZjUoKQorICAgICAgICB7CisgICAgICAgICAgICBmbG9h
dDQgYSA9IGZsb2F0NCgzLiwgNC4sIDUuLCA2Lik7CisgICAgICAgICAgICBmbG9hdDIgYiA9IGZs
b2F0Mig0LiwgNS4pOworICAgICAgICAgICAgZmxvYXQ0IGMgPSBmbG9hdDQoMy4sIGIsIDYuKTsK
KyAgICAgICAgICAgIHJldHVybiBhID09IGM7CisgICAgICAgIH0KKyAgICAgICAgYm9vbCBmb29m
NigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZsb2F0MiBhID0gZmxvYXQyKDQuLCA1Lik7Cisg
ICAgICAgICAgICBmbG9hdDMgYiA9IGZsb2F0MygzLiwgYSk7CisgICAgICAgICAgICBmbG9hdDMg
YyA9IGZsb2F0MygzLiwgNC4sIDYuKTsKKyAgICAgICAgICAgIHJldHVybiBiID09IGM7CisgICAg
ICAgIH0KKyAgICAgICAgZG91YmxlIGZvb2QoKQorICAgICAgICB7CisgICAgICAgICAgICBkb3Vi
bGUyIGEgPSBkb3VibGUyKDMuLCA0Lik7CisgICAgICAgICAgICByZXR1cm4gYVswXTsKKyAgICAg
ICAgfQorICAgICAgICBkb3VibGUgZm9vZDIoKQorICAgICAgICB7CisgICAgICAgICAgICBkb3Vi
bGUyIGEgPSBkb3VibGUyKDMuLCA0Lik7CisgICAgICAgICAgICBkb3VibGUzIGIgPSBkb3VibGUz
KGEsIDUuKTsKKyAgICAgICAgICAgIHJldHVybiBiWzFdOworICAgICAgICB9CisgICAgICAgIGRv
dWJsZSBmb29kMygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRvdWJsZTMgYSA9IGRvdWJsZTMo
My4sIDQuLCA1Lik7CisgICAgICAgICAgICBkb3VibGU0IGIgPSBkb3VibGU0KDYuLCBhKTsKKyAg
ICAgICAgICAgIHJldHVybiBiWzFdOworICAgICAgICB9CisgICAgICAgIGRvdWJsZSBmb29kNCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRvdWJsZTIgYSA9IGRvdWJsZTIoMy4sIDQuKTsKKyAg
ICAgICAgICAgIGRvdWJsZTIgYiA9IGRvdWJsZTIoNS4sIDYuKTsKKyAgICAgICAgICAgIGRvdWJs
ZTQgYyA9IGRvdWJsZTQoYSwgYik7CisgICAgICAgICAgICByZXR1cm4gY1syXTsKKyAgICAgICAg
fQorICAgICAgICBib29sIGZvb2Q1KCkKKyAgICAgICAgeworICAgICAgICAgICAgZG91YmxlNCBh
ID0gZG91YmxlNCgzLiwgNC4sIDUuLCA2Lik7CisgICAgICAgICAgICBkb3VibGUyIGIgPSBkb3Vi
bGUyKDQuLCA1Lik7CisgICAgICAgICAgICBkb3VibGU0IGMgPSBkb3VibGU0KDMuLCBiLCA2Lik7
CisgICAgICAgICAgICByZXR1cm4gYSA9PSBjOworICAgICAgICB9CisgICAgICAgIGJvb2wgZm9v
ZDYoKQorICAgICAgICB7CisgICAgICAgICAgICBkb3VibGUyIGEgPSBkb3VibGUyKDQuLCA1Lik7
CisgICAgICAgICAgICBkb3VibGUzIGIgPSBkb3VibGUzKDMuLCBhKTsKKyAgICAgICAgICAgIGRv
dWJsZTMgYyA9IGRvdWJsZTMoMy4sIDQuLCA2Lik7CisgICAgICAgICAgICByZXR1cm4gYiA9PSBj
OworICAgICAgICB9CisgICAgYCk7CisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbXSwgW10pLCAzKTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxs
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbzIiLCBbXSwgW10pLCA0KTsKKyAgICBjaGVja0ludChwcm9n
cmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzMiLCBbXSwgW10pLCAzKTsKKyAgICBjaGVj
a0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzQiLCBbXSwgW10pLCA1KTsK
KyAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb281IiwgW10s
IFtdKSwgdHJ1ZSk7CisgICAgY2hlY2tCb29sKHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFt
LCAiZm9vNiIsIFtdLCBbXSksIGZhbHNlKTsKKyAgICBjaGVja1VpbnQocHJvZ3JhbSwgY2FsbEZ1
bmN0aW9uKHByb2dyYW0sICJmb291IiwgW10sIFtdKSwgMyk7CisgICAgY2hlY2tVaW50KHByb2dy
YW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vdTIiLCBbXSwgW10pLCA0KTsKKyAgICBjaGVj
a1VpbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb291MyIsIFtdLCBbXSksIDMp
OworICAgIGNoZWNrVWludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvb3U0Iiwg
W10sIFtdKSwgNSk7CisgICAgY2hlY2tCb29sKHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFt
LCAiZm9vdTUiLCBbXSwgW10pLCB0cnVlKTsKKyAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1
bmN0aW9uKHByb2dyYW0sICJmb291NiIsIFtdLCBbXSksIGZhbHNlKTsKKyAgICBjaGVja0Zsb2F0
KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vZiIsIFtdLCBbXSksIDMpOworICAg
IGNoZWNrRmxvYXQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb29mMiIsIFtdLCBb
XSksIDQpOworICAgIGNoZWNrRmxvYXQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJm
b29mMyIsIFtdLCBbXSksIDMpOworICAgIGNoZWNrRmxvYXQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9u
KHByb2dyYW0sICJmb29mNCIsIFtdLCBbXSksIDUpOworICAgIGNoZWNrQm9vbChwcm9ncmFtLCBj
YWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvb2Y1IiwgW10sIFtdKSwgdHJ1ZSk7CisgICAgY2hlY2tC
b29sKHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vZjYiLCBbXSwgW10pLCBmYWxz
ZSk7CisgICAgY2hlY2tEb3VibGUocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb29k
IiwgW10sIFtdKSwgMyk7CisgICAgY2hlY2tEb3VibGUocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHBy
b2dyYW0sICJmb29kMiIsIFtdLCBbXSksIDQpOworICAgIGNoZWNrRG91YmxlKHByb2dyYW0sIGNh
bGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vZDMiLCBbXSwgW10pLCAzKTsKKyAgICBjaGVja0RvdWJs
ZShwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvb2Q0IiwgW10sIFtdKSwgNSk7Cisg
ICAgY2hlY2tCb29sKHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vZDUiLCBbXSwg
W10pLCB0cnVlKTsKKyAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0s
ICJmb29kNiIsIFtdLCBbXSksIGZhbHNlKTsKK30KKwogbGV0IGZpbHRlciA9IC8uKi87IC8vIHJ1
biBldmVyeXRoaW5nIGJ5IGRlZmF1bHQKIGlmICh0aGlzWyJhcmd1bWVudHMiXSkgewogICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7Cg==
</data>
<flag name="review"
          id="341106"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>