<?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>226953</bug_id>
          
          <creation_ts>2021-06-12 08:40:56 -0700</creation_ts>
          <short_desc>Tensorflow.js Broken in Safari 15</short_desc>
          <delta_ts>2021-08-24 03:14:12 -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>WebGL</component>
          <version>Other</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=229439</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="M">heystoneybatter</reporter>
          <assigned_to name="Kyle Piddington">kpiddington</assigned_to>
          <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jonlee</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>kpiddington</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1769202</commentid>
    <comment_count>0</comment_count>
    <who name="M">heystoneybatter</who>
    <bug_when>2021-06-12 08:40:56 -0700</bug_when>
    <thetext>OVERVIEW:
Getting a consistent vertex/shader error message across every Tensorflow.js demo on the developer release of iOS 15.0 (using Safari 15). These TFJS applications and and models currently run correctly in iOS 14.6 or 14.7.

ERROR LOG:
Internal error compiling shader with Metal backend.
Please submit this shader, or website as a bug to https://bugs.webkit.org
Error: Failed to link vertex and fragment shaders.

STEPS TO REPRODUCE:
A few websites/demos where you can reproduce the error when running the applications in iOS 15 are:
https://emojiscavengerhunt.withgoogle.com/
https://magenta.tensorflow.org/demos/performance_rnn/index.html
https://storage.googleapis.com/tfjs-examples/addition-rnn/dist/index.html

If more code samples are needed, they can also be accessed here: 
https://www.tensorflow.org/js/demos

ACTUAL RESULTS:
The demos/programs error out as the models cannot be processed.

EXPECTED BEHAVIOR:
The applications above all run well in iOS 14.6 and 14.7 on my iPhone X.

HARDWARE:
The error occurs in Safari 15.0 in iOS 15 on my iPhone XS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769220</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-12 14:57:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/79246230&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769557</commentid>
    <comment_count>2</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-06-14 14:51:15 -0700</bug_when>
    <thetext>Kyle, would you be able to triage this? TensorFlow.js is a major WebGL use case so investigating this regression is urgent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769567</commentid>
    <comment_count>3</comment_count>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-06-14 15:10:40 -0700</bug_when>
    <thetext>From the GLSL:
