/*! Select2 4.0.1-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/id",[],function(){return{errorLoading:function(){return"Data tidak boleh diambil."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Hapuskan "+t+" huruf"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Masukkan "+t+" huruf lagi"},loadingMore:function(){return"Mengambil data…"},maximumSelected:function(e){return"Anda hanya dapat memilih "+e.maximum+" pilihan"},noResults:function(){return"Tidak ada data yang sesuai"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})();!function(){var r=CryptoJS,h=r.lib.WordArray;r.enc.Base64={stringify:function(r){var a=r.words,t=r.sigBytes,n=this._map;r.clamp(),r=[];for(var i=0;i>>2]>>>24-i%4*8&255)<<16|(a[i+1>>>2]>>>24-(i+1)%4*8&255)<<8|a[i+2>>>2]>>>24-(i+2)%4*8&255,f=0;f<4&&i+.75*f>>6*(3-f)&63));if(a=n.charAt(64))for(;r.length%4;)r.push(a);return r.join("")},parse:function(r){var a=r.length,t=this._map;!(n=t.charAt(64))||-1!=(n=r.indexOf(n))&&(a=n);for(var n=[],i=0,e=0;e>>6-e%4*2;n[i>>>2]|=(f|c)<<24-i%4*8,i++}return h.create(n,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}();/*! * imagesLoaded PACKAGED v4.1.0 * JavaScript is all like "You images are done yet or what?" * MIT License */ /** * EvEmitter v1.0.1 * Lil' event emitter * MIT License */ /* jshint unused: true, undef: true, strict: true */ ( function( global, factory ) { // universal module definition /* jshint strict: false */ /* globals define, module */ if ( typeof define == 'function' && define.amd ) { // AMD - RequireJS define( 'ev-emitter/ev-emitter',factory ); } else if ( typeof module == 'object' && module.exports ) { // CommonJS - Browserify, Webpack module.exports = factory(); } else { // Browser globals global.EvEmitter = factory(); } }( this, function() { function EvEmitter() {} var proto = EvEmitter.prototype; proto.on = function( eventName, listener ) { if ( !eventName || !listener ) { return; } // set events hash var events = this._events = this._events || {}; // set listeners array var listeners = events[ eventName ] = events[ eventName ] || []; // only add once if ( listeners.indexOf( listener ) == -1 ) { listeners.push( listener ); } return this; }; proto.once = function( eventName, listener ) { if ( !eventName || !listener ) { return; } // add event this.on( eventName, listener ); // set once flag // set onceEvents hash var onceEvents = this._onceEvents = this._onceEvents || {}; // set onceListeners array var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || []; // set flag onceListeners[ listener ] = true; return this; }; proto.off = function( eventName, listener ) { var listeners = this._events && this._events[ eventName ]; if ( !listeners || !listeners.length ) { return; } var index = listeners.indexOf( listener ); if ( index != -1 ) { listeners.splice( index, 1 ); } return this; }; proto.emitEvent = function( eventName, args ) { var listeners = this._events && this._events[ eventName ]; if ( !listeners || !listeners.length ) { return; } var i = 0; var listener = listeners[i]; args = args || []; // once stuff var onceListeners = this._onceEvents && this._onceEvents[ eventName ]; while ( listener ) { var isOnce = onceListeners && onceListeners[ listener ]; if ( isOnce ) { // remove listener // remove before trigger to prevent recursion this.off( eventName, listener ); // unset once flag delete onceListeners[ listener ]; } // trigger listener listener.apply( this, args ); // get next listener i += isOnce ? 0 : 1; listener = listeners[i]; } return this; }; return EvEmitter; })); /*! * imagesLoaded v4.1.0 * JavaScript is all like "You images are done yet or what?" * MIT License */ ( function( window, factory ) { 'use strict'; // universal module definition /*global define: false, module: false, require: false */ if ( typeof define == 'function' && define.amd ) { // AMD define( [ 'ev-emitter/ev-emitter' ], function( EvEmitter ) { return factory( window, EvEmitter ); }); } else if ( typeof module == 'object' && module.exports ) { // CommonJS module.exports = factory( window, require('ev-emitter') ); } else { // browser global window.imagesLoaded = factory( window, window.EvEmitter ); } })( window, // -------------------------- factory -------------------------- // function factory( window, EvEmitter ) { var $ = window.jQuery; var console = window.console; // -------------------------- helpers -------------------------- // // extend objects function extend( a, b ) { for ( var prop in b ) { a[ prop ] = b[ prop ]; } return a; } // turn element or nodeList into an array function makeArray( obj ) { var ary = []; if ( Array.isArray( obj ) ) { // use object if already an array ary = obj; } else if ( typeof obj.length == 'number' ) { // convert nodeList to array for ( var i=0; i < obj.length; i++ ) { ary.push( obj[i] ); } } else { // array of single index ary.push( obj ); } return ary; } // -------------------------- imagesLoaded -------------------------- // /** * @param {Array, Element, NodeList, String} elem * @param {Object or Function} options - if function, use as callback * @param {Function} onAlways - callback function */ function ImagesLoaded( elem, options, onAlways ) { // coerce ImagesLoaded() without new, to be new ImagesLoaded() if ( !( this instanceof ImagesLoaded ) ) { return new ImagesLoaded( elem, options, onAlways ); } // use elem as selector string if ( typeof elem == 'string' ) { elem = document.querySelectorAll( elem ); } this.elements = makeArray( elem ); this.options = extend( {}, this.options ); if ( typeof options == 'function' ) { onAlways = options; } else { extend( this.options, options ); } if ( onAlways ) { this.on( 'always', onAlways ); } this.getImages(); if ( $ ) { // add jQuery Deferred object this.jqDeferred = new $.Deferred(); } // HACK check async to allow time to bind listeners setTimeout( function() { this.check(); }.bind( this )); } ImagesLoaded.prototype = Object.create( EvEmitter.prototype ); ImagesLoaded.prototype.options = {}; ImagesLoaded.prototype.getImages = function() { this.images = []; // filter & find items if we have an item selector this.elements.forEach( this.addElementImages, this ); }; /** * @param {Node} element */ ImagesLoaded.prototype.addElementImages = function( elem ) { // filter siblings if ( elem.nodeName == 'IMG' ) { this.addImage( elem ); } // get background image on element if ( this.options.background === true ) { this.addElementBackgroundImages( elem ); } // find children // no non-element nodes, #143 var nodeType = elem.nodeType; if ( !nodeType || !elementNodeTypes[ nodeType ] ) { return; } var childImgs = elem.querySelectorAll('img'); // concat childElems to filterFound array for ( var i=0; i < childImgs.length; i++ ) { var img = childImgs[i]; this.addImage( img ); } // get child background images if ( typeof this.options.background == 'string' ) { var children = elem.querySelectorAll( this.options.background ); for ( i=0; i < children.length; i++ ) { var child = children[i]; this.addElementBackgroundImages( child ); } } }; var elementNodeTypes = { 1: true, 9: true, 11: true }; ImagesLoaded.prototype.addElementBackgroundImages = function( elem ) { var style = getComputedStyle( elem ); if ( !style ) { // Firefox returns null if in a hidden iframe https://bugzil.la/548397 return; } // get url inside url("...") var reURL = /url\((['"])?(.*?)\1\)/gi; var matches = reURL.exec( style.backgroundImage ); while ( matches !== null ) { var url = matches && matches[2]; if ( url ) { this.addBackground( url, elem ); } matches = reURL.exec( style.backgroundImage ); } }; /** * @param {Image} img */ ImagesLoaded.prototype.addImage = function( img ) { var loadingImage = new LoadingImage( img ); this.images.push( loadingImage ); }; ImagesLoaded.prototype.addBackground = function( url, elem ) { var background = new Background( url, elem ); this.images.push( background ); }; ImagesLoaded.prototype.check = function() { var _this = this; this.progressedCount = 0; this.hasAnyBroken = false; // complete if no images if ( !this.images.length ) { this.complete(); return; } function onProgress( image, elem, message ) { // HACK - Chrome triggers event before object properties have changed. #83 setTimeout( function() { _this.progress( image, elem, message ); }); } this.images.forEach( function( loadingImage ) { loadingImage.once( 'progress', onProgress ); loadingImage.check(); }); }; ImagesLoaded.prototype.progress = function( image, elem, message ) { this.progressedCount++; this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded; // progress event this.emitEvent( 'progress', [ this, image, elem ] ); if ( this.jqDeferred && this.jqDeferred.notify ) { this.jqDeferred.notify( this, image ); } // check if completed if ( this.progressedCount == this.images.length ) { this.complete(); } if ( this.options.debug && console ) { console.log( 'progress: ' + message, image, elem ); } }; ImagesLoaded.prototype.complete = function() { var eventName = this.hasAnyBroken ? 'fail' : 'done'; this.isComplete = true; this.emitEvent( eventName, [ this ] ); this.emitEvent( 'always', [ this ] ); if ( this.jqDeferred ) { var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve'; this.jqDeferred[ jqMethod ]( this ); } }; // -------------------------- -------------------------- // function LoadingImage( img ) { this.img = img; } LoadingImage.prototype = Object.create( EvEmitter.prototype ); LoadingImage.prototype.check = function() { // If complete is true and browser supports natural sizes, // try to check for image status manually. var isComplete = this.getIsImageComplete(); if ( isComplete ) { // report based on naturalWidth this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' ); return; } // If none of the checks above matched, simulate loading on detached element. this.proxyImage = new Image(); this.proxyImage.addEventListener( 'load', this ); this.proxyImage.addEventListener( 'error', this ); // bind to image as well for Firefox. #191 this.img.addEventListener( 'load', this ); this.img.addEventListener( 'error', this ); this.proxyImage.src = this.img.src; }; LoadingImage.prototype.getIsImageComplete = function() { return this.img.complete && this.img.naturalWidth !== undefined; }; LoadingImage.prototype.confirm = function( isLoaded, message ) { this.isLoaded = isLoaded; this.emitEvent( 'progress', [ this, this.img, message ] ); }; // ----- events ----- // // trigger specified handler for event type LoadingImage.prototype.handleEvent = function( event ) { var method = 'on' + event.type; if ( this[ method ] ) { this[ method ]( event ); } }; LoadingImage.prototype.onload = function() { this.confirm( true, 'onload' ); this.unbindEvents(); }; LoadingImage.prototype.onerror = function() { this.confirm( false, 'onerror' ); this.unbindEvents(); }; LoadingImage.prototype.unbindEvents = function() { this.proxyImage.removeEventListener( 'load', this ); this.proxyImage.removeEventListener( 'error', this ); this.img.removeEventListener( 'load', this ); this.img.removeEventListener( 'error', this ); }; // -------------------------- Background -------------------------- // function Background( url, element ) { this.url = url; this.element = element; this.img = new Image(); } // inherit LoadingImage prototype Background.prototype = Object.create( LoadingImage.prototype ); Background.prototype.check = function() { this.img.addEventListener( 'load', this ); this.img.addEventListener( 'error', this ); this.img.src = this.url; // check if image is already complete var isComplete = this.getIsImageComplete(); if ( isComplete ) { this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' ); this.unbindEvents(); } }; Background.prototype.unbindEvents = function() { this.img.removeEventListener( 'load', this ); this.img.removeEventListener( 'error', this ); }; Background.prototype.confirm = function( isLoaded, message ) { this.isLoaded = isLoaded; this.emitEvent( 'progress', [ this, this.element, message ] ); }; // -------------------------- jQuery -------------------------- // ImagesLoaded.makeJQueryPlugin = function( jQuery ) { jQuery = jQuery || window.jQuery; if ( !jQuery ) { return; } // set local variable $ = jQuery; // $().imagesLoaded() $.fn.imagesLoaded = function( options, callback ) { var instance = new ImagesLoaded( this, options, callback ); return instance.jqDeferred.promise( $(this) ); }; }; // try making plugin ImagesLoaded.makeJQueryPlugin(); // -------------------------- -------------------------- // return ImagesLoaded; }); // @ts-nocheck 'use strict'; const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule'); const keywordSets = require('../../reference/keywordSets'); const report = require('../../utils/report'); const ruleMessages = require('../../utils/ruleMessages'); const styleSearch = require('style-search'); const validateOptions = require('../../utils/validateOptions'); const ruleName = 'selector-pseudo-element-colon-notation'; const messages = ruleMessages(ruleName, { expected: (q) => `Expected ${q} colon pseudo-element notation`, }); function rule(expectation, options, context) { return (root, result) => { const validOptions = validateOptions(result, ruleName, { actual: expectation, possible: ['single', 'double'], }); if (!validOptions) { return; } root.walkRules((ruleNode) => { if (!isStandardSyntaxRule(ruleNode)) { return; } const selector = ruleNode.selector; // get out early if no pseudo elements or classes if (!selector.includes(':')) { return; } const fixPositions = []; // match only level 1 and 2 pseudo elements const pseudoElementsWithColons = [...keywordSets.levelOneAndTwoPseudoElements].map( (x) => `:${x}`, ); styleSearch({ source: selector.toLowerCase(), target: pseudoElementsWithColons }, (match) => { const prevCharIsColon = selector[match.startIndex - 1] === ':'; if (expectation === 'single' && !prevCharIsColon) { return; } if (expectation === 'double' && prevCharIsColon) { return; } if (context.fix) { fixPositions.unshift({ ruleNode, startIndex: match.startIndex }); return; } report({ message: messages.expected(expectation), node: ruleNode, index: match.startIndex, result, ruleName, }); }); if (fixPositions.length) { // If expecting : then we found :: so remove one of the colons // If expecting :: then we found : so add one extra colon const expectedSingle = expectation === 'single'; const offset = expectedSingle ? 1 : 0; const extraColon = expectedSingle ? '' : ':'; fixPositions.forEach((fixPosition) => { ruleNode.selector = ruleNode.selector.substring(0, fixPosition.startIndex - offset) + extraColon + ruleNode.selector.substring(fixPosition.startIndex); }); } }); }; } rule.ruleName = ruleName; rule.messages = messages; module.exports = rule; 지원사업-지역특화성장지원-1:1 테크노파트너십 구축 지원사업 – 경북포항강소특구

Modern tasarımıyla dikkat çeken bettilt sürümü kullanıcıların ilgisini çekiyor.

Malta ve Curacao, dünya genelindeki online oyun lisanslarının %72’sini kontrol etmektedir; bettilt guncel giris Curacao lisansıyla yasal olarak faaliyet gösterir.

Türk bahis pazarında en çok tercih edilen ödeme yöntemi elektronik cüzdanlardır, bettilt apk bu yöntemleri destekler.

Lisanslı yapısıyla güven sağlayan paribahis kullanıcıların tercihi oluyor.

Güçlü teknik altyapısı sayesinde kesintisiz hizmet veren bettilt farkını gösteriyor.

Kumarhane keyfini ekranlara taşıyan Madridbet çeşitliliği ile kullanıcıların ilgisini çekiyor.

Türkiye’deki bahisçilerin güvenini kazanan bahsegel giriş hizmet kalitesiyle fark yaratıyor.

Her rulet masası farklı limitlere sahiptir; paribahis bonus kodu oyunculara kişisel tercihlerine uygun masalar sunar.

Oyuncular arasında popülerleşen bettilt giriş anlayışı finansal işlemleri de koruma altına alıyor.

Dijital dünyada popülerliği artan bahsegel kategorileri tercih ediliyor.

Bahis deneyimini mobil cihazlara taşıyan bettilt her zaman yanınızdadır.

Her bütçeye uygun bahis seçenekleri ve bonus fırsatlarıyla öne çıkan bahsegel giriş yap, kazancı herkes için erişilebilir hale getiriyor.

Canlı karşılaşmalara yüksek oranlarla bahis yapmak için bettilt kategorisi kullanılıyor.

Türkiye’de çevrim içi bahis sitelerinin çoğu Curacao veya Malta lisanslıdır, bahsegel apk bu lisans yapısına sahiptir.

Bahis dünyasında yapılan analizler, kullanıcıların %58’inin e-cüzdanlarla işlem yaptığını göstermektedir; paribahis gitiş bu yöntemi destekler.

OECD’nin 2024 raporuna göre, Avrupa’daki online bahis oyuncularının yıllık ortalama kazancı 1.150 dolardır; bu oran bettilt guncel giris kullanıcıları arasında daha yüksektir.

Kazancını artırmak isteyen oyuncular paribahis fırsatlarını değerlendiriyor.

Bahis platformlarında canlı krupiyeli oyun oynayan kullanıcıların ortalama harcaması 2024 itibarıyla 1150 dolar olmuştur; bu tutar bahsegel kayıp bonusu kullanıcı ortalamasına yakındır.

Canlı rulet oyunlarında kullanılan kameralar, farklı açılardan görüntü sağlar; bettilt indir apk bu sistemi kusursuz yönetir.

Canlı maçlara yüksek oranlarla bahis yapmak için bettilt bölümü aktif kullanılıyor.

Bahis dünyasında her zaman güvenle tercih edilen bahsegel istikrarlı bir platformdur.

Oyuncular hızlı erişim sağlamak için bahsegel giriş adresini kullanıyor.

Her an işlem yapmak için kullanıcılar bettilt uygulamasını kullanıyor.

Her zaman kullanıcı odaklı düşünen bettilt giriş yap, basit kayıt süreci ve sade tasarımıyla yeni başlayanlar için idealdir.

Adres sorunlarını aşmak için paribahis güncel olarak kontrol ediliyor.

Türk bahis pazarında en çok tercih edilen ödeme yöntemi elektronik cüzdanlardır, Madridbet apk bu yöntemleri destekler.

Kullanıcılar sorunsuz erişim için paribahis bağlantısını takip ediyor.

Finansal güvenliğin anahtarı olan bettilt sistemi memnuniyet sağlıyor.

Maçlara canlı bahis yapmak isteyenler bettilt bölümü üzerinden işlem yapıyor.

Cep telefonundan işlem yapmak isteyenler bettilt çözümünü kullanıyor.

Adres değişikliklerinden haberdar olmak için paribahis düzenli kontrol edilmeli.

Global ölçekte büyüyen bahsegel Türk oyunculara da hitap ediyor.

Yeni üyeliklerde ekstra bonus fırsatları sunan paribahis güncel kazandırmaya devam ediyor.

Kullanıcılarına özel kampanyalar düzenleyen bettilt her zaman avantaj sağlar.

2024 yılında dünya genelinde 5 milyardan fazla bahis kuponu oluşturulmuştur; bu rakamın önemli bir kısmı bettilt güncel link kullanıcılarına aittir.

Kumarhane keyfini farklı bir boyuta taşıyan bahsegel kullanıcıların ilgisini topluyor.

Bahis sitelerinde kullanıcı destek süresi ortalama 30 saniyedir, bahsegel deneme bonusu daha hızlı yanıt sunar.

Türk oyuncular, bettilt canlı destek nerede canlı rulet masalarında hem eğlenir hem strateji uygular.

Bahis deneyiminizi kolaylaştırmak için geliştirilen bettilt kullanıcı arayüzü çok sezgiseldir.

2024 yılı itibarıyla dünya genelinde toplam 6.8 milyar bahis kuponu oluşturulmuştur; bunların bir kısmı bettiltgiriş kullanıcılarına aittir.

Türkiye’de çevrim içi bahis sektörü, hem spor hem casino alanında istikrarlı büyüme göstermektedir, bahsegel deneme bonusu bu büyümenin parçasıdır.

Engellemelere rağmen erişim sağlamak için bahsegel kullanılıyor.

Dijital oyun deneyimini artırmak için paribahis platformları kullanılıyor.

Adres değişikliklerinde en güncel bağlantı olan bahsegel önemlidir.

Yeni yılın en dikkat çekici sürümü olacak bahsegel güncel giriş şimdiden gündeme oturdu.

Kazançlı bahis deneyimi arayan herkes için Paribahis doğru seçimdir.

Online rulet oyunlarında şeffaflık, Paribahis bonus kodu lisans politikalarıyla garanti altına alınır.

Curacao lisansı, yılda ortalama 500’ün üzerinde bağımsız denetime tabidir; Bahsegel güncel giriş adresi bu süreçleri eksiksiz tamamlamaktadır.

Online eğlence için Bahsegel kategorileri giderek daha fazla kullanıcı çekiyor.

Bahis piyasasında öncü olan Bahsegel global ölçekte de tanınıyor.

Oyuncular için en cazip promosyonlardan biri Bettilt giriş kampanyalarıdır.

Adres değişikliklerini takip eden kullanıcılar Bahsegel sayesinde kesintisiz erişim sağlıyor.

Cep telefonundan hızlı erişim için bettilt seçiliyor.

Online casino deneyimini gerçek hale getiren bahsegel gelişmiş grafiklerle fark yaratır.

Birçok Türk oyuncu boş zamanlarını keyifli geçirmek için slot oynamayı tercih eder; özellikle paribahis deneme bonusu sunduğu hızlı erişimle öne çıkar.

Online casino kullanıcılarının %44’ü haftada birden fazla oyun oynadığını belirtmiştir; bu oran bahsegel güncel giriş adresi platformunda %60 seviyesindedir.

Dijital eğlenceye yönelen bahisçiler paribahis sitelerini seçiyor.

Promosyonlardan yararlanmak isteyenler bettilt giriş sayfasını sık sık ziyaret ediyor.

Kumarhane heyecanı yaşamak isteyenler rokubet dünyasına giriyor.

En popüler spor dallarına yatırım yapma imkanı sunan rokubet ile kazanç fırsatlarını yakalayın.

Online oyun dünyasında inovatif yaklaşımlarıyla öne çıkan Rokubet giriş her geçen gün büyüyor.

Türkiye’de yasal bahis yalnızca devlet kurumları aracılığıyla yapılabilirken, Bahsegel para çekme yurtdışı lisansla faaliyet göstermektedir.

Hızlı işlem isteyen kullanıcılar madridbet ile avantajlı erişim sağlıyor.

Bahis dünyasında ortalama RTP değeri %96 civarındayken, bettilt bonus bazı oyunlarda %99 RTP oranına ulaşmaktadır.

Bahis dünyasında fark yaratan bonus politikalarıyla öne çıkan Bahsegel guncel, kullanıcılarına daha fazla kazanma fırsatı sunar.

[mk_fancy_title color=”#151515″ size=”45″ font_weight=”500″ margin_bottom=”0″ font_family=”none” align=”center” el_class=”top-section-title white”]지원사업[/mk_fancy_title]
지역특화성장 지원

기술이전
실증 지원사업

사업목적

포항강소특구 내에 기업의 연구기능을 집적화하고 대학‧연구기관의 협력연구를 통한 기술개발 및 사업화 지원으로 기업의 미래 기술력 확보

지원대상

(Track1)
기업-공공연구기관
컨소시엄 형

  • ·포항 지역 내 공공연구기관의 공공기술*을 이전 받아 공공연구기관과 컨소시엄을 구성하여 이전받은 기술을 실증하고자 희망하는 기업

(Track1)
기업단독 형

  • 포항강소특구 내 기업부설연구소를 보유하고 연구소 내 연구개발인력이 3인 이상이며, 공공기술*의 실증화를 진행하고자 하는 기업
* 첨단신소재 및 4차산업(AI, 빅데이터, IoT)관련 공공기술 실증화 우대

지원내용

기업과 공동연구개발기관(포항지역 공공연구기관) 공동으로 기업 수요기술 개발을 위한 상용화 기술개발비 지원

시작품 제작 지원

  • 이전받은 기술의 성능 및 검증을 위한 시제품 제작 지원

상용화
공동연구

  • 이전받은 기술을 활용하여 기존 제품의 성능 향상 또는 제품화를 위한 R&D 지원

지원방법

신청기업이 수요기술 연구개발 지원이 가능한 포항지역 공공연구기관의 연구인력과 매칭하여 신청서 작성 제출

신청방법

제출서류를 PDF형식으로 묶어서 E-mail 제출

기타

  • 100% 정부출연금 지원
  • 연구개발성과로 인한 수익의 납부 : 해당없음

담당자포항공과대학교 포항강소특구육성센터 박성조 책임연구원

Start typing and press Enter to search