{"id":520,"date":"2026-03-13T13:39:55","date_gmt":"2026-03-13T18:39:55","guid":{"rendered":"https:\/\/sandbox.dudesign.pe\/Desarrollo\/?page_id=520"},"modified":"2026-03-13T13:51:23","modified_gmt":"2026-03-13T18:51:23","slug":"image-turbulence","status":"publish","type":"page","link":"https:\/\/sandbox.dudesign.pe\/Desarrollo\/image-turbulence\/","title":{"rendered":"Image Turbulence"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"520\" class=\"elementor elementor-520\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"e-con-top elementor-element elementor-element-6f05a67 e-con-full e-flex e-con e-parent\" data-id=\"6f05a67\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<\/div>\n\t\t<div class=\"e-con-top elementor-element elementor-element-c77353b e-con-full e-flex e-con e-parent\" data-id=\"c77353b\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-782fe00 e-con-full mdw-turbulence-effect e-flex e-con e-child\" data-id=\"782fe00\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6d32108 elementor-widget elementor-widget-image\" data-id=\"6d32108\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"819\" height=\"1024\" src=\"https:\/\/sandbox.dudesign.pe\/Desarrollo\/wp-content\/uploads\/2026\/03\/maritza-819x1024.webp\" class=\"attachment-large size-large wp-image-484\" alt=\"\" srcset=\"https:\/\/sandbox.dudesign.pe\/Desarrollo\/wp-content\/uploads\/2026\/03\/maritza-819x1024.webp 819w, https:\/\/sandbox.dudesign.pe\/Desarrollo\/wp-content\/uploads\/2026\/03\/maritza-240x300.webp 240w, https:\/\/sandbox.dudesign.pe\/Desarrollo\/wp-content\/uploads\/2026\/03\/maritza-768x960.webp 768w, https:\/\/sandbox.dudesign.pe\/Desarrollo\/wp-content\/uploads\/2026\/03\/maritza.webp 1056w\" sizes=\"(max-width: 819px) 100vw, 819px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-19b9d04 elementor-widget elementor-widget-html\" data-id=\"19b9d04\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\r\nbody{\r\n    --smooth-scroll: true;\r\n    --fallback-circle: true;\r\n}\r\n[class^='mdw-turbulence-effect'],\r\n[class*=' mdw-turbulence-effect']{\r\n    --text-gap: 20px;\r\n}\r\n[class^='mdw-turbulence-effect'].anim .elementor-widget-heading,\r\n[class*=' mdw-turbulence-effect'].anim .elementor-widget-heading,\r\n[class^='mdw-turbulence-effect'].anim .elementor-widget-image svg,\r\n[class*=' mdw-turbulence-effect'].anim .elementor-widget-image svg{\r\n    transition: all 1s cubic-bezier(0,.33,.07,1.03);\r\n}\r\n[class^='mdw-turbulence-effect'] .elementor-widget-heading,\r\n[class*=' mdw-turbulence-effect'] .elementor-widget-heading{\r\n    opacity: 0;\r\n    white-space: nowrap;\r\n    max-width: unset !important;\r\n    display: flex;\r\n    justify-content: center;\r\n}\r\n[class^='mdw-turbulence-effect'] .elementor-widget-heading.show,\r\n[class*=' mdw-turbulence-effect'] .elementor-widget-heading.show,\r\nhtml.elementor-html [class^='mdw-turbulence-effect'] .elementor-widget-heading,\r\nhtml.elementor-html [class*=' mdw-turbulence-effect'] .elementor-widget-heading{\r\n    opacity: 1;\r\n}\r\n[class^='mdw-turbulence-effect'] p,\r\n[class*=' mdw-turbulence-effect'] p{\r\n    margin-bottom: 0;\r\n}\r\n[class^='mdw-turbulence-effect'] .elementor-widget-image svg,\r\n[class*=' mdw-turbulence-effect'] .elementor-widget-image svg{\r\n    position: absolute;\r\n    left: 0;\r\n    top: unset;\r\n}\r\n[class^='mdw-turbulence-effect'] .elementor-widget-image.eye image,\r\n[class*=' mdw-turbulence-effect'] .elementor-widget-image.eye image{\r\n    transform: none !important;\r\n}\r\n[class^='mdw-turbulence-effect'] .elementor-widget-image.eye.blur g,\r\n[class*=' mdw-turbulence-effect'] .elementor-widget-image.eye.blur g{\r\n    transform: scale(0.95);\r\n    transform-origin: center;\r\n}\r\n[class^='mdw-turbulence-effect'] .elementor-widget-image.eye.blur image,\r\n[class*=' mdw-turbulence-effect'] .elementor-widget-image.eye.blur image{\r\n    transform: scale(1.05) !important;\r\n}\r\n[class^='mdw-turbulence-effect'] .elementor-widget-image img,\r\n[class*=' mdw-turbulence-effect'] .elementor-widget-image img{\r\n    opacity: 0;\r\n}\r\nhtml.elementor-html [class^='mdw-turbulence-effect'] .elementor-widget-image img,\r\nhtml.elementor-html [class*=' mdw-turbulence-effect'] .elementor-widget-image img{\r\n    opacity: 1;\r\n}\r\n[class^='mdw-turbulence-effect'] .elementor-widget-text-editor,\r\n[class*=' mdw-turbulence-effect'] .elementor-widget-text-editor{\r\n    max-width: var(--container-widget-width, 100%) !important;\r\n}\r\n\r\n@media (max-width:767px){\r\n[class^='mdw-turbulence-effect'],\r\n[class*=' mdw-turbulence-effect']{\r\n    --text-gap: 10px;\r\n}\r\n[class^='mdw-turbulence-effect'] .elementor-widget-heading,\r\n[class*=' mdw-turbulence-effect'] .elementor-widget-heading,\r\n[class^='mdw-turbulence-effect'] .elementor-widget-text-editor,\r\n[class*=' mdw-turbulence-effect'] .elementor-widget-text-editor{\r\n    position: static !important;\r\n}\r\n[class^='mdw-turbulence-effect'] .elementor-widget-heading,\r\n[class*=' mdw-turbulence-effect'] .elementor-widget-heading{\r\n    max-width: 100% !important;\r\n}\r\n}\r\n<\/style>\r\n<script src=\"https:\/\/code.jquery.com\/jquery-2.2.4.min.js\"><\/script>\r\n<script>\r\nif(!MDWNonce110){\r\nvar MDWNonce110 = true\r\n;(function($){\r\n\r\nvar selector = \"[class^='mdw-turbulence-effect'], [class*=' mdw-turbulence-effect']\",\r\n    image = [],\r\n    img = [],\r\n    title1 = [],\r\n    title2 = [],\r\n    heading1 = [],\r\n    heading2 = [],\r\n    windowHeight,\r\n    windowWidth,\r\n    imgWidth = [],\r\n    imgHeight = [],\r\n    imgOffset = [],\r\n    maxRadius = [],\r\n    translate = [],\r\n    type = [],\r\n    brightness = { start: 0.8, end: 1.0 },\r\n    scale = { start: 0.9, end: 1.0 },\r\n    isSafari,\r\n    fallbackCircle,\r\n    previousWidth\r\n        \r\nfunction getValue(el, prop){ return getComputedStyle(el[0]).getPropertyValue(prop) }\r\n\r\nfunction init(){\r\n$(selector).each(function(i){\r\n    var $this = $(this)\r\n    image[i] = $this.find('.elementor-widget-image')\r\n    img[i] = image[i].find('img')\r\n    title1[i] = $this.find('.elementor-widget-heading').eq(0)\r\n    title2[i] = $this.find('.elementor-widget-heading').eq(1)\r\n    heading1[i] = title1[i].find('.elementor-heading-title')\r\n    heading2[i] = title2[i].find('.elementor-heading-title')\r\n    $('body').append('<div class=\"mdw-100vh\" style=\"height: 100vh;display: none;\"><\/div>')\r\n    isSafari = \/^((?!chrome|android).)*safari\/i.test(navigator.userAgent)\r\n    fallbackCircle = getValue($('body'),'--fallback-circle') && getValue($('body'),'--fallback-circle') == 'true'\r\n})\r\n}\r\n\r\nfunction setValues(){\r\n\r\nwindowHeight = $('.mdw-100vh').height()\r\nwindowWidth = $(window).width()\r\n\r\n$(selector).each(function(i){\r\n    var $this = $(this)\r\n    \r\n    imgWidth[i] = img[i].width()\r\n    imgHeight[i] = img[i].height()\r\n    maxRadius[i] = Math.sqrt(Math.pow(imgWidth[i]\/2,2)+Math.pow(imgHeight[i]\/2,2))+10\r\n    if(isSafari && !fallbackCircle && maxRadius[i] > 850) maxRadius[i] = 850\r\n})\r\n}\r\n\r\nfunction setSVG(){\r\n$(selector).each(function(i){\r\n    var $this = $(this),\r\n    imgNaturalWidth = img[i][0].naturalWidth,\r\n    imgNaturalHeight = img[i][0].naturalHeight,\r\n    imgContainer =  image[i].find('.elementor-widget-container').length ? image[i].find('.elementor-widget-container') : image[i],\r\n    imgSrcset = img[i].attr('srcset').split(' '),\r\n    imgUrl = imgSrcset[imgSrcset.length - 2],\r\n    className = $this.attr('class'),\r\n    classNameIndex = className.indexOf('mdw-turbulence-effect'),\r\n    shortClass = className.substring(classNameIndex, className.indexOf(' ',classNameIndex)),\r\n    values = shortClass.split('-'),\r\n    blurHTML = shortClass.search('blur') == -1 || windowWidth < 768 || isSafari ? '' : '<feGaussianBlur in=\"displacement\" stdDeviation=\"10\"><\/feGaussianBlur>',\r\n    shapeHTML = `<circle cx=\"50%\" cy=\"50%\" fill=\"white\" class=\"mask\" style=\"filter: url(#MDWFilter${i+1});\"><\/circle>`,\r\n    eyeClass = '',\r\n    effectResolution = 0.03,\r\n    effectArea = 50,\r\n    effectOctave = 3,\r\n    effectHTML,\r\n    svgHTML\r\n    \r\n    values.forEach(function(value, index){\r\n        if(value=='resolution' && values[index+1] && !isNaN(values[index+1])){ effectResolution = parseFloat(values[index+1])*0.003 }\r\n        if(value=='area' && values[index+1] && !isNaN(values[index+1])){ effectArea = parseFloat(values[index+1])*5 }\r\n    })\r\n    \r\n    if(effectArea > 100) effectOctave = 1\r\n    \r\n    if(blurHTML){\r\n        image[i].addClass('blur')\r\n        effectResolution = 0.01\r\n        effectArea = 150\r\n        effectOctave = 3\r\n    }\r\n    \r\n    type[i] = 'circle'\r\n    if(shortClass.search('eye') != -1){\r\n        type[i] = 'eye'\r\n        image[i].addClass('eye')\r\n        effectResolution = 0.06\r\n        if(blurHTML) effectResolution = 0\r\n        effectArea = 50\r\n        shapeHTML = `<path d=\"M 0 ${imgHeight[i]\/2} Q ${imgWidth[i]\/2} ${3*imgHeight[i]\/2 - 2*12} ${imgWidth[i]} ${imgHeight[i]\/2} Q ${imgWidth[i]\/2} ${2*12 - imgHeight[i]\/2} 0 ${imgHeight[i]\/2}\" fill=\"white\" class=\"mask\" style=\"filter: url(#MDWFilter${i+1});\"><\/path>`\r\n    }\r\n    \r\n    if( fallbackCircle && (windowWidth < 768 || isSafari) ){\r\n        effectHTML = ''\r\n    }else{\r\n        effectHTML = \r\n        `<defs>\r\n            <filter id=\"MDWFilter${i+1}\">\r\n                <feTurbulence type=\"fractalNoise\" baseFrequency=\"${effectResolution}\" numOctaves=\"${effectOctave}\" result=\"noise\"><\/feTurbulence>\r\n                \r\n                <feDisplacementMap in=\"SourceGraphic\" in2=\"noise\" scale=\"${effectArea}\" xChannelSelector=\"R\" yChannelSelector=\"G\"><\/feDisplacementMap>\r\n                ${blurHTML}\r\n            <\/filter>\r\n            <mask id=\"MDWCircle${i+1}\">\r\n                ${shapeHTML}\r\n            <\/mask>\r\n        <\/defs>`\r\n    }\r\n    \r\n    svgHTML = \r\n    `<svg width=\"${imgWidth[i]}\" height=\"${imgHeight[i]}\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\" viewBox=\"0 0 ${imgWidth[i]} ${imgHeight[i]}\">\r\n        ${effectHTML}\r\n        <g mask=\"url(#MDWCircle${i+1})\">\r\n            <image href=\"${imgUrl}\" width=\"${imgWidth[i]}\" height=\"${imgHeight[i]}\" style=\"transform: scale(${scale.start}); transform-origin: center center; filter: brightness(${brightness.start});\" preserveAspectRatio=\"xMidYMid slice\"><\/image>\r\n        <\/g>\r\n    <\/svg>`\r\n    \r\n    imgContainer.find('svg').remove()\r\n    imgContainer.append(svgHTML)\r\n})\r\n}\r\n\r\nfunction getOffset(el){\r\n    var left = 0, top = 0\r\n    do{\r\n      if (!isNaN(el.offsetLeft)) left += el.offsetLeft\r\n      if (!isNaN(el.offsetTop)) top += el.offsetTop\r\n    }while(el = el.offsetParent)\r\n    return { top, left }\r\n}\r\n\r\nfunction setInitTranslate(){\r\n\r\nvar scrollTop = $(window).scrollTop()\r\n    \r\n$(selector).each(function(i){\r\n    var $this = $(this),\r\n    H1Offset = getOffset(heading1[i][0]),\r\n    H2Offset = getOffset(heading2[i][0]),\r\n    imgOffset = getOffset(img[i][0]),\r\n    textGap = !isNaN(parseFloat(getValue($this, '--text-gap'))) ? parseFloat(getValue($this, '--text-gap')) : 20,\r\n    T1X,T1Y,T2X,T2Y\r\n    \r\n    T1X = - H1Offset.left + (windowWidth - heading1[i].width() - heading2[i].width() - textGap) \/ 2\r\n    T1Y = imgOffset.top - H1Offset.top + (imgHeight[i] - heading1[i].height())\/2\r\n    T2X = - H2Offset.left + (windowWidth + heading1[i].width() - heading2[i].width() + textGap) \/ 2\r\n    T2Y = imgOffset.top - H2Offset.top + (imgHeight[i] - heading2[i].height())\/2\r\n    \r\n    translate[i] = {T1X,T1Y,T2X,T2Y}\r\n})\r\n}\r\n\r\nfunction getScrollValue(imgOffset, imgHeight, startPercent, endPercent, inverse= false){\r\n    var start = startPercent\/100*windowHeight,\r\n    end = endPercent\/100*windowHeight,\r\n    scrollValue = (imgOffset.top+imgHeight\/2-start)\/(end - start),\r\n    value = Math.max(Math.min(scrollValue,1),0)\r\n        \r\n    if(inverse) value = 1 - value\r\n    return value\r\n}\r\n\r\nfunction revealImage(startPercent){\r\n    \r\nvar imgStartPercent = 90,\r\n    imgEndPercent = 60\r\n\r\n$(selector).each(function(i){\r\n    \r\n    imgOffset[i] = img[i][0].getBoundingClientRect()\r\n    \r\n    var svg = image[i].find('svg'),\r\n    svgCircle = svg.find('circle'),\r\n    svgPath = svg.find('path'),\r\n    svgGroup = svg.find('g'),\r\n    svgImage = svg.find('image'),\r\n    revealAmount = getScrollValue(imgOffset[i], imgHeight[i], imgStartPercent, imgEndPercent),\r\n    currentBrightness = brightness.start + (brightness.end - brightness.start)*revealAmount,\r\n    currentScale = scale.start + (scale.end - scale.start)*revealAmount,\r\n    curretRadius = maxRadius[i]*revealAmount\r\n    \r\n    svgImage.css({\r\n        'filter': `brightness(${currentBrightness})`,\r\n        'transform': `scale(${currentScale})`\r\n    })\r\n    \r\n    if( fallbackCircle && (windowWidth < 768 || isSafari) ){\r\n        if( type[i] == 'circle' ) {\r\n            svg.css('clip-path', `circle(${curretRadius}px at 50% 50%)`)\r\n        }else{\r\n            svg.css('clip-path', `ellipse(50% ${revealAmount*50}% at 50% 50%)`)\r\n        }\r\n    }else{\r\n        if( type[i] == 'circle' ) {\r\n            svgCircle.attr('r', curretRadius)    \r\n        }else{\r\n            svgGroup.attr('mask', `url(#MDWCircle${i+1})`)\r\n            svgPath.attr('d', `M 0 ${imgHeight[i]\/2} Q ${imgWidth[i]\/2} ${imgHeight[i]\/2 + (imgHeight[i] - 2*12)*revealAmount} ${imgWidth[i]} ${imgHeight[i]\/2} Q ${imgWidth[i]\/2} ${imgHeight[i]\/2 + (2*12 - imgHeight[i])*revealAmount} 0 ${imgHeight[i]\/2}`)\r\n        }\r\n    }\r\n})\r\n}\r\n\r\nfunction moveText(startPercent){\r\n    \r\nvar titleStartPercent = 90,\r\n    titleEndPercent = 50\r\n\r\n$(selector).each(function(i){\r\n    \r\n    var $this = $(this),\r\n    translateAmount = getScrollValue(imgOffset[i], imgHeight[i], titleStartPercent, titleEndPercent, true),\r\n    T1T = {x: translate[i].T1X*translateAmount, y: translate[i].T1Y*translateAmount}\r\n    T2T = {x: translate[i].T2X*translateAmount, y: translate[i].T2Y*translateAmount}\r\n    \r\n    title1[i].css('transform', `translate(${T1T.x}px, ${T1T.y}px)`)\r\n    title2[i].css('transform', `translate(${T2T.x}px, ${T2T.y}px)`)\r\n    title1[i].addClass('show')\r\n    title2[i].addClass('show')\r\n    setTimeout(function(){ $this.addClass('anim') }, 50)\r\n\r\n})\r\n}\r\n\r\nfunction scrollAnimation(){\r\n    revealImage()\r\n    moveText()\r\n}\r\n\r\nfunction runAnimation(e){\r\n    if(e.type=='load') init()\r\n    setValues()\r\n    setSVG()\r\n    setInitTranslate()\r\n    scrollAnimation()\r\n}\r\n\r\n$(document).ready(init)\r\n$(window).on('scroll', scrollAnimation)\r\n$(window).on('load resize', function(e){\r\n    if(e.type=='resize' && $(window).width() < 768 && $(window).width() == previousWidth) return\r\n    runAnimation(e)\r\n    setTimeout(function(){ runAnimation(e) }, 100)\r\n    setTimeout(function(){ runAnimation(e) }, 500)\r\n    setTimeout(function(){ runAnimation(e) }, 1000)\r\n    previousWidth = $(window).width()\r\n})\r\n\r\n})(jQuery)\r\n}\r\n<\/script>\r\n\r\n<!-- Smooth Scroll with Lenis JS -->\r\n\r\n<style>\r\nhtml.lenis, html.lenis body {\r\n  height: auto;\r\n}\r\n.lenis.lenis-smooth {\r\n  scroll-behavior: auto !important;\r\n}\r\n.lenis.lenis-smooth [data-lenis-prevent] {\r\n  overscroll-behavior: contain;\r\n}\r\n.lenis.lenis-stopped {\r\n  overflow: hidden;\r\n}\r\n.lenis.lenis-smooth iframe {\r\n  pointer-events: none;\r\n}\r\n<\/style>\r\n<script src=\"https:\/\/unpkg.com\/lenis@1.1.11\/dist\/lenis.min.js\"><\/script> \r\n<script>\r\n$(document).ready(function(){\r\n\r\nvar smoothScroll = getComputedStyle(document.body).getPropertyValue('--smooth-scroll'),\r\n    smoothScroll = smoothScroll && smoothScroll == 'true'\r\n\r\nif(smoothScroll){\r\n    var lenis = new Lenis()\r\n    function raf(time) {\r\n      lenis.raf(time)\r\n      requestAnimationFrame(raf)\r\n    }\r\n    requestAnimationFrame(raf)\r\n}\r\n})\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3f56112 elementor-widget__width-initial elementor-absolute elementor-widget elementor-widget-heading\" data-id=\"3f56112\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Marit<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e4e57a8 elementor-widget__width-initial elementor-absolute elementor-widget elementor-widget-heading\" data-id=\"e4e57a8\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Salas<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"e-con-top elementor-element elementor-element-78eb8dd e-con-full e-flex e-con e-parent\" data-id=\"78eb8dd\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Marit Salas<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-canvas.php","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-520","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/sandbox.dudesign.pe\/Desarrollo\/wp-json\/wp\/v2\/pages\/520","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sandbox.dudesign.pe\/Desarrollo\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sandbox.dudesign.pe\/Desarrollo\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sandbox.dudesign.pe\/Desarrollo\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/sandbox.dudesign.pe\/Desarrollo\/wp-json\/wp\/v2\/comments?post=520"}],"version-history":[{"count":5,"href":"https:\/\/sandbox.dudesign.pe\/Desarrollo\/wp-json\/wp\/v2\/pages\/520\/revisions"}],"predecessor-version":[{"id":536,"href":"https:\/\/sandbox.dudesign.pe\/Desarrollo\/wp-json\/wp\/v2\/pages\/520\/revisions\/536"}],"wp:attachment":[{"href":"https:\/\/sandbox.dudesign.pe\/Desarrollo\/wp-json\/wp\/v2\/media?parent=520"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}