ruạṛ
"use strict";(globalThis.itsecWebpackJsonP=globalThis.itsecWebpackJsonP||[]).push([[4319],{4319:(e,t,r)=>{r.d(t,{i$:()=>_e,DW:()=>B,qJ:()=>D,n_:()=>fe,F5:()=>p,VS:()=>v,g8:()=>A,zf:()=>te,gu:()=>ie,VK:()=>b,G9:()=>X,j9:()=>Re,bx:()=>Ye,mk:()=>Ge,e4:()=>ye,oA:()=>Ce,l6:()=>P,kW:()=>Qe,pe:()=>Z,PB:()=>G,Nr:()=>q,Fe:()=>Ie,UZ:()=>Oe});var n=r(51609),a=r(64827),o=r(66087),i=r(8601),l=r(85631),s=r.n(l),c=r(77172),u=r(39959),d=r(89897);const{useGlobalState:m}=(0,a.VB)({cache:{}});function p({id:e,value:t,disabled:r,readonly:a,onChange:l,label:h,description:g,isMultiple:f=!1,path:E,query:y={},labelAttr:v,idAttr:x="id",searchArg:w="search"}){const[A,_]=m("cache"),I=(0,d.useInstanceId)(p,"itsec-entity-select-control");e=e||I;const[k,N]=(0,i.useState)(""),L=function(e,t,r,n,a,l,u){return(0,i.useCallback)((i=>s()({path:(0,c.addQueryArgs)(e,{...t,[a]:i})}).then((e=>e.map((e=>({value:e[n],label:e[r]}))))).then((t=>(u({...l,[e]:{...l[e]||{},...(0,o.mapValues)((0,o.keyBy)(t,"value"),"label")}}),t)))),[e,t,r,n,a,l,u])}(E,y,v,x,w,A,_);let C;return f?C=(t||[]).filter((e=>void 0!==e)).map((e=>({value:e,label:A[E]?.[e]||e}))):t&&(C={value:t,label:A[E]?.[t]||t}),(0,n.createElement)(u.BaseControl,{className:"itsec-entity-select-control",label:h,help:g&&(0,n.createElement)(b,{noWrap:!0,content:g}),id:e,__nextHasNoMarginBottom:!0},(0,n.createElement)(B,{"aria-label":h,"aria-describedby":g?e+"__help":void 0,classNamePrefix:"itsec-entity-select-control-as",inputId:e,isDisabled:r||a,isMulti:f,isClearable:!0,cacheOptions:!0,defaultOptions:!0,loadOptions:L,value:C,onChange:e=>l(f?(e||[]).map((e=>e.value)):e?.value),inputValue:k,onInputChange:N}))}var h=r(26843),g=r(62932),f=r(58168),E=r(15013),y=r(54625);function b({transform:e,...t}){return(0,n.createElement)(E.VK,(0,f.A)({},t,{transform:(r,a)=>{if(e){const t=e(r,a);if(void 0!==t)return t}if("a"===r.tagName.toLowerCase()&&r.dataset.itsecPath&&!t.noHtml)return(0,n.createElement)(y.N_,{to:r.dataset.itsecPath},a)}}))}function v({errors:e,apiError:t,schemaError:r,title:a,className:o,hasBorder:i}){const l=[...e||[],...(0,g.Mr)(t),...(r||[]).map((e=>e.stack))];if(!l.length)return null;const s=l.map(((e,t)=>(0,n.createElement)(b,{key:t,content:e,noWrap:!0,tagName:"span"})));return(0,n.createElement)(h.Mf,{messages:s,heading:a,className:o,hasBorder:i,type:"danger"})}var x=r(81923);const w=(0,x.A)("div",{target:"eq12dkg0"})({name:"1ff36h2",styles:"flex-grow:1"});function A(){return(0,n.createElement)(w,{"aria-hidden":!0})}var _=r(2359),I=r(79487),k=r(32196),N=r(3075);const L=(0,n.lazy)((()=>Promise.all([r.e(7853),r.e(6005)]).then(r.bind(r,46005)))),C=(0,n.lazy)((()=>Promise.all([r.e(7853),r.e(1541)]).then(r.bind(r,11541)))),O=(0,n.lazy)((()=>Promise.all([r.e(7853),r.e(3689)]).then(r.bind(r,23689))));function S(){return(0,n.createElement)("span",null,(0,N.__)("Error when loading. Please refresh.","better-wp-security"))}const M=(0,k.AH)({name:"1nml846",styles:"input{min-height:0;}input:focus{box-shadow:none;}"});function F(){const e=(0,I.u)();return(0,i.useCallback)((t=>({...t,colors:{...t.colors,primary:e.colors.primary.base,primary75:e.colors.secondary.base,primary50:e.colors.tertiary.base,primary25:e.colors.surface.secondary}})),[e])}function T(){return(0,i.useMemo)((()=>({control:(e,t)=>({...e,minHeight:36,borderColor:t.isFocused?e.borderColor:"rgb(148, 148, 148)",borderRadius:2}),dropdownIndicator:e=>({...e,padding:6}),clearIndicator:e=>({...e,padding:6}),loadingIndicator:e=>({...e,padding:6}),valueContainer:e=>({...e,paddingTop:0,paddingBottom:0}),input:e=>({...e,paddingTop:0,paddingBottom:0})})),[])}function P({addErrorBoundary:e=!0,className:t,...r}){const a=F(),o=T(),i=(0,n.createElement)(n.Suspense,{fallback:(0,n.createElement)(u.Spinner,null)},(0,n.createElement)(L,(0,f.A)({},r,{className:(0,k.cx)(t,M),theme:a,styles:o})));return e?(0,n.createElement)(_.ErrorBoundary,{FallbackComponent:S},i):i}function B({addErrorBoundary:e=!0,className:t,...r}){const a=F(),o=T(),i=(0,n.createElement)(n.Suspense,{fallback:(0,n.createElement)(u.Spinner,null)},(0,n.createElement)(C,(0,f.A)({},r,{className:(0,k.cx)(t,M),theme:a,styles:o})));return e?(0,n.createElement)(_.ErrorBoundary,{FallbackComponent:S},i):i}function D({addErrorBoundary:e=!0,className:t,...r}){const a=F(),o=T(),i=(0,n.createElement)(n.Suspense,{fallback:(0,n.createElement)(u.Spinner,null)},(0,n.createElement)(O,(0,f.A)({},r,{className:(0,k.cx)(t,M),theme:a,styles:o})));return e?(0,n.createElement)(_.ErrorBoundary,{FallbackComponent:S},i):i}var z=r(591),V=r(33520);const j=(0,x.A)(h.ui,{target:"ewfm7an4"})({name:"1x94tvs",styles:"display:flex;align-items:center;flex-shrink:0;padding:.5rem 1.5rem;min-height:calc(30px + 1rem);& .components-button:focus{box-shadow:none;}"}),$=(0,x.A)(u.Toolbar,{target:"ewfm7an3"})({name:"gxzf6f",styles:"border:none;max-width:100%;margin-left:auto"}),H=(0,x.A)("div",{target:"ewfm7an2"})({name:"hlx1h5",styles:"display:flex;gap:0.5rem;margin:0 2rem 0 1rem;flex-grow:1"}),Y=(0,x.A)(V.Ot,{target:"ewfm7an1"})({name:"1jxlbx4",styles:"height:2rem;width:2rem"}),W=(0,x.A)("div",{target:"ewfm7an0"})({name:"1d3w5wq",styles:"width:100%"});function R({area:e,...t}){return(0,n.createElement)(u.Slot,(0,f.A)({name:`Toolbar${e}`},t))}function G({area:e="actions",...t}){return(0,n.createElement)(u.Fill,(0,f.A)({name:`Toolbar${e}`},t))}function q(){const e=(0,g.aZ)("dashboard"),t=(0,d.useViewportMatch)("medium","<");return(0,n.createElement)(n.Fragment,null,(0,n.createElement)(j,{role:"region","aria-label":(0,N.__)("Toolbar","better-wp-security")},t?(0,n.createElement)(Y,null):(0,n.createElement)(ie,null),(0,n.createElement)(R,{area:"main"},(e=>(0,n.createElement)(H,null,e))),(0,n.createElement)($,{label:(0,N.__)("Toolbar Actions","better-wp-security")},(0,n.createElement)(u.ToolbarButton,{icon:z.A,href:e,text:(0,N.__)("Dashboard","better-wp-security")}),(0,n.createElement)(R,{area:"actions"}))),(0,n.createElement)(R,{area:"banner"},(e=>(0,n.createElement)(W,null,e))))}const J=(0,x.A)("nav",{target:"edhe72i2"})("display:flex;border-bottom:1px solid ",(({theme:e})=>e.colors.border.normal),";"),U=(0,x.A)(y.k2,{target:"edhe72i1"})("display:flex;text-decoration:none;align-items:center;&.active{box-shadow:inset 0 -4px 0 0 ",(({theme:e})=>e.colors.border.info),";}&:focus{color:",(({theme:e})=>e.colors.text.dark),";box-shadow:inset 0 0 0 2px ",(({theme:e})=>e.colors.border.info),",inset 0 -4px 0 0 ",(({theme:e})=>e.colors.border.info),"!important;border-radius:3px!important;}"),K=(0,x.A)(h.EY,{target:"edhe72i0"})({name:"1i2l0vb",styles:"padding:.75rem 1.25rem"}),Q=(0,i.createContext)({size:h.$C.LARGE});function Z({className:e,size:t=h.$C.LARGE,children:r}){const a=(0,i.useMemo)((()=>({size:t})),[t]);return(0,n.createElement)(J,{className:e},(0,n.createElement)(Q.Provider,{value:a},r))}function X({title:e,...t}){const{size:r}=(0,i.useContext)(Q);return(0,n.createElement)(U,t,(0,n.createElement)(K,{size:r,weight:h.uL.HEAVY,text:e,align:"center"}))}const ee=(0,x.A)(V.Ot,{shouldForwardProp:e=>"isSmall"!==e,target:"ec6rts80"})("height:",(({isSmall:e})=>e?"56px":"120px"),";width:",(({isSmall:e})=>e?"56px":"120px"),";");function te({icon:e,isSmall:t=!1}){return(0,d.useMediaQuery)("(-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi)")?e:(0,n.createElement)(ee,{isSmall:t})}var re=r(31987),ne=r(46627);const ae=(0,x.A)(V.zr,{target:"es1l7u91"})("height:",(({size:e})=>e),"px;width:auto;max-width:100%;"),oe=(0,x.A)(V.Gi,{target:"es1l7u90"})("height:",(({size:e})=>e),"px;width:auto;max-width:100%;");function ie({size:e=25,className:t}){const{installType:r}=(0,re.useSelect)((e=>({installType:e(ne.coreStore).getInstallType()})),[]);return"free"===r?(0,n.createElement)(ae,{size:e,className:t}):(0,n.createElement)(oe,{size:e,className:t})}var le=r(98616),se=r.n(le),ce=r(76154),ue=r.n(ce),de=r(1417),me=r(89959);const pe=(0,x.A)("div",{target:"e1pwp6dm1"})({name:"aj6rbz",styles:"display:flex;gap:0.5rem"}),he=(0,x.A)(h.$n,{target:"e1pwp6dm0"})({name:"1o3nkn",styles:"margin-left:auto"}),ge=se()((()=>[{value:"24-hours",label:(0,N.__)("24 Hours","better-wp-security")},{value:"week",label:(0,N.__)("7 Days","better-wp-security")},{value:"30-days",label:(0,N.__)("30 Days","better-wp-security")},{value:"custom",label:(0,N.__)("Custom","better-wp-security")}]));function fe({value:e,onChange:t}){const[r,a]=(0,i.useState)(!1),[l,s]=(0,i.useState)(void 0),[c,d]=(0,i.useState)(void 0);let[m,p]=(0,i.useState)(void 0);const g=e,f=function(e){if(!e)return"No dates chosen";const t=new window.Date;let r,n;switch(e){case"24-hours":return(0,N.__)("24 Hours","better-wp-security");case"30-days":r=(0,me.dateI18n)("M j",t.setDate(t.getDate()-30)),n=(0,me.dateI18n)("M j, Y");break;case"week":r=(0,me.dateI18n)("M j",t.setDate(t.getDate()-7)),n=(0,me.dateI18n)("M j, Y");break;default:r=(0,me.dateI18n)("M j",e.start),n=(0,me.dateI18n)("M j, Y",e.end)}return(0,N.sprintf)((0,N.__)("%1$s - %2$s","better-wp-security"),r,n)}(g);return m=m||((0,o.isString)(g)?g:"custom"),(0,n.createElement)("div",null,(0,n.createElement)(h.$n,{onClick:()=>a(!r),title:f,"aria-expanded":r,"aria-label":(0,N.sprintf)((0,N.__)("%s (click to edit)","better-wp-security"),f),variant:"tertiary",text:f,icon:de.A,iconPosition:"right"}),r&&(0,n.createElement)(u.Modal,{title:(0,N.__)("Change Date Period","better-wp-security"),onRequestClose:()=>a(!1)},(0,n.createElement)(u.SelectControl,{options:ge(),value:m,onChange:e=>p(e)}),(0,n.createElement)(pe,null,"custom"===m&&(0,n.createElement)(n.Fragment,null,(0,n.createElement)(u.Dropdown,{renderToggle:({isOpen:e,onToggle:t})=>(0,n.createElement)(h.$n,{variant:"secondary",onClick:t,"aria-expanded":e,"aria-label":(0,N.sprintf)((0,N.__)("From: %s (click to edit","better-wp-security"),(0,me.dateI18n)("M j",l)),text:(0,N.sprintf)((0,N.__)("From %s","better-wp-security"),(0,me.dateI18n)("M j",l))}),renderContent:()=>(0,n.createElement)(u.DatePicker,{currentDate:l,onChange:s,isInvalidDate:e=>{if((0,me.isInTheFuture)(e))return!0;const t=new window.Date;return t.setDate(t.getDate()-60),e<t}})}),(0,n.createElement)(u.Dropdown,{renderToggle:({isOpen:e,onToggle:t})=>(0,n.createElement)(h.$n,{variant:"secondary",onClick:t,"aria-expanded":e,"aria-label":(0,N.sprintf)((0,N.__)("To: %s (click to edit","better-wp-security"),(0,me.dateI18n)("M j",c)),text:(0,N.sprintf)((0,N.__)("To: %s (click to edit","better-wp-security"),(0,me.dateI18n)("M j",c))}),renderContent:()=>(0,n.createElement)(u.DatePicker,{currentDate:c,onChange:d,isInvalidDate:e=>!!(0,me.isInTheFuture)(e)||(0,me.getDate)(l)>e})})),(0,n.createElement)(he,{variant:"primary",onClick:e=>{let r;if(e.preventDefault(),"custom"===m){const e=ue()(l).set({hour:0,minute:0,second:0}),t=ue()(c).set({hour:23,minute:59,second:59});r={start:(0,me.format)("Y-m-d\\TH:i:s",e),end:(0,me.format)("Y-m-d\\TH:i:s",t)}}else r=m;t(r),a(!1)},text:(0,N.__)("Apply","better-wp-security")}))))}const Ee=(0,x.A)("div",{target:"ex22ski0"})({name:"nup90u",styles:"display:flex;flex-direction:column;gap:0.5rem;margin-bottom:0.5rem';"});function ye({result:e,hasBorder:t,schemaError:r,errors:a}){return(0,n.createElement)(Ee,null,(0,n.createElement)(v,{apiError:e?.error,schemaError:r,errors:a,hasBorder:t}),e?.success&&(0,n.createElement)(h.Mf,{messages:e.success,type:"success",hasBorder:t}),e?.warning&&(0,n.createElement)(h.Mf,{messages:e.warning,type:"warning",hasBorder:t}),e?.info&&(0,n.createElement)(h.Mf,{messages:e.info,type:"info",hasBorder:t}))}const be=(0,x.A)(u.Icon,{target:"ebvjfo71"})({name:"1svyz14",styles:"background-color:#438C56;border-radius:2rem"}),ve=(0,x.A)(u.Icon,{target:"ebvjfo70"})({name:"x749hy",styles:"background-color:#E6505466;border-radius:2rem;height:0.813rem!important;width:0.813rem!important;padding:2px"});var xe=r(28351),we=r(14707),Ae=r(4818);function _e(){const{versionActive:e,versionSettings:t,installType:r}=(0,re.useSelect)((e=>({versionActive:e(ne.modulesStore).isActive("version-management"),versionSettings:e(ne.modulesStore).getSettings("version-management"),installType:e(ne.coreStore).getInstallType()})),[]),a=e&&t.update_if_vulnerable,o="free"===r,i=a?(0,N.__)("Real-Time Updates Active","better-wp-security"):(0,N.__)("Real-Time Updates Inactive","better-wp-security"),l=o?(0,N.__)("Upgrade","better-wp-security"):(0,N.__)("Enable “Auto Update If Fixes Vulnerability” in Version Management","better-wp-security"),s=a?(0,n.createElement)(be,{icon:xe.A}):(0,n.createElement)(ve,{icon:we.A,style:{fill:"#8A2424"}});return(0,n.createElement)(h.Ex,{text:i,icon:s,iconColor:"#FFFFFF",tooltip:l})}function Ie(){const{hasPatchstack:e,installType:t}=(0,re.useSelect)((e=>({hasPatchstack:e(ne.coreStore).hasPatchstack(),installType:e(ne.coreStore).getInstallType()})),[]),r="free"===t,a=e?(0,N.__)("Virtual Patching Active","better-wp-security"):(0,N.__)("Virtual Patching Inactive","better-wp-security"),o=r?(0,N.__)("Upgrade","better-wp-security"):null,i=e?Ae.A:(0,n.createElement)(ve,{icon:we.A,style:{fill:"#8A2424"}});return(0,n.createElement)(h.Ex,{text:a,icon:i,iconColor:"#6817C5",tooltip:o})}var ke=r(55933),Ne=r(16957);const Le=(0,i.createContext)({preloaded:{}});function Ce({preload:e,children:t}){const[r,a]=(0,i.useState)({preloaded:{}}),o=(0,i.useCallback)(((e,t)=>{a((r=>({...r,preloaded:{...r.preloaded,[e]:t}})))}),[a]);return(0,i.useEffect)((()=>{for(const t of e)r.preloaded.hasOwnProperty(t)||(o(t,void 0),fetch(Se(t)).then((e=>e.arrayBuffer())).then((e=>o(t,e))).catch((e=>{console.error(`[Solid Security] Could not load rive graphic '${t}': ${e}`),o(t,null)})))}),[e,r.preloaded,o]),(0,n.createElement)(Le.Provider,{value:r},t)}function Oe(e,t,r){const{preloaded:n}=(0,i.useContext)(Le);return n[e]?t.buffer=n[e]:t.src=Se(e),(0,Ne.useRive)(t,r)}function Se(e){return`${itsecWebpackPublicPath}../core/img/rive/${e}.riv`}function Me(e){return(0,n.createElement)(ke.SVG,(0,f.A)({},e,{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"}),(0,n.createElement)(ke.Path,{d:"M9 10h6.125M9 13.556h3.5",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"}))}function Fe(e){return(0,n.createElement)(ke.SVG,(0,f.A)({},e,{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"}),(0,n.createElement)(ke.Path,{d:"M8 8h8.75M8 11.555h6.125M8 15.111h3.5",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"}))}function Te(e){return(0,n.createElement)(ke.SVG,(0,f.A)({},e,{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"}),(0,n.createElement)(ke.Path,{d:"M5 6h13M5 10h10M5 14h7m-7 4h4",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"}))}function Pe({priority:e,...t}){switch(e){case"low":return(0,n.createElement)(Me,t);case"medium":return(0,n.createElement)(Fe,t);case"high":return(0,n.createElement)(Te,t)}}const Be=(0,x.A)("span",{target:"e1e0u6nr2"})({name:"1fttcpj",styles:"display:flex;flex-direction:column"}),De=(0,x.A)("div",{target:"e1e0u6nr1"})("background-color:",(({priority:e})=>"low"===e&&"#e7e7e7"),";background-color:",(({priority:e})=>"medium"===e&&"#ffcb2f"),";background-color:",(({priority:e})=>"high"===e&&"#d63638"),";color:",(({priority:e})=>"low"===e&&"#232323"),";color:",(({priority:e})=>"medium"===e&&"#232323"),";color:",(({priority:e})=>"high"===e&&"#ffffff"),";display:flex;align-items:center;padding-right:0.5rem;&>svg{width:24px;height:24px;}"),ze=(0,x.A)("div",{target:"e1e0u6nr0"})("background-color:",(({priority:e})=>"low"===e&&"#e7e7e7"),";background-color:",(({priority:e})=>"medium"===e&&"#fffbef"),";background-color:",(({priority:e})=>"high"===e&&"#fcf0f1"),";color:",(({priority:e})=>"low"===e&&"#232323"),";color:",(({priority:e})=>"medium"===e&&"#FFCB2F"),";color:",(({priority:e})=>"high"===e&&"#D63638"),";border:",(({priority:e})=>"medium"===e&&"1px solid #ffc518"),";border:",(({priority:e})=>"high"===e&&"1px solid #d63638"),";display:flex;align-items:center;justify-content:center;padding:1rem;width:100%;gap:1rem;&>svg{width:48px;height:48px;}");function Ve(e){switch(!0){case"low"===e:return(0,N.__)("Low","better-wp-security");case"medium"===e:return(0,N.__)("Medium","better-wp-security");default:return(0,N.__)("High","better-wp-security")}}function je(e){switch(!0){case"low"===e:return(0,N.__)("Low priority","better-wp-security");case"medium"===e:return(0,N.__)("Medium priority","better-wp-security");default:return(0,N.__)("High priority","better-wp-security")}}function $e({priority:e}){return(0,n.createElement)(De,{priority:e},(0,n.createElement)(Pe,{priority:e}),(0,n.createElement)(h.EY,{text:Ve(e),weight:"high"===e?h.uL.HEAVY:h.uL.NORMAL,variant:"high"===e?h.J3.WHITE:h.J3.NORMAL}))}function He({priority:e,description:t}){return(0,n.createElement)(ze,{priority:e},(0,n.createElement)(Pe,{priority:e}),(0,n.createElement)(Be,null,(0,n.createElement)(h.EY,{text:je(e),weight:h.uL.HEAVY,size:h.$C.LARGE}),t&&(0,n.createElement)(h.EY,{text:t})))}function Ye({priority:e,isExpanded:t,description:r}){return t?(0,n.createElement)(He,{priority:e,description:r}):(0,n.createElement)($e,{priority:e})}function We(e,t){if(!Number.isInteger(e))return function(e){switch(!0){case e<3:return"low";case e<7:return"medium";default:return"high"}}(t);switch(!0){case e<=1:return"low";case e<=2:return"medium";default:return"high"}}function Re({priority:e,score:t,isExpanded:r}){return(0,n.createElement)(Ye,{priority:We(e,t),isExpanded:r,description:r?(0,N.__)("Patchstack priority","better-wp-security"):""})}function Ge({as:e="div"}){return(0,n.createElement)(qe,{variant:h.ls.DARK,as:e},(0,n.createElement)(h.EY,{size:h.$C.SMALL,variant:h.J3.WHITE,weight:h.uL.HEAVY,text:(0,N.__)("Pro","better-wp-security")}))}const qe=(0,x.A)(h.ui,{target:"e1bsq51z0"})({name:"hekhoa",styles:"display:flex;align-items:center;padding:1px 8px;background-image:linear-gradient(\n\t\t116deg,\n\t\t#3c3454 0%,\n\t\t#44375a 36%,\n\t\t#66457b 100%\n\t);border-radius:5px"});var Je=r(88053);const Ue=(0,x.A)(u.Icon,{target:"e1tquifb1"})({name:"i7362z",styles:"background-color:#FFABAF;border-radius:2rem"}),Ke=(0,x.A)(u.Icon,{target:"e1tquifb0"})({name:"1svyz14",styles:"background-color:#438C56;border-radius:2rem"});function Qe({status:e,...t}){switch(e){case"attention":return(0,n.createElement)(Ue,(0,f.A)({icon:Je.A,style:{fill:"#D75A4B"}},t));case"resolved":return(0,n.createElement)(Ke,(0,f.A)({icon:xe.A,style:{fill:"#FFFFFF"}},t));case"mitigated":return(0,n.createElement)(V.VY,t);default:return null}}}}]);
cải xoăn