2021-06-14 15:07:04.453 MiniBrowser[44123:3425024] // GLSL
//
// #version 300 es
//     precision highp float;
//     precision highp int;
//     precision highp sampler2D;
//     in vec2 resultUV;
//     out vec4 outputColor;
//     const vec2 halfCR = vec2(0.5, 0.5);
// 
//     struct ivec5
//     {
//       int x;
//       int y;
//       int z;
//       int w;
//       int u;
//     };
// 
//     struct ivec6
//     {
//       int x;
//       int y;
//       int z;
//       int w;
//       int u;
//       int v;
//     };
// 
//     
//       bool isNaN(float val) {
//         return (val &lt; 1.0 || 0.0 &lt; val || val == 0.0) ? false : true;
//       }
// 
//       bvec4 isNaN(vec4 val) {
//         return bvec4(
//           isNaN(val.x),
//           isNaN(val.y),
//           isNaN(val.z),
//           isNaN(val.w)
//         );
//       }
// 
//       bool hasNaN(vec4 values) {
//         return any(bvec4(
//           isNaN(values.x),
//           isNaN(values.y),
//           isNaN(values.z),
//           isNaN(values.w)
//         ));
//       }
//     
// 
//     float getNaN(vec4 values) {
//       return dot(vec4(1), values);
//     }
// 
//     
//       #define round(value) newRound(value)
//       int newRound(float value) {
//         return int(floor(value + 0.5));
//       }
// 
//       ivec4 newRound(vec4 value) {
//         return ivec4(floor(value + vec4(0.5)));
//       }
//     
// 
//     int imod(int x, int y) {
//       return x - y * (x / y);
//     }
// 
//     //Based on the work of Dave Hoskins
//     //https://www.shadertoy.com/view/4djSRW
//     #define HASHSCALE1 443.8975
//     float random(float seed){
//       vec2 p = resultUV * seed;
//       vec3 p3  = fract(vec3(p.xyx) * HASHSCALE1);
//       p3 += dot(p3, p3.yzx + 19.19);
//       return fract((p3.x + p3.y) * p3.z);
//     }
// 
//     
// vec2 uvFromFlat(int texNumR, int texNumC, int index) {
//   int texR = index / texNumC;
//   int texC = index - texR * texNumC;
//   return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);
// }
// vec2 packedUVfrom1D(int texNumR, int texNumC, int index) {
//   int texelIndex = index / 2;
//   int texR = texelIndex / texNumC;
//   int texC = texelIndex - texR * texNumC;
//   return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);
// }
// 
//     
// vec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR,
//   int texNumC, int row, int col) {
//   int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2);
//   int texR = texelIndex / texNumC;
//   int texC = texelIndex - texR * texNumC;
//   return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);
// }
// 
//     
// vec2 packedUVfrom3D(int texNumR, int texNumC,
//     int texelsInBatch, int texelsInLogicalRow, int b,
//     int row, int col) {
//   int index = b * texelsInBatch + (row / 2) * texelsInLogicalRow + (col / 2);
//   int texR = index / texNumC;
//   int texC = index - texR * texNumC;
//   return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);
// }
// 
//   
//   float getChannel(vec4 frag, vec2 innerDims) {
//     vec2 modCoord = mod(innerDims, 2.);
//     return modCoord.x == 0. ?
//       (modCoord.y == 0. ? frag.r : frag.g) :
//       (modCoord.y == 0. ? frag.b : frag.a);
//   }
//   float getChannel(vec4 frag, int dim) {
//     float modCoord = mod(float(dim), 2.);
//     return modCoord == 0. ? frag.r : frag.g;
//   }
// 
// 
//     float sampleTexture(sampler2D textureSampler, vec2 uv) {
//       return texture(textureSampler, uv).r;
//     }
//   
// 
//     void setOutput(vec4 val) {
//       outputColor = val;
//     }
//   
// uniform sampler2D A;
// uniform int offsetA;
// 
//     ivec2 getOutputCoords() {
//       ivec2 resTexRC = ivec2(resultUV.yx *
//                              vec2(64, 2));
// 
//       int index = resTexRC.x * 2 + resTexRC.y;
//       int r = 2 * (index / 2);
//       int c = imod(index, 2) * 2;
// 
//       return ivec2(r, c);
//     }
//   
// 
//     vec4 getA(int row, int col) {
//       vec2 uv = packedUVfrom2D(2, 64, 2, row, col);
//       return texture(A, uv);
//     }
//   
//     vec4 getAAtOutCoords() {
//       ivec2 coords = getOutputCoords();
//       
//       vec4 outputValue = getA(coords.x, coords.y);
//       return outputValue;
//     }
//   
// 
//       uniform float NAN;
//       vec4 unaryOperation(vec4 x) {
//         
//   vec4 result = log(x);
//   vec4 isNaN = vec4(lessThan(x, vec4(0.0)));
//   result.r = isNaN.r == 1.0 ? NAN : result.r;
//   result.g = isNaN.g == 1.0 ? NAN : result.g;
//   result.b = isNaN.b == 1.0 ? NAN : result.b;
//   result.a = isNaN.a == 1.0 ? NAN : result.a;
// 
//   return result;
// 
//       }
// 
//       void main() {
//         vec4 x = getAAtOutCoords();
//         vec4 y = unaryOperation(x);
// 
//         setOutput(y);
//       }
//     

Our issue is translating 
//       uniform float NAN;

NAN in this case is a reserved keyword.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769568</commentid>
    <comment_count>4</comment_count>
      <attachid>431370</attachid>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-06-14 15:21:12 -0700</bug_when>
    <thetext>Created attachment 431370
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769570</commentid>
    <comment_count>5</comment_count>
      <attachid>431370</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-06-14 15:22:03 -0700</bug_when>
    <thetext>Comment on attachment 431370
Patch

Great! r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769571</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-06-14 15:22:20 -0700</bug_when>
    <thetext>Note that there are important steps to take when updating ANGLE. See https://trac.webkit.org/wiki/UpdatingANGLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769602</commentid>
    <comment_count>7</comment_count>
      <attachid>431383</attachid>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-06-14 16:28:30 -0700</bug_when>
    <thetext>Created attachment 431383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769620</commentid>
    <comment_count>8</comment_count>
      <attachid>431383</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-06-14 16:50:09 -0700</bug_when>
    <thetext>Comment on attachment 431383
Patch

Infinity support looks good. r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769951</commentid>
    <comment_count>9</comment_count>
      <attachid>431383</attachid>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-06-15 13:55:11 -0700</bug_when>
    <thetext>Comment on attachment 431383
Patch

