SavePanel for macOS

Since allowedFileTypes is removed on macOS 12.0, you need workaround to replace the feature.

🟩Screenshot main:
```ruby:qiita.rb
    func ExecIBScreenshot() {                                                               //<*💙Screenshot*>
        let wShot:NSImage?  = macOS.CallGetScreenshot(appName, pPercent:1, pInverse:false)  //🏞Get screenshot.
        if wShot == nil         { return }                                                  //
        else { }                                                                            //
        let wcgi:CGImage    = wShot!.cgImage(forProposedRect: nil, context: nil, hints: nil)!//Convert to CGImage.
        let wRep:NSBitmapImageRep   = NSBitmapImageRep(cgImage: wcgi)                       //
        let wData:NSData    = wRep.representation(using: .png, properties: [:])! as NSData  //
        var wName:String    = ""                                                            //
        if zScreenFolder == "" {                                                            //
            zScreenName     = "screenshotMMA"                                               //filename
            wName           = zScreenName                                                   //screenshotMMA for the alert.
        } else {                                                                            //
            zScreenNum          += 1                                                        //
            let wNum:String = Call.PickupLastWords(String(1000 + zScreenNum), pString: "999")//001, 002, ... 999
            wName           = zScreenName + wNum                                            //screenshotMMA999
        }                                                                                   //
        let wFolder:URL     = URL(fileURLWithPath:NSHomeDirectory()+"/Desktop")             //Save on the desktop.
        let wX              = macOS.SavePanelScreen(["png"], pMsg:cm.rcMSG[LT.msg17],       //20220318
                                pDirURL:wFolder, pCreateDir:true, pFName:wName+".png")      //Save panel
        let wA              = Call.GetFileInfo(wX.rURL, pExtentionArray: [], pSyspathArray: [])//Get file info.
        zScreenType         = "." + wA.rExtention                                           //
        let wNew:String     = Call.RemoveLastWords(wA.rName, pString: zScreenType)          //Remove the extention.
        if wNew == wName {                                                                  //
        } else {                                                                            //
            zScreenName     = wNew                                                          //Replace it to user’s one.
        }                                                                                   //
        zScreenFolder       = Call.RemoveLastWords((wX.rURL).path, pString: zScreenName + zScreenType)//folder path
        Call.WriteDatafile(wX.rURL, pData: wData)                                           //Write the screenshot.
    }//🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️🅿️// 
```
🟩SavePanel for Screenshot:
```ruby:qiita.rb
        func SavePanelScreen(_ pFType:[String], pMsg:String, pDirURL:URL?,  //🍎20220318 (M19)<*NSSavePanel*>
        pCreateDir:Bool, pFName:String)-> (rURL:URL, rState:String) {   //🍎①nil: Cancelled ②OK: rURL is OK.
        let wBool:Bool = false                                          //🍎
        while wBool == false {                                          //🍎
            let wSave                   = NSSavePanel()                 //🍎
            wSave.nameFieldStringValue  = pFName                        //🍎
//          if pFType.count > 0 {   wSave.allowedFileTypes   = pFType } //🍎Set Extention. ❌Desperated on macOS 12.0
            wSave.allowsOtherFileTypes  = false                         //🍎Do not allow other extentions.
            wSave.message               = pMsg                          //🍎Messaga for the panel.
            wSave.directoryURL          = pDirURL                       //🍎Folder name for the panel.
            wSave.canCreateDirectories  = pCreateDir                    //🍎A user can create a new folder.
            wSave.treatsFilePackagesAsDirectories  = false              //🍎
            let wModal                  = wSave.runModal()              //🍎
            if wModal.rawValue == NSApplication.ModalResponse.cancel.rawValue {//🍎
                return (wSave.url!, rrNG)                               //🍎♻️return♻️ Canceled.
//          } else  { return (wSave.url!, "")  }                        //🍎♻️return♻️ Normal end ❌Desperated on macOS 12.0
            } else  {                                                   //🍎20220318
                let wPath:String = wSave.url!.path + ""                 //🍎20220318<—-Use the file name + extention as is.
                return (URL(fileURLWithPath: wPath), "")                //🍎20220318 ♻️return♻️ Normal 
            }                                                           //🍎
        }                                                               //🍎
    }//-----------------------------------------------------------------//🍎
```
🟩Usual SavePanel:
```ruby:qiita.rb
    func OpenPanel(_ pFType:[String], pMulti:Bool, pDir:Bool,           //🍎(M20)<*NSOpenPanel*>
        pFile:Bool, pCreateDir:Bool)->  [URL] {                         //🍎①nil: Cancelled ②OK: rURL is OK.
        let wBool:Bool = false                                          //🍎
        while wBool == false {                                          //🍎
            let NSOpen = NSOpenPanel()                                  //🍎allowedContentTypes
//          if pFType.count > 0 { NSOpen.allowedFileTypes   = pFType }  //🍎20220318 Set Extention. ❌Desperated on macOS 12.0
            NSOpen.allowsMultipleSelection  = pMulti                    //🍎Multiple selection
            NSOpen.canChooseDirectories     = pDir                      //🍎Folder
            NSOpen.canChooseFiles           = pFile                     //🍎File
            NSOpen.canCreateDirectories     = pCreateDir                //🍎Create a new folder
            NSOpen.treatsFilePackagesAsDirectories = false              //🍎
            let wModal = NSOpen.runModal()                              //🍎
            if wModal.rawValue == NSApplication.ModalResponse.cancel.rawValue {//🍎
                return []                                               //🍎♻️return♻️ Canceled: []
            } else if NSOpen.urls.count > 0 {                           //🍎
                var wURL:[URL]              = []                        //🍎20220318
                var wFType:[String]         = []                        //🍎20220318
                for ftype in pFType {                                   //🍎20220318 Convert every extention to “.” + extention.
                    wFType.append("."+ftype)                            //🍎20220318
                }                                                       //🍎20220318
                for url in NSOpen.urls {                                //🍎20220318 The filepath has one of extentions that are allowed?
                    let wA = Call.GetFileType(url, pTypeArray: pFType)  //🍎20220318 
                    if wA != "" {                                       //🍎20220318 <—-Yes
                        wURL.append(url)                                //🍎20220318 Save the URL
                    } else { }                                          //🍎20220318 <—-No
                }                                                       //🍎20220318
                return wURL                                             //🍎♻️return♻️ Normal end
            }                                                           //🍎
        }                                                               //🍎
    }//-----------------------------------------------------------------//🍎
```