Test failure seems unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769952</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-15 14:02:59 -0700</bug_when>
    <thetext>Committed r278898 (238839@main): &lt;https://commits.webkit.org/238839@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431383.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773506</commentid>
    <comment_count>11</comment_count>
    <who name="M">heystoneybatter</who>
    <bug_when>2021-06-29 13:23:08 -0700</bug_when>
    <thetext>I just checked the examples (and my app) against the new iOS15 Beta 2 and this bug still exists for the Tensorflow.js examples. 

Was the conclusion that Tensorflow.js needs to make changes to support Safari in iOS15 or was this patch not included in the new release? Just wanted to make sure I understood and can ping the TFJS team on Github if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773743</commentid>
    <comment_count>12</comment_count>
    <who name="M">heystoneybatter</who>
    <bug_when>2021-06-30 07:57:45 -0700</bug_when>
    <thetext>(In reply to Kenneth Russell from comment #2)
&gt; Kyle, would you be able to triage this? TensorFlow.js is a major WebGL use
&gt; case so investigating this regression is urgent.

Hey Kenneth -- I just wanted to ping you on this since I noticed this error/bug is still present in Safari/Webkit in the new iOS15 Beta 2. I wasn&apos;t sure if I should change the status as I&apos;m not on the WebKit team and don&apos;t have much experience with Radar. Is this now in the TFJS team&apos;s hands or can it get a second look here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773796</commentid>
    <comment_count>13</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2021-06-30 09:50:43 -0700</bug_when>
    <thetext>The fix did not make it into beta 2. It likely will make it into the next one.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431370</attachid>
            <date>2021-06-14 15:21:12 -0700</date>
            <delta_ts>2021-06-14 16:28:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226953-20210614152110.patch</filename>
            <type>text/plain</type>
            <size>1488</size>
            <attacher name="Kyle Piddington">kpiddington</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggMjg1MTNkN2JhNTE5Y2JhMzc0ZDlhNDYyMDkzYTM0Y2Y1NjcwNmE2My4uYTRjZmU1YTc5NmJl
YmY0YzliNTVlNDkxNDJhNjllMmE3ZjMyNjJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA2LTE0ICBLeWxlIFBpZGRpbmd0b24gIDxrcGlkZGlu
Z3RvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGVuc29yZmxvdy5qcyBCcm9rZW4gaW4gU2FmYXJp
IDE1CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5
NTMKKworICAgICAgICBUZW5zb3JmbG93IHNoYWRlcnMgdXNlIGEgJ05BTicgdW5pZm9ybS4gVGhp
cyBpcyBhIHJlc2VydmVkIGtleXdvcmQKKyAgICAgICAgaW4gbWV0YWwuIEFkZCBOQU4gdG8gdGhl
IHJlc2VydmVkIGxpc3QuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3Qu
Y3BwOgorICAgICAgICAoc2g6OkdldE1zbEtleXdvcmRzKToKKwogMjAyMS0wNi0xMSAgRWxlbmkg
TWFyaWEgU3RlYSAgPGVzdGVhQGlnYWxpYS5jb20+CiAKICAgICAgICAgQU5HTEUgRUdMIGFuZCBH
TEVTIGxpYnJhcmllcyBzaG91bGQgbGluayB3aXRoIGxpYiBkbC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRh
bERpcmVjdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QuY3BwCmluZGV4IGM3YTMxZjE4OWEwMTcyMTY5Zjg4
YTc3MzAxNWJmOWQ5ZjdkZDU0NjAuLjU1ZDQ3MjU1MDYzOTQ2ODUzMjQwZmU4NGM5YWYzNTFjNTFm
ZThjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0LmNw
cApAQCAtOTA2LDcgKzkwNiw3IEBAIHN0YXRpYyBzdGQ6OnNldDxJbW11dGFibGVTdHJpbmc+IEdl
dE1zbEtleXdvcmRzKCkKICAgICBrZXl3b3Jkcy5lbXBsYWNlKCJ2aXJ0dWFsIik7CiAgICAga2V5
d29yZHMuZW1wbGFjZSgidm9sYXRpbGUiKTsKICAgICBrZXl3b3Jkcy5lbXBsYWNlKCJ3Y2hhcl90
Iik7Ci0KKyAgICBrZXl3b3Jkcy5lbXBsYWNlKCJOQU4iKTsKICAgICByZXR1cm4ga2V5d29yZHM7
CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431383</attachid>
            <date>2021-06-14 16:28:30 -0700</date>
            <delta_ts>2021-06-15 14:03:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226953-20210614162828.patch</filename>
            <type>text/plain</type>
            <size>2641</size>
            <attacher name="Kyle Piddington">kpiddington</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggMjg1MTNkN2JhNTE5Y2JhMzc0ZDlhNDYyMDkzYTM0Y2Y1NjcwNmE2My4uYjNkMWIwMzhkMjIx
NzBlOTM4ZTFmNzRmODU3MDIwMzRiNjU1OGFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA2LTE0ICBLeWxlIFBpZGRpbmd0b24gIDxrcGlkZGlu
Z3RvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGVuc29yZmxvdy5qcyBCcm9rZW4gaW4gU2FmYXJp
IDE1CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5
NTMKKworICAgICAgICBUZW5zb3JmbG93IHNoYWRlcnMgdXNlIGEgJ05BTicgdW5pZm9ybS4gVGhp
cyBpcyBhIHJlc2VydmVkIGtleXdvcmQKKyAgICAgICAgaW4gbWV0YWwuIEFkZCBOQU4gdG8gdGhl
IHJlc2VydmVkIGxpc3QuCisKKyAgICAgICAgJ2luZicgY29uc3RhbnRzIG5lZWQgdG8gYmUgcmVw
bGFjZWQgd2l0aCBJTkZJTklUWSwgbXVjaCBsaWtlIG5hbiBjb25zdGFudHMgbmVlZCB0byBiZSBy
ZXBsYWNlZCB3aXRoIE5BTgorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC5j
cHA6CisgICAgICAgIChzaDo6R2V0TXNsS2V5d29yZHMpOgorCiAyMDIxLTA2LTExICBFbGVuaSBN
YXJpYSBTdGVhICA8ZXN0ZWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBBTkdMRSBFR0wgYW5kIEdM
RVMgbGlicmFyaWVzIHNob3VsZCBsaW5rIHdpdGggbGliIGRsLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFs
RGlyZWN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC5jcHAKaW5kZXggYzdhMzFmMTg5YTAxNzIxNjlmODhh
NzczMDE1YmY5ZDlmN2RkNTQ2MC4uNTVkNDcyNTUwNjM5NDY4NTMyNDBmZTg0YzlhZjM1MWM1MWZl
OGNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QuY3Bw
CkBAIC05MDYsNyArOTA2LDcgQEAgc3RhdGljIHN0ZDo6c2V0PEltbXV0YWJsZVN0cmluZz4gR2V0
TXNsS2V5d29yZHMoKQogICAgIGtleXdvcmRzLmVtcGxhY2UoInZpcnR1YWwiKTsKICAgICBrZXl3
b3Jkcy5lbXBsYWNlKCJ2b2xhdGlsZSIpOwogICAgIGtleXdvcmRzLmVtcGxhY2UoIndjaGFyX3Qi
KTsKLQorICAgIGtleXdvcmRzLmVtcGxhY2UoIk5BTiIpOwogICAgIHJldHVybiBrZXl3b3JkczsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0VtaXRNZXRhbC5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJl
Y3QvRW1pdE1ldGFsLmNwcAppbmRleCAwYTBkZTQ0NzIyZmE2YjhiNDgyMmU3OWRmZjk1ZjdkZTU5
ZDJjNzg0Li5iZDBkMzU2Y2MyZGU5ZjA3ZTg3OGY0YWRiMWM1YjBkYzg4NWM4ZDM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFu
c2xhdG9yTWV0YWxEaXJlY3QvRW1pdE1ldGFsLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvRW1pdE1l
dGFsLmNwcApAQCAtMTQ5OCw2ICsxNDk4LDE3IEBAIHZvaWQgR2VuTWV0YWxUcmF2ZXJzZXI6OmVt
aXRTaW5nbGVDb25zdGFudChjb25zdCBUQ29uc3RhbnRVbmlvbiAqY29uc3QgY29uc3RVbmlvCiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgbU91dCA8PCAiTkFOIjsKICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmIChBTkdMRV9VTkxJS0VMWShpc2luZihjb25zdFVuaW9uLT5nZXRG
Q29uc3QoKSkpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmKGNvbnN0VW5pb24t
PmdldEZDb25zdCgpIDwgMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IG1PdXQgPDwgIi1JTkZJTklUWSI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1PdXQgPDwgIklO
RklOSVRZIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgbU91dCA8PCBjb25zdFVuaW9uLT5n
ZXRGQ29uc3QoKSA8PCAiZiI7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>